Ich denke darüber nach, MongoDB für die Speicherung unserer Statistiken zu verwenden, habe aber einige allgemeine Fragen dazu, ob ich es richtig verstehe, bevor ich es wirklich lerne.
Ich verstehe das Konzept der Verwendung von Dokumenten, was mir nicht ganz klar ist, ist, wie viele Daten in jedem Dokument gespeichert werden können. Das folgende Diagramm erklärt das Layout, an das ich denke:
Website (document)
- some keys/values about the particular document
- statistics (tree)
- millions of rows where each record is inserted from a pageview (key/value array containing data such as timestamp, ip, browser, etc)
Was mich an mongodb begeistert hat, waren die Gruppierungsfunktionen wie z.B.: http://www.mongodb.org/display/DOCS/Aggregation
db.test.group(
{ cond: {"invoked_at.d": {$gte: "2009-11", $lt: "2009-12"}}
, key: {http_action: true}
, initial: {count: 0, total_time:0}
, reduce: function(doc, out){ out.count++; out.total_time+=doc.response_time }
, finalize: function(out){ out.avg_time = out.total_time / out.count }
} );
Aber mein Hauptanliegen ist, wie schwer würde dieser Befehl zum Beispiel auf dem Server sein, wenn es sagen, 10 Millionen von Datensätzen über Dutzende von Dokumenten auf einem 512-1gb ram Server auf Rackspace zum Beispiel? Würde er immer noch unter geringer Last laufen?
Gibt es eine Begrenzung für die Anzahl der Dokumente, die in MongoDB gespeichert werden können (getrennte Datenbanken)? Gibt es auch eine Begrenzung für die Anzahl der Datensätze in einem Baum, wie ich oben erklärt habe? Wird die Abfrage, die ich oben gezeigt habe, sofort ausgeführt oder handelt es sich um eine Art Map/Reduce-Abfrage? Ich bin mir nicht ganz sicher, ob ich das beim Laden der Seite in unserem Kontrollpanel ausführen kann, um diese Statistiken sofort zu erhalten.
Gracias.