気ままなつぶやき

おべんきょしたこととか

【cassandra】ちら見

ちらっとcassandraにふれる機会があった。
ちらっとググったり、

同期の机の上に置いてるこの本を、同期のいない間に盗み見したメモ。
※まだ3章までです。。

Cassandra

完全につまみ読みしますた。間違ったこと書いてたらごめんなさい

1章 Cassandraとは

どっかんとすっとばして、

1.3 Cassandra概要:エレベーターピッチ

エレベーターピッチって概要ってことなんだ。へえ。
ニッポンゴ不自由なので知らなかった。

  • 複数のマシン上で「分散」して動作できる。DCまたぐのもいけるぜ
  • マスターが存在しないから、単一障害点がないので、高可用性
  • P2P設計。ノード間の管理はゴシッププロトコル。
  • スケールアウトも簡単っぽい。スケールダウンもしかり
  • 一貫性については、利用する側(クライアント)が、パフォーマンスとトレードオフで設定できる。

 一貫性の強度?については、更新処理におけるブロックするレプリカ数を制御することで決定する

  • CAP定理でいうところのAP寄り。
  • ロウ指向
  • 実行したいクエリを設計し、クエリに合わせてデータを設計する

なるほど。クエリから設計するのか。RDBMSとかと思想がちがうのねー。

3章 Cassandraのデータモデル

3.2 簡単な概要~3.7スーパカラム

なんかどうしてもRDBMSによく触れてきたので、そのイメージをしてしまった。。

カラムファミリ

カラムファミリは、RDBMSでいうところのテーブルに近いかなー。
ちょっと違うけど。

  • 名前
  • コンパレータ(カラムがどうソートされるか。UTF8Type, LongType,...etc.)


[本に載ってた例を、勝手に好きなMusicianとかに変えた例]

Musician:                                   ----カラムファミリ
  LADY_GAGA:                            ----ロウキー
    love_song: born this way        ----カラム
    sex:women                             ----カラム
  John_Lenon:                              ----カラムファミリ(ry
    love_song:
    sex:men
Band:                                          ----カラムファミリ(ry
  Beatles:

カラム: name, valueから成る
ロウ: カラムの集合を持つ。
ロウキー: ロウのユニークな識別子
カラムファミリ:カラムをまとめたものの分割単位

カラムには、サーバサイドの衝突解決のためだけに使用されるタイムスタンプがあるよ

キースペース

RDBMSでいうところのスキーマ

クラスタ

リング上に配置したクラスタにデータを配置してるよ。

[cassandraの管理ツールの図]
f:id:pnsk:20120523001935p:plain

萌。

スーパーカラムファミリ

カラムファミルの集合。

サブカラムのインデックスは作成しないので、スーパーカラムをメモリ上にロードすると
そのすべてのカラムがロードされてしまう。

自分が直近使う予定ないのでさらり。さらさらさらり

3.8 RDBMSとCassandraの違い

クエリ言語

v0.8以前、なし
v0.8以降、CQL

参照整合性がない
セカンダリインデックス

v0.7からサポートされたよ

ソートは設計での決定事項である

クエリ毎に変更できないよ。
comparator要素できめるよ

非正規化

クエリをまず作ってからデータ構造を考える

3.10 注意点

  • クエリからきめること
  • どのクエリが一番最近実行されたものか知るために、各クエリにタイムスタンプを与える必要がある。

 サーバでNTPを利用するとか必要ですよ。

なるほど。Hadoopめったんこ使ってる同期がNTP気にしてたのも関係あるのかな。

ふひー。

今度5章読もう