2013-07-08 18 views
43

Qualcuno conosce la differenza tra i due tipi di dati CQL text e varchar in Cassandra? La documentazione di Cassandra descrive entrambi i tipi come "stringa codificata UTF-8" e nient'altro.Cassandra: testo vs varchar

+0

è possibile fornire un collegamento alla documentazione? Non ho mai sentito parlare di entrambi. Quello che ho sentito, comunque, sono AsciiType e UTF8Type le differenze tra le quali dovrebbe essere evidente. –

+0

@baba Questi sono i nomi utilizzati da CQL3. – Raedwald

+0

sì, mi ci è voluto un po 'ma ho capito :) –

risposta

49

text è solo uno pseudonimo per varchar!

La documentazione:

EDIT
Ecco il link allo C* 1.2 docs. Il testo rispetto alle informazioni varchar è sempre lo stesso, tuttavia questo documento contiene alcuni tipi di dati aggiuntivi.

+2

Puoi riferirti dove hai trovato TEXT è uno pseudonimo di VARCHAR?Impossibile trovarlo in nessuno dei link indicati – analogue

+0

Ctrl + F per "alias" non restituirà la risposta desiderata. Cerca "informazioni sui tipi di dati nativi" nella documentazione CQL3 - collegamento Apache, e vedrai la descrizione sia di varchar che di testo, sono identici. Anche [this] (http://www.thefreedictionary.com/Aliases) –

+0

@analogue [Informazioni sui tipi di dati] (http://docs.datastax.com/en/cassandra/1.2/cassandra/tools/use_about_data_types_c.html) dice interno 'UTF8Type' corrisponde al nome CQL' text, varchar' che direi che sono alias. – karmakaze

9

Probabilmente intendevi i tipi di archiviazione CQL, in caso contrario, ignorare la mia risposta.

In CQL c'è stata una tendenza in corso per cercare di allontanarsi dagli interni di cassandra. Che sia una cosa buona o cattiva, è aperta all'interpretazione. Ciò che è rilevante, tuttavia, è nelle ultime versioni degli sviluppatori di CQL che hanno cercato di trovare sintassi più familiare alle persone che non sono così approfondite negli interni di cassandra.

Se si dovesse dare uno sguardo a questa domanda SO, si ottiene una bella illustrazione della situazione: Creating column family or table in Cassandra while working Datastax API(which uses new Binary protocol)

Nelle versioni recenti CQL, alcuni alias, alieni a Cassandra, ma molto ben noto a DBA hanno iniziato ad apparire. Ad esempio, il nativo di cassandra ColumnFamily è stato sottoposto ad alias con Table e text è solo un alias per varchar e viceversa. Di nuovo, è una questione di opinione se questa è una buona cosa o no.

Quindi, in conclusione, è possibile utilizzare varchar e il testo in modo intercambiabile.

3

Questo mi ha gettato anche quando ho iniziato con Cassandra.

Sia il testo che varchar sono stringhe con codifica UTF8 e sono sinonimi l'uno dell'altro, ovvero sono esattamente la stessa cosa.

Come nota aggiuntiva se si proviene da un mondo relazionale come MS SQL, si potrebbe anche esitare a utilizzare questi tipi (soprattutto TEXT) come campo primario per un'entità. Il TESTO è solitamente associato a grossi blob di contenuto testuale che non urlano la chiave primaria alla mente relazionale della terza forma normale. Ma dal momento che tutti i tipi di Cassandra sono essenzialmente memorizzati come array di byte esadecimali sul disco, non ci sono prestazioni reali significative quando li si utilizza come chiave primaria.