2013-07-17 11 views
10

Ho un piccolo malinteso sulle chiavi di riga composte con CQL in Cassandra. Diciamo che ho il seguenteCome Cassandra memorizza la chiave primaria multicolumn (CQL)

cqlsh:testcql> CREATE TABLE Note (
      ... key int, 
      ... user text, 
      ... name text 
      ... , PRIMARY KEY (key, user) 
      ...); 
cqlsh:testcql> INSERT INTO Note (key, user, name) VALUES (1, 'user1', 'name1'); 
cqlsh:testcql> INSERT INTO Note (key, user, name) VALUES (1, 'user2', 'name1'); 
cqlsh:testcql> 
cqlsh:testcql> SELECT * FROM Note; 

key | user | name 
-----+-------+------- 
    1 | user1 | name1 
    1 | user2 | name1 

Come questi dati sono memorizzati? Ci sono 2 file o uno.

Se due, quindi, come è possibile avere più di una riga con la stessa chiave? Se uno ha i record con chiave = 1 e l'utente da "utente1" a "utente1000" significa che avrà una riga con chiave = 1 e 1000 colonne contenenti nomi per ciascun utente?

Qualcuno può spiegare cosa sta succedendo sullo sfondo? Grazie.

risposta

11

Quindi, dopo aver digitato un po 'di più e reading an article suggerito da Lyuben Todorov (grazie) ho trovato la risposta alla mia domanda.

Cassandra memorizza i dati in strutture di dati denominate righe che è completamente diverso dai database relazionali. Le righe hanno una chiave univoca.

Ora, cosa sta succedendo nel mio esempio ... Nella tabella Note ho una chiave composta definita come PRIMARY KEY (key, user). Solo il primo elemento di questo tasto funge da chiave di riga e viene chiamato chiave di partizione. Internamente il resto di questa chiave è usato per costruire colonne composte.

Nel mio esempio

key | user | name 
-----+-------+------- 
    1 | user1 | name1 
    1 | user2 | name1 

Questo sarà rappresentata in Cassandra in una fila come

------------------------------------- 
| | user1:name | user2:name | 
| 1 |-------------------------------- 
| | name1   | name1   | 
------------------------------------- 

Avere sanno che è chiaro che non è una buona idea aggiungere una colonna con enormi quantità di valori univoci (e in crescita) alla chiave composta perché verranno memorizzati in una riga. Ancora peggio se si dispone di più colonne come questa in una chiave primaria composita.

Aggiornamento: Più tardi ho trovato this blog post by Aaron Morton che spiega lo stesso in ulteriori dettagli.

+1

post del blog non esiste più = ( – Highstead

+1

@Highstead Link aggiornato al nuovo indirizzo di quel post del blog – Moonwalkr

Problemi correlati