Kann ein Primärschlüssel in Cassandra eine Sammlungsspalte enthalten?

8

Kann ein Primärschlüssel in Cassandra eine Sammlungsspalte enthalten?

Beispiel:

%Vor%     
Chris Dutrow 09.05.2013, 20:43
quelle

3 Antworten

12

Sammlungsarten können nicht Teil des Primärschlüssels sein, und auch der Zählertyp kann nicht verwendet werden. Sie können dies selbst leicht testen, aber der Grund ist vielleicht nicht offensichtlich.

Sets, Listen, Maps sind Hacks über dem Speichermodell (aber ich meine das nicht auf eine negative Art). Ein Set besteht eigentlich nur aus mehreren Spalten mit demselben Schlüsselpräfix. Um Teil des Primärschlüssels zu sein, muss der Wert skalar sein und die Sammlungsarten nicht.

    
Theo 11.05.2013, 21:26
quelle
6

Ich würde nein sagen: weil die Sammlung änderbar ist und Sie keinen Primärschlüssel haben können, der sich mit der Zeit ändert.

    
Óscar López 09.05.2013 20:52
quelle
6

Es ist eine Weile her, aber da dies auf der ersten Seite in Google ist, wenn Sie nach einer Karte im Primärschlüssel suchen, dachte ich, dass es sich lohnt, sie zu aktualisieren.

Cassandra erlaubt jetzt (glaube ich seit 2.1), eine Sammlung zu verwenden in einem Primärschlüssel, vorausgesetzt, es ist eingefroren .

Ein eingefrorener Wert serialisiert mehrere Komponenten zu einem einzigen Wert. Nicht eingefrorene Typen ermöglichen Aktualisierungen einzelner Felder. Cassandra behandelt den Wert eines eingefrorenen Typs als Blob. Der gesamte Wert muss überschrieben werden.

Mit "eingefroren" wird die Sammlung im Wesentlichen unveränderlich, so dass keine Modifikationen vor Ort möglich sind und sie daher für einen Primärschlüssel geeignet sind.

Hier ist ein Beispiel mit einer eingefrorenen Liste.

%Vor%

Seit 2.1 erlaubt Cassandra auch, einen Index für Spalten vom Typ map, set oder list zu erstellen - obwohl das nicht unbedingt eine gute Idee ist.

    
nicholasamorim 19.03.2016 11:06
quelle

Tags und Links