Ich bin selbst ein Anfänger auf NoSQL-Datenbanken. Ich beantworte dies also auf Kosten potenzieller Ablehnungen, aber es wird eine großartige Lernerfahrung für mich sein.
- um zu sagen, ob MongoDB gut geeignet ist, solche Daten zu speichern, die schließlich nach Zeitbereichen abgefragt werden (z. B. alle Bilder einer bestimmten Kamera zwischen einer bestimmten Stunde abrufen)? Irgendwelche Vorschläge zum dokumentbasierten Schemadesign für meinen Fall?
MongoDB ist eine dokumentenorientierte Datenbank und eignet sich gut für Abfragen innerhalb ein Aggregat (Sie nennen es Dokument). Da Sie die Daten jeder Kamera bereits in einer eigenen Tabelle speichern, haben Sie in MongoDB eine separate Sammlung für jede Kamera erstellt. So geht's Sie führen Datumsbereichsabfragen durch.
- Welche Spezifikationen sollte der Server haben (CPU, RAM, Festplatte)? Irgendwelche Vorschläge?
Alle NoSQL-Datenbanken sind auf Scale-out ausgelegt auf Commodity-Hardware. Aber so wie Sie die Frage gestellt haben, denken Sie vielleicht daran, die Leistung durch Hochskalieren zu verbessern . Sie können mit einer vernünftigen Maschine beginnen und mit zunehmender Last weitere Server hinzufügen (Scale-out). Sie müssen keinen High-End-Server planen und kaufen.
- Sollte ich Sharding/Replikation für dieses Szenario in Betracht ziehen (während ich die Leistung beim Schreiben zum Synchronisieren von Replikatsätzen berücksichtige)?
MongoDB sperrt die gesamte Datenbank für einen einzelnen Schreibvorgang (gibt aber für andere Operationen nach) und ist für Systeme gedacht, die mehr Lese- als Schreibvorgänge haben. Das hängt also davon ab, wie Ihr System ist. Es gibt mehrere Sharding-Methoden, die domänenspezifisch sein sollten. Eine pauschale Antwort ist nicht möglich. Es können jedoch einige Beispiele gegeben werden, wie z. B. Sharding nach Geografie, nach Branchen usw.
Lesen Sie auch Eine einfache englische Einführung in das CAP-Theorem
Aktualisiert mit Antwort auf den Kommentar zum Sharding
Gemäß ihrer Dokumentation , Sie sollten die Bereitstellung eines Sharding-Clusters in Erwägung ziehen, wenn:
Also basierend auf dem letzten Punkt ja. Die Auto-Sharding-Funktion wurde entwickelt, um Schreibvorgänge zu skalieren. In diesem Fall haben Sie eine Schreibsperre pro Shard , nicht pro Datenbank . Aber meine ist eine theoretische Antwort. Ich schlage vor, dass Sie sich von der 10gen.com-Gruppe beraten lassen.