NoSqlの旅--CassandraのCqlプロフィール(二)

7307 ワード

Cassandraのインストールが完了したら、このデータベースのクエリーを体験しましょう.従来のリレーショナル・データベースで使用されているsqlはクエリーを行い、Cassandraで使用されているcqlは体験します.
cql文法はまだ多くて、ここでは一つ一つ詳しく述べないで、この必要もなくて、具体的なドキュメントは数え切れないほどで、ここでただ最もよく使うクエリーの機能を列挙します.
まずコマンドライン(またはパワーシェル)を開くCassandraインストールディレクトリの下のbinフォルダに入り、cqlshを実行する.bat(powershellでcqlshを実行してもOK).ここに入ったのは
//  cql   ,powershell    cqlsh    ,cmd         cqlsh.bat  
PS D:\apache-cassandra-2.1.7\bin> .\cqlsh Connected to Test Cluster at 127.0.0.1:9042. [cqlsh 5.0.1 | Cassandra 2.1.7 | CQL spec 3.2.0 | Native protocol v3] Use HELP for help. WARNING: pyreadline dependency missing. Install to enable tab completion. cqlsh>

まずkeyspaceを紹介して、中国語は直訳してキー値空間で、実際には1種のネーミング空間の概念で、これは関係データベースの中のデータベースの地位と類似している.次に、どんなkeyspaceがあるか調べてみましょう.
//  keyspace
cqlsh> describe keyspaces; mykeyspace simplex system_traces system

その結果、4つのkeyspaceにクエリーが表示され、赤字は部分を表す.手動でkeyspaceを作成します
//  keyspace
cqlsh> CREATE KEYSPACE IF NOT EXISTS myCas WITH REPLICATION = {'class': 'SimpleStrategy','replication_factor':1}; cqlsh> describe keyspaces; mycas mykeyspace simplex system_traces system

mycasという名前のkeyspaceが正常に作成されたことがわかります.作成したばかりのkeyspaceを使用します.
//  keyspace
cqlsh> use mycas; cqlsh:mycas>

現在のkeyspaceの下にテーブルuserを作成し、現在のkeyspaceの下にあるすべてのテーブルを表示します.
//   
cqlsh:mycas> CREATE TABLE user ( id int, user_name varchar, PRIMARY KEY (id) ); cqlsh:mycas> describe tables; user

その結果、現在のkeyspaceの下には、作成したばかりのuserテーブルしかありません.テーブルにデータを挿入します.
//       
cqlsh> use mycas; cqlsh:mycas> INSERT INTO users (id,user_name) VALUES (1,'zhangsan'); cqlsh:mycas> select * from users; id | user_name ----+----------- 1 | zhangsan

次に、簡単な条件クエリーを行います.
//       
cqlsh:mycas> select * from users where id=1; id | user_name ----+----------- 1 | zhangsan (1 rows) cqlsh:mycas> select * from users where user_name='zhangsan'; InvalidRequest: code=2200 [Invalid query] message="No secondary indexes on the restricted columns support the provided o perators: "

クエリー・プライマリ・キーは可能ですが、クエリーにはインデックスのuser_がありません.nameはクエリーできません.
インデックスを作成してから、もう一度試してみます.
//    
cqlsh:mycas> create index on users(user_name); cqlsh:mycas> select * from users where user_name='zhangsan'; id | user_name ----+----------- 1 | zhangsan

更新してみます.
//      
cqlsh:mycas> update users set user_name='lisi'; SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] message="line 1:33 mismatched input ';' expecting K _WHERE"> cqlsh:mycas> update users set user_name='lisi' where id=1; cqlsh:mycas> select * from users; id | user_name ----+----------- 1 | lisi

条件に従ってしか更新できないことがわかる.
削除してみます.
//      
SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] message="line 1:17 mismatched input ';' expecting K _WHERE"> cqlsh:mycas> delete from users where id=1; cqlsh:mycas> select * from users; id | user_name ----+----------- (0 rows)

削除も条件に従ってしか削除できないことがわかる.
より具体的なコマンドはCassandraの公式cqlドキュメントを参照することができ、非常に包括的です.