Cassandraについて個人的メモ
はじめに
Cassandraについて
Facebookが自社の大規模DBを管理する為に開発。今は、Apache Foundationが管理しているオープンソースのNoSQLデータベース。
DiggがCassandraを選択した理由
Each system has its own strengths and weaknesses, but Cassandra has a good blend of everything. It offers column-oriented data storage, so you have a bit more structure than plain key/value stores. It operates in a distributed, highly available, peer-to-peer cluster.
それぞれのシステムには強みと弱みがあるが、Cassandraはそれらを適切なバランスで備えていた。カラム指向型データストレージであり、キーバリュー型データストアよりもややデータ構造を備えている。分散構成による高い可用性を持つピア・ツー・ピア型のクラスタで運用できる。
■参考URL
http://www.publickey1.jp/blog/10/twitterdiggnosqlcassandra.html
Cassandraの理解のために最も重要なこと
クラスタ内のノードはリング構造(コンシステントハッシング法)となっており、トークンが割り当てられている。
入門資料
###「Introduction to Cassandra」(2010年6月17日にパロアルトで行われたSilicon Valley Cloud Computing Groupのイベントで使われた資料)
https://www.slideshare.net/gdusbabek/introduction-to-cassandra-june-2010
日本語で読めるCassandraの公式ドキュメント「Cassandra Wiki」公式ドキュメントの翻訳だけでなく、主要なリソースへのリンクもここに集積されています。
Cassandra関連用語
結果整合性を実現する為の仕組み
Gossip Protocol
ノード間の情報をやり取りすることによって最終的なノードの状態をクラスタ内の全てのノードが知ることが出来るようになるアルゴリズム。
データの鮮度を判断して、自分より新しい情報をどこに持っているかを近隣のノード経由で徐々に伝播していく。
Read Repair
読み出したデータが一致しない場合、データを修正する
Hinted HandOff
本来データを保持すべきノードが応答しないとき、データを預かる
Consistency Level
速度優先か、一貫性優先かをレベルに応じて選択できる
Sharding
複数のデータベースにデータを分散して運用
Seed
クラスタのやり取りを行うサーバを設定する
ReplicaPlacementStrategyとReplicaPlacementFactor
・・・Strategyはその名の通り戦略。・・・Factorはレプリカの数を指定。
コマンド
cassandra-cliコマンド
nodetoolコマンド
データ再配置、サーバ監視、バックアップ/リストア、
loadbalanceコマンド
データ展開、他ノードへのデータ移動
関連する一般的な知識(用語)
NoSQL
製品
例えば、MongoDB、AmazonのDynamoDB、GoogleのBigtable、Apache Hadoop、Yahoo!のHBase、 Facebook発のCassandra、 LinkedIn発のVoldemortなど
特徴
RDBが搭載している機能を省き、利用目的や利用範囲を絞ることで、ノード数に素直に比例する性能、ノード数に比例しない運用コスト、伸縮自在、強い障害耐性を持つことを特徴としている。
キーバリュー型(データモデル)
個々の組を識別する情報を「キー」(Key)と呼び、もう片方の情報を「バリュー」(Value、値)と呼びます。キーバリュー型データベースは、このような「キー」と「バリュー」の組を保存するためのデータベースです。
https://thinkit.co.jp/story/2010/10/08/1786
行指向とカラム型(列指向)
最近話題の「カラム型データベース」とはどんな仕組みのデータベースか?
http://www.publickey1.jp/blog/11/post_175.html