スポンサーリンク

このドキュメントの内容は、以下の通りです。

  • 問い合わせの例
  • CQL の実装
  • cqlsh
  • Cassandra の CQL とは、 Cassandra Query Language の略です。
    簡単にいうと Cassandra に対して SQL ライクな問い合わせができる言語です。

    Cassandra へのデータアクセスの方法がいくつかあります。

    • Thrift API
    • phpcassa (PHP)
    • Hector (Java)
    • Pycassa (Python)
    • CQL
    Thrift API を利用するよりも簡単にデータの問い合わせをすることが可能です。

    問い合わせの例


    SELECT * FROM cf WHERE KEY=1
    

    CQL の実装


    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

    PHP pdo cassandra


    PHP の PDO から Cassandra に CQL でアクセスできるドライバです。

    スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 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

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー