2010-05-05 6 views
13

Quelle serait la base de données appropriée pour suivre? Je suis particulièrement intéressé par vos expériences avec les systèmes non relationnels NoSQL. Sont-ils utiles pour ce type d'utilisation, quel système vous avez utilisé et que vous recommanderiez, ou devrais-je utiliser une base de données relationnelle normale (DB2)? J'ai besoin de collecter des informations de piste d'audit/type de journalisation à partir d'un tas de sources vers un serveur centralisé où je pourrais générer des rapports efficacement et examiner ce qui se passe dans le système.Quelles sont les bonnes solutions de base de données NoSQL et non-relationnelles pour la base de données d'audit/d'enregistrement

En général, un événement d'audit/exploitation forestière consisterait toujours de certains champs obligatoires, par exemple

  • id unique au monde (certains comment généré par le programme qui a généré cet événement)
  • horodatage
  • type d'événement
  • (par exemple l'utilisateur connecté, etc erreur est survenue)
  • quelques informations sur la source (server1, server2)

En outre, l'événement peut contenir des paires valeur/clé 0-N, où la valeur peut aller jusqu'à quelques kilo-octets de texte.

  • Il doit fonctionner sur le serveur Linux
  • Il devrait fonctionner avec une grande quantité de données (100 Go par exemple)
  • il devrait soutenir une sorte de recherche de texte intégral efficace
  • Il devrait permettre la lecture simultanée et écriture
  • Il devrait être flexible pour ajouter de nouveaux types d'événements et ajouter/supprimer des paires clé-valeur à de nouveaux événements. Flexible = aucun changement ne doit être requis dans le schéma de la base de données, l'application générant les événements peut simplement ajouter de nouveaux types d'événements/nouveaux champs si nécessaire.
  • Il devrait être efficace de faire des requêtes sur la base de données. Pour signaler et explorer ce qui s'est passé. Par exemple:
    • Combien d'événements avec type = X sont apparus au cours d'une période donnée.
    • Obtenez tous les événements où le champ A a une valeur Y.
    • Obtenez tous les événements de type X et le champ A a la valeur 1 et le champ B n'est pas 2 et événement a eu lieu dans le dernier 24h

Répondre

4

Le deux que j'ai vu utilisé avec succès sont MongoDB et Cassandra.

+0

Voulez-vous dire MongoDB? –

+1

MongoDB est fantastique pour la journalisation: http://blog.mongodb.org/post/172254834/mongodb-is-fantastic-for-logging – kristina

2

Nous avons utilisé Redis pour effectuer tous nos journaux centralisés pour tous nos serveurs d'applications sur mflow.com. Il est très rapide, basé sur these benchmarks il fait environ 110000 SETs par seconde, environ 81000 GETs par seconde. Il a une implémentation VM (si votre jeu de données dépasse la mémoire disponible) qui permute les valeurs non-fréquentées sur le disque.

C'est un serveur de structure de données avancé qui peut stocker toutes les données binaires sécurisées avec un support natif pour les chaînes, les listes, les ensembles, les ensembles triés et les hachages. Basé sur les discussions sur la liste de diffusion, il est fortement utilisé par beaucoup de gens pour stocker des analyses.

2

dois-je aller avec la base de données relationnelle normale (DB2)?

Oui, vous devriez! Si vous voulez juste stocker des choses et les scanner, vous pourriez aussi bien écrire dans un fichier. Très rapide, pas de frais généraux! Mais la minute où vous voulez résumer les données dans le temps (dernières 24h, ou entre les temps t et t + 1), plus vous vous souciez des données comme autre chose que des lignes de texte, aucun RDBMS n'est votre ami.

Questions connexes