Wir haben eine Multi-Tenant-Anwendung, die Azure DocumentDB als unsere dokumentenorientierte NoSQL-Datenbank verwendet.Speichern verschiedener Dokumenttypen in einer DocumentDb-Sammlung
Für multitenancy, lesen wir this question und this blog post. Da unsere Benutzerzahl derzeit nicht die Notwendigkeit erfüllt, verschiedene Datenbanken und/oder documentCollections
zu verwenden, und noch wichtiger, um Kosteneinsparungen zu erzielen, haben wir Multitenancy mit einer "Where" -Klausel in einem TenantId-Feld mit einer documentCollection
implementiert.
Ebenso, wenn es darum geht, „Dokumente“ oder „Objekte“ mit komplett unterschiedlicher Natur zu speichern (zum Beispiel sagen, Book
und Car
) wir uns auf die Tatsache in Frage stellen, eine documentCollection
zu verwenden.
Zunächst sieht es vernünftiger aus, zwei verschiedene documentCollection
für Book
und Car
zu erstellen. Die Erstellung eines documentCollection
kostet jedoch 25 $ Minimum. Wir möchten nicht immer + 25 $ bezahlen, wenn wir ein neues Feature hinzufügen müssen, auch wenn es eine geringe Menge an Daten speichern soll (z. B. speichert unsere App viele Books
, aber wenige Cars
...).
Ist es ein guter Entwurf, um Buch und Auto in das gleiche documentCollection
zu setzen? Und behalten Sie einen Verweis auf den Typ des Dokuments in einem freigegebenen Mitglied (z. B. string Type ="Book" or string Type = "Car"
).
Mit dem Wissen, dass wir die Multitenancy bereits mit einer Where "-Klausel" implementiert haben, um alle Autos in unserer App für einen bestimmten Mieter abzufragen, würden unsere Abfragen alle Where TenantId ="XXXX" AND Type = "Car"
enthalten.
Ich habe gesehen, dass DocumentDB jetzt die Partitioned Collection unterstützt. Könnte dies eine gute Verwendung der Partitionen sein, oder im Gegenteil, sie sollten beibehalten werden, um eine bessere Skalierbarkeit zu erreichen, und sind nicht geeignet, verschiedene Dokumenttypen zu trennen, deren Objektmengen möglicherweise nicht ähnlich sind?
Vielen Dank für Ihre schnelle Antwort. Nur um sicher zu sein, wenn Sie schreiben "Partition Keys sollten in etwa zwischen den Partitionen verteilt ... unter anderen Kriterien." Sie meinen, dass Partitionsschlüssel verwendet werden, um eine "Partition von ungefähr ähnlicher Größe" zu erstellen? –
Wir untersuchen auch Ihre Bibliothek [lumenize] (https://github.com/lmaccherone/documentdb-lumenize), um Aggregatfunktionen für DocumentDb zu aktivieren. Sieht sehr vielversprechend aus. –
Ähnliche Größe und Durchsatz. Lass es mich wissen, wenn du Hilfe bei Lumenize brauchst. Ich überwache das Stack Overflow-Tag genauso wie dieses. –