Cassandra CQLとは
スポンサーリンク
このドキュメントの内容は、以下の通りです。
- 問い合わせの例
- CQL の実装
- cqlsh
- ヘルプ
- 使い方
- キースペースの作成
- テーブルの作成
- インデックスの作成
- データの格納
- データの参照
- セカンダリインデックスを利用した参照
- カラム数のカウント
- もっと試してみる
- 最初の N 個のカラムのみ取得する
- カラムを逆順に取得する
- 一貫性レベルを指定した問い合わせ
- SELECT WHERE 句
- UPDATE
- truncate
- ブラウザから試す
- PHP pdo cassandra
- Thrift API
- phpcassa (PHP)
- Hector (Java)
- Pycassa (Python)
- CQL
簡単にいうと Cassandra に対して SQL ライクな問い合わせができる言語です。
Cassandra へのデータアクセスの方法がいくつかあります。
問い合わせの例
SELECT * FROM cf WHERE KEY=1
CQL の実装
- 仕様書
- https://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=blob;f=doc/cql3/CQL.textile;h=e0f25da3e7af2db2b96483a2b137b02e46a6ff5b;hb=HEAD
- http://cassandra.apache.org/doc/cql3/CQL.html
- ソース
cqlsh
CQL クライアントとして、cqlsh コマンドが提供されています。
ヘルプ
% apache-cassandra-1.1.0/bin/cqlsh -h Usage: cqlsh [options] [host [port]] CQL Shell for Apache Cassandra Options: --version show program's version number and exit -h, --help show this help message and exit -C, --color Enable color output. -u USERNAME, --username=USERNAME Authenticate as user. -p PASSWORD, --password=PASSWORD Authenticate using password. -f FILE, --file=FILE Execute commands from FILE, then exit --debug Show additional debugging information --cqlversion=CQLVERSION Specify a particular CQL version (default: 2). Examples: "2", "3.0.0-beta1" -2, --cql2 Shortcut notation for --cqlversion=2 -3, --cql3 Shortcut notation for --cqlversion=3 Connects to localhost:9160 by default. These defaults can be changed by setting $CQLSH_HOST and/or $CQLSH_PORT. When a host (and optional port number) are given on the command line, they take precedence over any defaults.
使い方
localhost の Cassandra に接続します。
% cqlsh localhost
cqlsh> help; Documented commands (type help <topic>): ======================================== ASSUME DESC DESCRIBE EXIT HELP SELECT SHOW USE Miscellaneous help topics: ========================== DROP_INDEX CREATE DELETE_WHERE ALTER_DROP DROP_KEYSPACE UPDATE_USING SELECT_EXPR ALTER_ALTER UPDATE_WHERE UUID_INPUT TYPES TIMESTAMP_OUTPUT DELETE_COLUMNS SELECT_COLUMNFAMILY CONSISTENCYLEVEL ALTER_ADD CREATE_COLUMNFAMILY_OPTIONS CREATE_INDEX ALTER_WITH BEGIN CREATE_KEYSPACE APPLY UPDATE_SET ASCII_OUTPUT DELETE_USING UPDATE_COUNTERS DROP CREATE_COLUMNFAMILY_TYPES TRUNCATE TIMESTAMP_INPUT DROP_COLUMNFAMILY INSERT ALTER BLOB_INPUT TEXT_OUTPUT CREATE_COLUMNFAMILY SELECT_WHERE UPDATE DELETE BOOLEAN_INPUT SELECT_LIMIT
キースペースの作成
キースペースのを作成します。
cqlsh> CREATE KEYSPACE ks WITH strategy_class = 'SimpleStrategy' AND strategy_options:replication_factor = 1;
キースペースを選択します。
cqlsh> use ks; cqlsh:ks>
テーブルの作成
CREATE TABLE cf ( KEY text PRIMARY KEY, col1 text, col2 text, col3 text );
インデックスの作成
col1 にインデックスを張る例:
cqlsh:ks> CREATE INDEX col1 ON cf ( col1 );
データの格納
データを格納するには、 INSERT 文を使います。
INSERT INTO cf (KEY, col1, col2, col3) VALUES ('a', 'a1', 'a2', 'a3'); INSERT INTO cf (KEY, col1, col2, col3) VALUES ('b', 'b1', 'b2', 'b3'); INSERT INTO cf (KEY, col1, col2, col3) VALUES ('c', 'c1', 'c2', 'c3');
データの参照
selct でデータの問い合わせをしてみます。
SELECT * FROM cf; SELECT col1, col2, col3 FROM cf;
cqlsh:ks> SELECT * FROM cf; KEY | col1 | col2 | col3 -----+------+------+------ a | a1 | a2 | a3 c | c1 | c2 | c3 b | b1 | b2 | b3 c | b1 | b2 | b3
cqlsh:ks> SELECT col1,col2,col3 FROM cf; col1 | col2 | col3 ------+------+------ a1 | a2 | a3 c1 | c2 | c3 b1 | b2 | b3
SELECT col1..col3 FROM cf;
cqlsh:ks> SELECT col1..col3 FROM cf; col1 | col2 | col3 ------+------+------ a1 | a2 | a3 c1 | c2 | c3 b1 | b2 | b3
キーを指定して、取り出す。
cqlsh:ks> SELECT * FROM cf WHERE KEY = 'a'; KEY | col1 | col2 | col3 -----+------+------+------ a | a1 | a2 | a3 cqlsh:ks> SELECT * FROM cf WHERE KEY = 'd'; KEY | col1 -----+------ d | d1
セカンダリインデックスを利用した参照
cqlsh:ks> SELECT * FROM cf WHERE col1='a1'; KEY | col1 | col2 | col3 -----+------+------+------ a | a1 | a2 | a3
カラム数のカウント
Row に含まれるカラム数を数える。
SELECT COUNT(*) FROM cf;
cqlsh:ks> SELECT count(*) FROM cf; count ------- 3
もっと試してみる
INSERT INTO cf (KEY, col1) VALUES ('d', 'd1');
cqlsh:ks> SELECT col1..col3 FROM cf; col1,a1 | col2,a2 | col3,a3 col1,c1 | col2,c2 | col3,c3 col1,b1 | col2,b2 | col3,b3 col1,d1 cqlsh:ks> SELECT * FROM cf; KEY,a | col1,a1 | col2,a2 | col3,a3 KEY,c | col1,c1 | col2,c2 | col3,c3 KEY,b | col1,b1 | col2,b2 | col3,b3 KEY,d | col1,d1 cqlsh:ks> SELECT count(*) FROM cf; count ------- 4
最初の N 個のカラムのみ取得する
cqlsh:ks> SELECT FIRST 1 * FROM cf; KEY | col1 -----+------ a | a1 c | c1 b | b1 d | d1 cqlsh:ks> SELECT FIRST 2 * FROM cf; KEY,a | col1,a1 | col2,a2 KEY,c | col1,c1 | col2,c2 KEY,b | col1,b1 | col2,b2 KEY,d | col1,d1 cqlsh:ks> SELECT FIRST 3 * FROM cf; KEY,a | col1,a1 | col2,a2 | col3,a3 KEY,c | col1,c1 | col2,c2 | col3,c3 KEY,b | col1,b1 | col2,b2 | col3,b3 KEY,d | col1,d1
カラムを逆順に取得する
cqlsh:ks> SELECT REVERSED * FROM cf; col3,a3 | col2,a2 | col1,a1 | KEY,a col3,c3 | col2,c2 | col1,c1 | KEY,c col3,b3 | col2,b2 | col1,b1 | KEY,b col1,d1 | KEY,d
一貫性レベルを指定した問い合わせ
デフォルトは、ONEになります。
cqlsh:ks> SELECT * FROM cf USING CONSISTENCY ALL; KEY,a | col1,a1 | col2,a2 | col3,a3 KEY,c | col1,c1 | col2,c2 | col3,c3 KEY,b | col1,b1 | col2,b2 | col3,b3 KEY,d | col1,d1
SELECT WHERE 句
SELECT * FROM cf WHERE col1='a1';
SELECT * FROM cf WHERE age > 20;
LIMIT は、デフォルト 10000 が指定されます。
cqlsh:ks> SELECT * FROM cf LIMIT 2; KEY | col1 | col2 | col3 -----+------+------+------ a | a1 | a2 | a3 c | c1 | c2 | c3 cqlsh:ks> SELECT * FROM cf LIMIT 3; KEY | col1 | col2 | col3 -----+------+------+------ a | a1 | a2 | a3 c | c1 | c2 | c3 b | b1 | b2 | b3
UPDATE
cqlsh:ks> UPDATE cf SET col1='a1' WHERE KEY = 'a'; cqlsh:ks> UPDATE cf SET col1='b1' WHERE KEY = 'b'; cqlsh:ks> UPDATE cf SET col1='e1' WHERE KEY = 'e';
UPDATE は、 INSERT のエイリアスで、
UPDATE / INSERT は、同じ処理をします。
cqlsh:ks> UPDATE cf SET col1='e1' WHERE KEY = 'e'; cqlsh:ks> SELECT * FROM cf; KEY,a | col1,a1 | col2,a2 | col3,a3 KEY,e | col1,e1 KEY,c | col1,c1 | col2,c2 | col3,c3 KEY,b | col1,b1 | col2,b2 | col3,b3 KEY,d | col1,d1
存在しない KEY を指定して UPDATE すると新しく Row が作成されます。
truncate
TRUNCATE cf;
ブラウザから試す
Caqel
- ソース https://github.com/eevans/caqel
- ドキュメント http://caqel.deadcafe.org/cql-doc
- デモ http://caqel.deadcafe.org/
- https://twitter.com/jericevans
PHP pdo cassandra
PHP の PDO から Cassandra に CQL でアクセスできるドライバです。
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12