cassandraのインストールから実行まで
■cassandraとは
NoSQLミドルウェアの代表格。
非リレーショナルデータベース。
分散データベース。
Hadoopに比べるとCassandraはリアルタイム処理を得意とし、
一貫性のかわりに可用性を重視している。
Facebookが開発したことで有名。
■通常のSQLとの違い
・クエリ言語がない
クエリ言語ではなく、Thriftを通してアクセスするAPIがあるのみ
※0.8以降でCQLというクエリ言語が登場。
・参照整合性がない
cassandraの場合は参照整合性の概念がなく、joinの考え方がない。
・OrderByやGroupByがない。
SliceRangeクエリがあり、反転できる点でこれがorderbyと似ている。
・Whereがないのにどうやって検索する!?
select * from Hotel where name = 'royalpark';
を実現する為に
Hotelカラムファミリとは別にHotelByNameカラムファミリをインデックス構築する
・1つ以上の複数ノードで動くことを前提に作られている(データのレプリケーションは自動的に行われる)
■設計上の注意
・クエリから取り掛かる
■cassandraではドライバは用意されていない
例えばPythonを使用する場合、Python用のCassandraドライバを使用する
というようなことはしない。っていうかない。
ThriftAPIによって提供されるクライアントの生成レイヤを使用する
■クライアントソフト
CassandraWebConsoleを使用
■JDKのインストール
#yum install fastest-mirror #yum search jdk #yum install java-1.6.0-openjdk* #which java #/usr/bin/java
■Cassandraのインストール
wget http://fossies.org/unix/misc/apache-cassandra-1.0.7-bin.tar.gz tar xzvf apache-cassandra-1.0.7-bin.tar.gz mv apache-cassandra-1.0.7 /usr/local/ ln -s /usr/local/apache-cassandra-1.0.7/ /usr/local/cassandra cd /usr/local/cassandra //cp conf/log4j.properties.sample conf/log4j.properties //cp conf/storage-conf.xml.sample conf/storage-conf.xml 実行 /usr/local/cassandra/bin/cassandra
■phpcassa
# wget https://github.com/downloads/thobbs/phpcassa/phpcassa-0.8.a.2.tar.gz # tar -zxvf phpcassa-0.8.a.2.tar.gz # cp -R phpcassa-0.8.a.2 /usr/local/phpcassa # cd /usr/local/phpcassa/thrift/ext/thrift_protocol # phpize # ./configure # make && make install
(参考)
http://d.hatena.ne.jp/yuki_2021/touch/searchdiary?word=*%5BPHP%5D
/usr/local/phpcassa/thrift/ext/thrift_protocol/php_thrift_protocol.cpp:404: error: 'zend_std_get_constructor' was not declared in this scope
make: *** [php_thrift_protocol.lo] Error 1
と怒られた場合-->PHP5.2以下であれば5.2以上にあげること。
https://wiki.fourkitchens.com/display/PF/Using+Cassandra+with+PHP
■設定ファイルの確認
vim /usr/local/cassandra/conf/cassandra.yaml
■バージョン確認
[root]# /usr/local/cassandra/bin/cassandra-cli --host localhost --port 9160 show api version show cluster name
■Cassandra-CLIの立ち上げ
#起動する /usr/local/cassandra/bin/cassandra-cli --host localhost --port 9160 Connected to: "Test Cluster" on localhost/9160 Welcome to Cassandra CLI version 1.0.7 [default@unknown] connect localhost/9160; [default@unknown] show cluster name; [default@unknown] set Keyspace1.Standard2['unoh']['age']='25' [default@unknown] get Keyspace1.Standard2['unoh'] [default@unknown] set Keyspace1.Standard2['unoh']['age']='25'
#起動ノードの確認
[root]# jps 6202 Jps 26603 CassandraDaemon
■Cassandraの操作メモ
#キースペースの確認
[default@unknown] show keyspaces; Keyspace: system:
#キースペースの作成 (create databaseみたいな感じ)
[default@unknown]create keyspace MyKeyspace;
#キースペースの削除 (drop databaseみたいな感じ)
[default@unknown]drop keyspace MyKeyspace;
#キースペースの選択
use MyKeyspace;
#カラムファミリの作成 (create tableみたいな感じ)
[default@MyKeyspace] create column family User with comparator=UTF8Type and default_validation_class=UTF8Type and key_validation_class=UTF8Type;
#カラムファミリの確認 (show tables みたいな感じ)
[default@MyKeyspace] describe MyKeyspace;
#カラムファミリの削除
[default@MyKeyspace] drop column family User;
#カラムファミリ内のデータを列挙(select * from)
[default@unknown] list User;
#カラムファミリ内のデータを空にする(truncate table from)
[default@unknown] truncate User;
#カラムファミリ内にデータを追加する(insert)
[default@MyKeyspace]set User['ehewitt']['fname']='Eben'; [default@MyKeyspace]set User['ehewitt']['email']='me@example.com';
#カラムファミリ内のデータを検索、カウントする(select)
[default@MyKeyspace]cout User['ehewitt']; [default@MyKeyspace]get User['ehewitt']; [default@MyKeyspace]get User['ehewitt']['email'];
#スーパーカラムファミリの作成
[default@MyKeyspace]create aPointOfUser with column_type = Super and comparator = UTF8Type and subcomparator = UTF8Type;
※setする場合に
cannot parse 'fname' as hex bytes
と怒られる場合はset時にascii()で文字を入れるか、
create column familyでUTF8Typeを指定すること!
■その他
・IBMLotus
CouchDB,MongoDBなどドキュメント指向データベースの元。
・ApacheCouchDB
LotusNotesに似たデータベース。
MVCCとよばれる機能が特徴的。読込が書き込みをブロックせず、書き込みも読込をブロックしない。
ドキュメントを保存する場合すべての書き込みは追記で行われ、データの破損を起こりにくくしている。
・MongoDB
キーバリューストア、オブジェクトデータベース、RDBMSの良い点を組み合わせることを意図。
・Google Bigtable
Google内部で使用されているデータベース。
ペタバイトのオーダーでスケールするように設計。
BigTableの設計上の多くはcassandraにも反映されている。
・FlockDB
TwitterがGitHubでオープンソース化したデータベース。
・AmazonDynamo
Amanzon専用のキーバリューストレージシステム。
■参考
http://labs.unoh.net/2010/08/cassandra.html
http://wiki.apache.org/cassandra/FAQ_JP
phpcassa
http://d.hatena.ne.jp/yuki_2021/touch/searchdiary?word=*%5BPHP%5D