Skip to main content

Cassandra: The Definitive Guideの13章と15章を読んだ

Cassandra: The Definitive Guideの8章と9章を読んだ
の続編

13章はPerformance Tuning
15章はMigrating and Integrating

仕事だと監視系は委託するので、これにて読みたいところは全部読み切りました


・統計情報を出す
全体のREAD,WRITEのLATENCYがわかる

nodetool proxyhistograms

テーブルごとのレイテンシ情報

nodetool tablehistograms hotel available_rooms_by_hotel_date
#keyspace_name table_nameの順番で角

 

・トレース
TRACING ON
をしてからクエリを実行すると詳細情報が取れる
TRACING OFF
で元に戻せる

 

・キャッシュについての前提
RowキャッシュはReadが重い時のみ
キャッシュの量はheapを超えないようにする
Keyに対するRowのサイズを考える

 

・Keyキャッシュ
Keyキャッシュはメモリを多く消費せずにパフォーマンスを向上できる
Keyキャッシュが有効化どうかの調べ方

cqlsh:reservation> DESCRIBE hotel.hotel;
#以下を確認
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}

 

・Rowキャッシュ
Keyだけでなくよく使うRowのデータすべてをキャッシュすることで速度向上を図る
ただし、メモリはかなり食う
そして、設定を間違えるとむしろパフォーマンスが落ちるので注意
rows_per_partitionで何行キャッシュするか指定する

cqlsh:reservation> DESCRIBE hotel.hotel;
#以下を確認
    AND caching = {'keys': 'ALL', 'rows_per_partition': '200'}

 

・Cassandraに移行を考える時
データのボリュームや複雑なクエリでパフォーマンスが悪い
スケールしたい
可用性を高めたい
ライセンス料金が高い
複雑なクエリやStored procedureによりメンテナンスコストが高い

 

・RDBMSからの移行方法
間接的移行
リバースエンジニアリングしてコンセプトモデルを作る
ワークフローを確認してアクセスパターンを洗い出す
直接的移行
RDBMSから直接Cassandraに移行する

移行時はセカンダリインデックスよりも非正規化する方がオススメ

 

・UDF
User Definied Functionの略
CREATE FUNCTIONで関数を定義できる

 

・エキスポートとインポート
COPYコマンドでファイルを出力できる

COPY hotel.hotel TO 'hotel.csv' WITH HEADER = TRUE;

以下でリストア

COPY hotel.hotel FROM 'hotel.csv' WITH HEADER = true ;

 

こうして最後まで読みました
Cassandraの本だったらこの本がベストかなと思います
Cassandraを使うようになったらぜひどうぞ

 

関連記事:

Pocket