今IT系で一番熱い話題になってる!?NoSQLの勉強会をきしださんがされるとの事で行ってきました。
http://atnd.org/events/6414
きしださんの話面白かったです。
個人的にはMongoDBが超気に入りました。
設定も運用も楽にできそうです。
NoSQL関係ない所で気に入ったのが、デモでHBaseと連携させていたScara。
いい言語なのね。
でもHBaseは導入が難しそう。Hadoopやるなら、今のところHBaseが一番ベタなんだけどね。
Cassandoraも簡単な設定、高可用性なイメージです。
Hadoopとどこまで連携がスムーズになるか次第で伸びそうです。
でもやっぱりMongoDBだな。
UStream
http://www.ustream.tv/channel/mikage014#utm_campaign=hootsuite.com&utm_source=3103065&utm_medium=social
落書き程度にメモった内容をそのまま載せます。
◎概略
NoSQLの書込み
一旦タスクキューに入れるタスクが流れると一貫性が保たれる
BASEトランザクション
NoSQLの種類
・KVScassandora
memcached
BarklayDB
※コンシステントハッシングなどの分散アルゴリズム
Bucket-Key-Value
格納するサーバグループを指定するキーをもつ
・ドキュメント指向DB:文書の格納に特化、KVSベースでもできる
CouchDB
MongoDB
LotusNotes
・グラフ指向DB
Neo4J←????なんじゃこりゃ。。
HBase
@ueshinカラム指向分散DB
Bigtableを参考、Hadoop上に構築
特徴
・自動シャーディング・テーブル構造が柔軟
・インデックスがない
・クエリが単純
・HadoopMapReduceサーポート
・一貫性、CAS操作
・高可用性
・クラスタのモニタリングと監視
データモデル
・行の特定にRowKey・あるカラムファミリーに対して、任意の数のカラムを持てる
ACID特性
1つのRowに対するロックRow内のデータ更新をAtomicに実行可
Row内のデータのComststencyは保証
複数のRowは保証されない
ZooKeeperクラスタにリージョンを問い合わせる
クライアントはRegionServerにメタデータを取得しにいく
書込
Regionサーバに書込↓
メモリキャッシュに追加
↓
コミットログ追記
↓
フラッシュ
読込
メモリキャッシュに問合せ↓
フラッシュに問合せ
Compactions
minor compacionフラッシュファイルの数が増えると1つにまとめる
major compaction
リージョンに属する全てのフラッシュファイルを定期的にひとつに
リージョン分割
フラッシュファイルが増えるとリージョンに分割
http://hadoop.happy-camper.st/
設定上の注意
メモリ食うファイルを開きっぱなしにするので、ulimitを拡張しておく
今後
Pig、Hive対応MongoDB
特徴
・スキーマレス・コレクション指向
・NotKVS
・BSON
・Query
・IndexSuport
・MapReduce
テーブル→コレクション
レコード→ドキュメント
Cassandora
特徴
・単一故障点(SPOF)がない・書込みに強い
メモリ+シーケンシャルライト
・ノードスケール
・スキーマレス
・ThriftによるシンプルなAPI
言語は自由
※Avro
・チューン可能な一貫性
一貫性の強弱とレイテンシのバランスが取れる
・開発が容易
・運用管理の容易性
全体停止を伴わない
CAP(Consistency,Availability,PortitionTolerance)定理
APを選択Cは選択性
データモデル
・キースペース・カラムファミリ
・スーパーカラム
カラムの集合
・カラム
ConsistencyLevel
・One:クラスタから最初に帰ってきた結果・QUORUM:レプリケーション数/2+1→レプリケーション数は奇数が基本。
・ALL:レプリケーション数分の結果
一貫性を上げれば、レイテンシも上がる。
基本はQUORUMを検討
パーティショニング
キーをベースにトークンを計算・ランダム
MD5ハッシュ値で分散。均等に散らばるがレンジスキャンが遅くなる
・オーダーリザーブ
順序を維持して保存
レンジスキャンは早いが、ノード上データが不均等になるので一部遅い
一貫性の維持
・リードリペア・ヒントハンドオフ
・アンチエントロピー
CassandoraはAP
HBaseはCP
一貫性の方向性が違う
HBaseはHadoopと親和性が高い
Cassandoraは部分死を受け入れて、一貫性は後で解決
HBaseは片方の島を落とす
HBaseはHadooop依存なのでマスターノードが単一障害点になる

