2014-04-15 10 views
7

Ich habe versucht, die Design-Entscheidung besser zu verstehen, wenn ich Tabelleneinträge in Cassandra mache und wenn der Blob-Typ eine gute Wahl ist.Wann sollten Blobs in einer Cassandra (und CQL) Tabelle verwendet werden und was genau sind Blobs?

Ich erkannte, dass ich nicht wirklich wusste, wann ich einen Blob als Datentyp wählen sollte, weil ich nicht sicher war, was ein Blob wirklich war (oder wofür das Akronym stand). So entschied ich mich, die folgende Dokumentation für den Datentyp Blob zu lesen:

http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/blob_r.html

Blob

Cassandra 1.2.3 still supports blobs as string constants for input (to allow smoother transition to blob constant). Blobs as strings are 

jetzt veraltet und wird nicht in naher Zukunft unterstützt werden. Wenn Sie Zeichenfolgen als Blobs verwenden, aktualisieren Sie Ihren Client-Code, um zu den Konstanten blob zu wechseln. Eine BLOB-Konstante ist eine hexadezimale Zahl, die durch 0xX + definiert ist, wobei hex ein hexadezimales Zeichen ist, z. B. [0-9a-fA-F]. Zum Beispiel 0xcafe.

Blob conversion functions 

A number of functions convert the native types into binary data (blob). For every <native-type> nonblob type supported by CQL3, the 

typeAsBlob Funktion nimmt ein Argument des Typs Typ und gibt ihn als Blob. Umgekehrt nimmt die BlobAsType-Funktion ein 64-Bit-Blob-Argument und konvertiert es in einen Bigint-Wert. Zum Beispiel bigintAsBlob (3) 0x0000000000000003 und blobAsBigint (0x0000000000000003) ist 3.

Was ich davon habe, ist, dass seine nur eine lange Hexadezimal/Binär. Allerdings schätze ich nicht wirklich, wenn ich es als Spaltentyp für eine potenzielle Tabelle verwenden würde und wie es besser oder schlechter als andere Typen ist. Außerdem kann es hilfreich sein, einige der Eigenschaften zu überprüfen, um herauszufinden, in welchen Situationen Blobs gut sind.

Antwort

6

Blobs (Binary Large OBjects) sind die Lösung, wenn Ihre Daten nicht in die Standardtypen von C * passen. Angenommen, Sie möchten ein Forum erstellen, in dem Benutzer Dateien beliebigen Typs hochladen dürfen. Um diese in C * zu speichern, würden Sie eine Blob-Spalte (oder möglicherweise mehrere BLOB-Spalten verwenden, da einzelne Zellen nicht zu groß werden sollen).

Ein anderes Beispiel könnte eine Tabelle sein, in der Benutzer ein aktuelles Foto haben dürfen, dieses Foto könnte als Blob hinzugefügt werden und zusammen mit dem Rest der Benutzerinformationen gespeichert werden.

+0

Aber Text und Blob hat dieselben Einschränkungen in Bezug auf die Größe, d. H. 2 GB? – pinkpanther

+0

Sie sollten keine Zellen so groß für beide Typen machen, aber das ist die obere Grenze – RussS

+0

Ich stimme zu! Ich sage nur, weil Sie erwähnt haben, dass BLOB verwendet werden soll, wo Daten nicht in den Standardtyp passen. Wenn alle Felder dieselben Einschränkungen haben, ist das egal, oder? Wenn es sich um Binärdaten handelt, verwenden wir natürlich BLOB. – pinkpanther

Verwandte Themen