MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

NoSQL-Datenbanken – gute Kandidaten für Protokollverarbeitung/Aggregation und Rollup?

Unterschiedliche NoSQL-Lösungen lösen unterschiedliche Probleme für unterschiedliche Verwendungszwecke – daher ist es am besten, sich zuerst Ihr Problem anzusehen und es aufzuschlüsseln

  • Du schreibst viel zum Speicher, deshalb ist Ihnen die Schreibgeschwindigkeit wichtig
  • Sie möchten Aggregationsvorgänge an diesen Daten durchführen und die Ergebnisse davon leicht abfragbar haben
  • Lesegeschwindigkeit ist dem Klang der Dinge nach nicht so wichtig, zumindest nicht in einer Art "Webanwendung muss für Millionen von Menschen wirklich reaktionsschnell sein"
  • Ich weiß nicht, ob Sie dynamische Abfragen benötigen oder nicht

Betrachten wir Couch, Mongo und Raven auf einer sehr hohen, verallgemeinerten Weise

Rabe

  • Schnelles Schreiben
  • Schnelle Abfragen (eventuell konsistent, vorberechnet, Aggregation über map/reduce)
  • Dynamische Abfragen möglich, aber für Ihren Anwendungsfall nicht wirklich geeignet, da Sie höchstwahrscheinlich nach Datum usw. abfragen werden

Mongo

  • Blindingly Fast schreibt (meiner Meinung nach gefährlich, denn Stromausfall bedeutet Datenverlust;-))
  • Langsame Lesevorgänge (relativ), Aggregation über map/reduce, nicht vorberechnet
  • Dynamische Abfragen sind genau das, was_Sie_tun, aber Sie müssen wahrscheinlich Indizes für Ihre Spalten definieren, wenn Sie irgendeine Art von Leistung für diese Art von Daten wünschen

Couch

  • Schnelles Schreiben
  • Schnelle Lesevorgänge (vorberechnet, aber nur aktualisiert, wenn Sie lesen (IIRC)
  • Dynamische Abfragen nicht möglich, alles vordefiniert über Map- oder Map/Reduce-Funktionen

Benötigen Sie also im Grunde genommen dynamische Abfragen für diese Art von Daten? Ist Ihnen die Lesegeschwindigkeit unglaublich wichtig? Wenn Sie dynamische Abfragen benötigen, sollten Sie Raven oder Mongo verwenden (für diese Art von Dingen ist Couch wahrscheinlich sowieso nicht das, wonach Sie suchen).

FWIW, Mongos einziger Anwendungsfall IST meiner Meinung nach die Protokollierung, also haben Sie dort vielleicht eine Antwort.