Wo die Trennung hat an einem anderen Ort Dokument oder Super-Säule für cassandra getan werden.
Tipp # 1, wenn sie mit Cassandra arbeiten, löschen vollständig das Wort "Super Spalte" aus Ihrem Wortschatz.
Ich würde gerne wissen, wenn es empfohlen wird, die Daten jedes Kunden in einem Eimer zu partitionieren?
Das hängt davon ab. Es klingt so, als würden Ihre Abfragen hauptsächlich auf einer Kunden-ID basieren, daher ist es sinnvoll, sie als Teil Ihres Partitionsschlüssels zu haben. Wenn jedoch jede Kundenpartition Millionen von Reihen und/oder Spalten darunter hat, wird das sehr groß werden.
Tipp # 2, richtige Cassandra Modellierung erfolgt auf der Grundlage, wie Ihre erforderlichen Abfragen aussehen. Ohne die Arten von Abfragen zu sehen, die Sie bedienen müssen, wird es schwierig sein, genauer zu sein.
Wenn Sie Kundendaten in Bezug auf Konten und Adressen usw. haben, kann es sinnvoll sein, eine customers
Tabelle mit einem PRIMARY KEY von nur customer_id
zu erstellen. Wenn Sie jedoch feststellen, dass Sie Ihre Kunden (z. B.) nach email_address
abfragen müssen, erstellen Sie eine Tabelle customers_by_email
, kopieren Sie Ihre Daten und erstellen Sie einen PRIMARY KEY, der dies unterstützt.
Wenn Sie darüber hinaus Daten über Kundenaktivitäten speichern, sollten Sie eine customer_activity
Tabelle mit einem PRIMARY KEY von PRIMARY KEY ((customer_id,month),activity_time)
in Erwägung ziehen. Das wird customer_id
und month
als einen Partitionsschlüssel verwenden, der die Aktivität des Kunden speichert, die von activity_time
gruppiert wird. In diesem Fall, wenn wir month
nicht als zusätzlichen Partitionsschlüssel verwenden würden, würde jede customer_id
Partition kontinuierlich beschrieben, bis es zu plump würde, in die Datenbank zu schreiben oder abzufragen (ungebundenes Zeilenwachstum).
Zusammenfassung:
- Wenn jemand Ihnen sagt, eine Super-Säule in Cassandra zu verwenden, schlagen sie.
- Sie müssen Ihre Abfragen kennen vor Sie entwerfen Ihre Tabellen.
- Ja,
customer_id
wäre ein guter Weg, um Ihre Daten getrennt zu halten und sicherzustellen, dass jede Abfrage auf einen einzigen Knoten beschränkt ist. - Erstellen Sie Ihre Partitionsschlüssel, um das ungebundene Zeilenwachstum zu berücksichtigen, damit Sie nicht zu viele Daten in dieselbe Partition schreiben.
Großartig, danke für Ihre Erklärung. Die Zielanwendung kommt einer Online-Buchhaltungsanwendung nahe, aber fast nur in Absprache mit dem Kunden. Die Daten werden durch einen automatischen Prozess hinzugefügt. Ich habe noch nie Cassandra, nur MongoDb in Nosql verwendet. (Gruppierung dies erfolgt durch Spalten Familien nicht Super-Spalte) – user4185975