Ich habe MongoDB ausgiebig genutzt (in den letzten 6 Monaten), um ein hierarchisches Datenverwaltungssystem aufzubauen, und ich kann mich sowohl für die Einfachheit der Einrichtung (installieren, ausführen, verwenden!) als auch für die Geschwindigkeit verbürgen. Solange man sorgfältig über Indizes nachdenkt, kann man mit der Geschwindigkeit absolut zufrieden sein.
Ich gehe davon aus, dass Cassandra aufgrund seiner Verwendung bei Großprojekten wie Twitter über bessere Skalierungsfunktionen verfügt, obwohl das MongoDB-Team daran arbeitet, hier gleichzuziehen. Ich sollte darauf hinweisen, dass ich Cassandra nicht über die Testphase hinaus verwendet habe, daher kann ich nicht für die Details sprechen.
Als wir NoSQL-Datenbanken untersuchten, war für mich die Abfrage das Entscheidende - Cassandra ist im Grunde nur ein riesiger Key/Value-Speicher, und die Abfrage ist etwas umständlich (zumindest im Vergleich zu MongoDB), so dass man aus Leistungsgründen ziemlich viele Daten als eine Art manuellen Index duplizieren muss. MongoDB hingegen verwendet ein "Query by Example"-Modell.
Nehmen wir an, Sie haben eine Collection (MongoDB-Umgangssprache für das Äquivalent zu einer RDMS-Tabelle), die Benutzer enthält. MongoDB speichert Datensätze als Dokumente, die im Grunde binäre JSON-Objekte sind. z. B:
{
FirstName: "John",
LastName: "Smith",
Email: "john@smith.com",
Groups: ["Admin", "User", "SuperUser"]
}
Wenn Sie alle Benutzer mit dem Namen Smith finden möchten, die über Admin-Rechte verfügen, erstellen Sie einfach ein neues Dokument (in der Verwaltungskonsole mit Javascript oder in der Produktionsumgebung mit der Sprache Ihrer Wahl):
{
LastName: "Smith",
Groups: "Admin"
}
...und führen Sie dann die Abfrage aus. Das war's schon. Es gibt zusätzliche Operatoren für Vergleiche, RegEx-Filterung usw., aber es ist alles ziemlich einfach, und die Wiki-basierte Dokumentation ist ziemlich gut.
5 Stimmen
Eine offizielle Leistungsvergleichsstatistik ist verfügbar. Cassandra vs. MongoDB vs. HBase
1 Stimmen
>Viele Lesevorgänge in jeder Abfrage, weniger regelmäßige Schreibvorgänge => Suchen Sie nach CQRS (trennen Sie Ihre Lesevorgänge von Ihren Schreibvorgängen, wahrscheinlich ohne Event-Sourcing, aber prüfen Sie, ob Sie Ihr Lesemodell asynchron aktualisieren können sync kann auch funktionieren es hängt von Ihren Anwendungsfällen ab)
4 Stimmen
Das ist wirklich eine gute Frage. Ich frage mich, ob es eine aktualisierte Version davon gibt? Diese hier ist schon sehr alt