In den meisten Situationen würde ich empfehlen, eine DB für ein Projekt zu wählen, wenn das Projekt nicht riesig ist. Bei wirklich großen Projekten (oder Unternehmen im Allgemeinen) denke ich langfristige Organisationen verwenden eine Kombination aus
- RDBMS für stark transaktionales OLTP
- NoSQL
- ein Datawarehousing-/BI-Projekt
Aber für Dinge mit einem vernünftigeren Umfang wählen Sie einfach diejenige aus, die den Kern des Anwendungsfalls erfüllt, und verwenden Sie sie für alles.
IMO, das Speichern von Benutzerdaten in Mongodb ist in Ordnung - Sie können atomare Operationen für einzelne BSON-Dokumente ausführen, sodass Operationen wie "Teilen Sie mir diesen Benutzernamen atomar zu" machbar sind. Mit Redo-Protokollen (--journal ). ) (v1.8+), Replikation, slavedelayed Replikation ist es möglich, ein ziemlich hohes Maß an Datensicherheit zu haben – so hoch wie bei anderen db-Produkten auf dem Papier. Das Hauptargument gegen die Sicherheit wäre, dass das Produkt neu und alte Software immer sicherer ist.
Wenn Sie sehr komplexe ACID-Transaktionen durchführen müssen – wie z. B. Buchhaltung – verwenden Sie ein RDBMS.
Auch wenn Sie viele Berichte erstellen müssen, ist mysql im Moment möglicherweise besser, insbesondere wenn der Datensatz auf einen Server passt. Die SQL GROUP BY-Anweisung ist ziemlich mächtig.