1) In Bezug auf das 4-MB-Dokumentenlimit heißt es in „MongoDB:The Definitive Guide“:
Am Ende hängt es davon ab, wie hoch Sie die Rechnungen für einen Benutzer erwarten. Ich hoffe, der obige Auszug gibt Ihnen eine Vorstellung von den Grenzen, die durch die Dokumentgröße auferlegt werden.
2) Denormalisiertes Schema (Rechnungen gehören zum Benutzerdokument) ist der richtige Weg, wenn Sie wissen, dass Sie niemals globale Abfragen für Rechnungen ausführen werden (Beispiel für eine solche Abfrage ist, wenn Sie die zehn neuesten Rechnungen abrufen möchten). in das System eingegeben). Sie müssen map-reduce verwenden, um Ergebnisse für solche Abfragen abzurufen, wenn Sie ein denormalisiertes Schema verwenden.
Ein normalisiertes Schema (Benutzer und Rechnungen in separaten Dokumenten) ist eine bessere Wahl, wenn Sie Flexibilität bei der Abfrage der Rechnungen wünschen. Da MongoDB jedoch keine Verknüpfungen unterstützt, müssen Sie jedes Mal mehrere Abfragen ausführen, wenn Sie die einem Benutzer entsprechenden Rechnungen abrufen möchten.
Angesichts des von Ihnen erwähnten Anwendungsfalls würde ich mich für ein denormalisiertes Schema entscheiden.
3) Alle Updates in MongoDB sind atomar und serialisiert. Das sollte Steves Bedenken beantworten.
Vielleicht finden Sie diese Folien hilfreich. http://www.slideshare.net/kbanker/mongodb-meetup
Sie können sich auch die Seite Produktionsbereitstellungen von MongoDB ansehen. Vielleicht finden Sie die SF.net-Folien hilfreich.