NoSqlの旅--CassandraのCqlプロフィール(二)
7307 ワード
Cassandraのインストールが完了したら、このデータベースのクエリーを体験しましょう.従来のリレーショナル・データベースで使用されているsqlはクエリーを行い、Cassandraで使用されているcqlは体験します.
cql文法はまだ多くて、ここでは一つ一つ詳しく述べないで、この必要もなくて、具体的なドキュメントは数え切れないほどで、ここでただ最もよく使うクエリーの機能を列挙します.
まずコマンドライン(またはパワーシェル)を開くCassandraインストールディレクトリの下のbinフォルダに入り、cqlshを実行する.bat(powershellでcqlshを実行してもOK).ここに入ったのは
まずkeyspaceを紹介して、中国語は直訳してキー値空間で、実際には1種のネーミング空間の概念で、これは関係データベースの中のデータベースの地位と類似している.次に、どんなkeyspaceがあるか調べてみましょう.
その結果、4つのkeyspaceにクエリーが表示され、赤字は部分を表す.手動でkeyspaceを作成します
mycasという名前のkeyspaceが正常に作成されたことがわかります.作成したばかりのkeyspaceを使用します.
現在のkeyspaceの下にテーブルuserを作成し、現在のkeyspaceの下にあるすべてのテーブルを表示します.
その結果、現在のkeyspaceの下には、作成したばかりのuserテーブルしかありません.テーブルにデータを挿入します.
次に、簡単な条件クエリーを行います.
クエリー・プライマリ・キーは可能ですが、クエリーにはインデックスのuser_がありません.nameはクエリーできません.
インデックスを作成してから、もう一度試してみます.
更新してみます.
条件に従ってしか更新できないことがわかる.
削除してみます.
削除も条件に従ってしか削除できないことがわかる.
より具体的なコマンドは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ドキュメントを参照することができ、非常に包括的です.