2013-04-19 3 views
5

Ho iniziato a lavorare con il database Cassandra. Sto pianificando di utilizzare Datastax API per eseguire l'upsert/read in/dal database di cassandra. Sono totalmente nuovo a questa API Datastax (che utilizza un nuovo protocollo Binary) e non sono in grado di trovare molte documentazioni e alcuni esempi appropriati.Creazione di una famiglia di colonne o di una tabella in Cassandra durante il lavoro dell'API Datastax (che utilizza un nuovo protocollo Binary)

Quando lavoravo con Cassandra CLI utilizzando il client di Netflix (client Astianatte), poi ho creato la famiglia di colonna come questo-

create column family profile 
with key_validation_class = 'UTF8Type' 
and comparator = 'UTF8Type' 
and default_validation_class = 'UTF8Type' 
and column_metadata = [ 
    {column_name : crd, validation_class : 'DateType'} 
    {column_name : lmd, validation_class : 'DateType'} 
    {column_name : account, validation_class : 'UTF8Type'} 
    {column_name : advertising, validation_class : 'UTF8Type'} 
    {column_name : behavior, validation_class : 'UTF8Type'} 
    {column_name : info, validation_class : 'UTF8Type'} 
    ]; 

Ora stavo cercando di fare la stessa cosa usando Datastax API. Quindi, per iniziare a lavorare con l'API Datastax, devo creare la famiglia di colonne in un modo diverso come detto sopra? O la famiglia di colonne sopra funzionerà bene ogni volta che cercherò di inserire dati nel database Cassandra usando l'API Datastax.

Se quanto sopra famiglia colonna non funzionerà poi-

Prima di tutto ho creato lo spazio delle chiavi come sotto-

CREATE KEYSPACE USERS WITH strategy_class = 'SimpleStrategy' AND strategy_options:replication_factor = '1';

Adesso sto confondere come creare la tavola? Non sono sicuro di quale sia il modo giusto per farlo?

Devo creare in questo modo?

CREATE TABLE profile ( id varchar, account varchar, advertising varchar, behavior varchar, info varchar, PRIMARY KEY (id) );

o dovrei creare in questo modo?

CREATE COLUMN FAMILY profile ( id varchar, account varchar, advertising varchar, behavior varchar, info varchar, PRIMARY KEY (id) );

e anche come add

crd as DateType 
lmd as DateType 

nella tabella di cui sopra o in famiglia colonna mentre si lavora con Datastax API?

Qualsiasi aiuto sarà apprezzato.

+0

cosa intendi per API datastax ??? OpsCenter o datastax java-driver? – abhi

+0

@ abhi, driver java Datastax. – ferhan

risposta

13

Sia che si utilizzi la parola TABELLA o COLUMNFAMILY, entrambi sono gli stessi (sinonimi). Immagino che la parola chiave TABLE sia stata introdotta con CQL3. Quindi puoi usarne uno nelle tue dichiarazioni.

Seconda domanda, aggiunta di DateType, è necessario utilizzare la data/ora.

CREATE COLUMNFAMILY sample (rowkey text, ts timestamp, PRIMARY KEY(rowkey)); 

INSERT INTO sample (rowkey, ts) VALUES ('1','1366354711797'); 
// ts value is basically the System.currentTimeMillis(), I mean a long value 
+1

Grazie. Qual è la differenza tra varchar e testo? Ho bisogno di avere i tipi di dati String per la maggior parte delle mie colonne. Quindi dovrei usare varchar o testo in quel caso? – ferhan

+1

entrambi sono uguali (sinonimi) nel contesto cql, stringa codificata UTF8. – abhi

+0

Fresco. Grazie. Qualsiasi idea sulla mia altra [domanda] (http://stackoverflow.com/questions/16096207/upsert-read-into-from-cassandra-database-using-datastax-api-using-new-binary-pr) – ferhan

1

In cassandra lo spazio delle chiavi o il database sono gli stessi, come la famiglia di colonne saggia e la tabella sono uguali.

Cassandra è più simile a Mysql nella sua sintassi e supporta HQL (simile a SQL)

un tavolo in cassandra possono essere creati come:

CREATE TABLE users (
user_name varchar, 
password varchar, 
gender varchar, 
session_token varchar, 
state varchar, 
birth_year bigint, 
PRIMARY KEY (user_name)); 

Maggiori informazioni qui: Cassandra Tutorials

0

@ neel4soft - Con Cassandra le cose semplicemente si evolvono.Pertanto, al fine di essere una specie di più facile per le persone, è in corso un processo di rinomina per rendere più facile la transizione da SQL a CQL per i neofiti. Tuttavia CQL non dovrebbe essere considerato come un parente di SQL, piuttosto come un cugino di terzo grado dal lato della madre, in altre parole non un parente stretto. Perciò confrontarlo con MySQL è un'immagine impropria delle sue capacità.