2009-12-16 4 views
4

Je réfléchis à la conception d'un système de journalisation des événements basé sur CouchDB.Conception d'un système de journalisation avec le backend CouchDB

Quel serait un bon moyen de stocker chaque événement?

  1. un document avec des événements comme des 'pièces jointes'
  2. un document par événement
  3. un document par type d'événement, événements comme pièces jointes

Autre?

Répondre

4

Je définirais un document pour l'événement. Si c'est le système de journalisation des événements, l'événement est l'entité principale, n'est-ce pas? Donc, à mon humble avis, il devrait être document, pas seulement un attachement. Cette solution vous donne de la flexibilité lors de la recherche/filtrage d'événements.

+0

Je sais que c'est vieux, mais j'ai réussi à faire un système de journalisation couchdb en utilisant cette méthode exacte. J'avais plus de 200 machines à signaler, et cela a très bien fonctionné. –

2

Je choisirais certainement un document par événement aussi. En plus de la réponse d'amorfis, l'utilisation de pièces jointes risque de provoquer des conflits sur le document pendant les mises à jour, à moins que vous ne sérialisiez les mises à jour très attentivement. Il suffit de placer les événements dans couchdb comme des documents au moment où ils se produisent et d'utiliser des vues pour découper et découper les événements pour analyse.

+0

hmmm ... contention dans couchDB? Je pensais qu'il était basé sur un système de "révision" sans verrouillage. Explication s'il vous plait? – jldupont

+0

Vous ne pouvez mettre à jour un document (y compris en ajoutant une pièce jointe) si vous avez le rev actuel. Un nouveau rev ​​est attribué chaque fois qu'un document est stocké. Ainsi, s'il y a beaucoup de choses essayant de mettre à jour un document, par exemple un certain nombre de bûcherons, alors ils peuvent finir par "se battre" sur le document. Les perdants rechargent beaucoup le document et réessayent. –

Questions connexes