Meiner Meinung nach sollte das Format Ihrer Daten bei der Auswahl eines Speicher-Backends im Vordergrund stehen. Haben Sie Daten, die relationaler Natur sind? Wenn ja, ist es möglich und sinnvoll, die Daten in Dokumenten zu modellieren? Die Datenmodellierung ist in einer Dokumentendatenbank genauso wichtig wie in einer relationalen Datenbank, sie wird nur anders durchgeführt. Wie viele Objekttypen gibt es und wie sind sie miteinander verbunden? Können DBrefs in Mongodb die Aufgabe erfüllen oder werden Sie Fremdschlüssel so sehr vermissen, dass es schmerzhaft wird? Wie sehen Ihre Zugriffsmuster für die Daten aus? Holen Sie nur Daten eines Typs, gefiltert nach einem Feldwert, oder haben Sie komplizierte Abrufmodi?
Benötigen Sie ACID-Transaktionsintegrität? Erzwingt die Domäne eine Vielzahl von Einschränkungen für die Daten? Benötigen Sie den Skalierungsfaktor einer Dokumentendatenbank oder ist das nur eine "coole" Sache?
Welche Anforderungen stellen Sie an die Konsistenz und Datenintegrität? Einige NoSQL-Lösungen und insbesondere MongoDB sind ziemlich locker bei der Schreibkonsistenz, um die Leistung zu steigern. NoSQL ist keine einheitliche Landschaft und andere Produkte, z.B. CouchDB, haben andere Eigenschaften in diesem Bereich. Einige sind auch abstimmbar.
Dies sind alles Fragen, die bei der Wahl des Speichers eine Rolle spielen sollten.
Einige Erlebnisse
- Die Erstellung umfangreicher Berichte über die gespeicherten Daten kann bei der Verwendung von MongoDB oder einer anderen Dokumentendatenbank schwieriger sein, und in einigen Anwendungsfällen wurden RDBMS und Dokumentendatenbanken zu diesem Zweck kombiniert.
- (Sehr) anderes Abfragemodell. MongoDB unterscheidet sich auch von anderen Dokumenten-Datenbanken.
- Flexible Änderung des Datenformats/Schemas während der Entwicklung
- Unbekanntes Gebiet
- unterschiedlicher Reifegrad der Treiber und Rahmenbedingungen
- Schnell
- Einfachere (in vielerlei Hinsicht) Produkt- und Verwaltungswerkzeuge (im Vergleich zu vielen RDBMS-Produkten)
- Keine Impedanzfehlanpassung mehr. Die Speicherung passt sich den Daten an, nicht umgekehrt.
- Weniger Reibungsverluste und direkterer Zugang zu Daten.
- Domäne mehr an Persistenz gebunden (je nach ORM-"Ebene" von NoRM, je nachdem, wie sehr es das Backend abstrahiert. Ich habe NoRM nicht verwendet, daher kann ich das nicht beantworten).