2014-07-14 4 views
0

J'ai une base de données mssql et des tonnes de tables ont des déclencheurs de mise à jour, supprimer. Toutes les tables insèrent les modifications dans une table de journal dans la même base de données. Nous avons également un travail SQL qui déplace les journaux dans une autre base de données qui contient uniquement une table de journal. Je veux le rendre plus rapide cette opération avec la base de données NoSQL comme ceci:Logging mssql tables transactions à redis

MSSQL-> 
    MainDB-> 
    update/delete-> 
     triggers 
      collect before,update rows into xml 
      and insert as JSON into Redis db 

Je ne sais pas ce que cela est plus rapide:

MSSQL-> 
    MainDB-> 
    update/delete-> 
     triggers 
      collect before,update rows into xml 
      and insert into log table in the same db 

Si NoSQL serait plus rapide que lui-même, comment devrait J'appelle Redis API de MSSQL Trigger?

Répondre

0

Cela dépend de ce que vous voulez utiliser vos journaux pour, mais quelques conseils:

  1. On dirait que vous allez avoir beaucoup de journaux. Parmi de nombreuses autres raisons de ne pas utiliser Redis pour cela, il s'agit d'une banque de données en mémoire, et vous allez gaspiller une tonne de mémoire juste pour stocker les journaux, dont je suppose que vous n'avez vraiment pas besoin d'un accès rapide. Juste écrit rapidement. Vous pouvez obtenir des écritures rapides beaucoup moins cher.

  2. Il existe de nombreux frameworks de journalisation distribués qui feront ce que vous voulez (Kafka, Fluentd, etc ...). FluentD est vraiment facile à utiliser et vous permettra de configurer votre journalisation pour qu'elle s'exécute de manière distribuée, rapide et déconnectée de votre base de données. Il dispose de nombreux connecteurs qui vous permettront de diffuser vos logs dans différents magasins (MongoDB, MySQL, fichiers plats, S3 etc ...). Votre choix de banque de données devrait dépendre de ce que vous voulez éventuellement faire avec vos journaux.

  3. Vous devez appeler le journal à partir d'un déclencheur MsSQL? C'est un hit inutile sur votre base de données, et vous pouvez facilement appeler le journal de votre application à la place. Cela fera le tout distribué par boîte d'application et de prendre la charge de votre DB.

+0

Lecture et commentaire :) '1' Vous avez absolument raison. – uzay95

+0

'2' Je vais vérifier pour FluentD – uzay95

+0

' 3'Il est très facile d'écrire du code pour recueillir tous les états avant la mise à jour de la ligne. Sera-ce facile ou comme l'injection d'un morceau de code et de rassembler tout avant et mettre à jour. Ok, je vais vérifier. – uzay95

Questions connexes