arcanum_jp’s blog

おっさんの日記

Cassandra

Cassandra.yaml

 Cassandra0.7系から設定ファイルがstorage-conf.xmlからCassandra.yamlに変わったらしい。僕は0.7系から入る人だからあまり関係ないけどね。その中でもKeyspaceの項目を調べてみた。cassandra.yamlにあるキースペースの設定と、ソースと、Webの検索から項目を軽く追ってきたけど、値に何を入れればいいのかわかんないのがあったり、ここから外れている項目もある(comparator?とかね。どこに所属する項目か分からないので無視)あと、項目の値がどんな意味をもっているのかも無視。ここではkeyspacesのフォーマットを中心に見ている。

  • 設定はYamlフォーマットで書くらしい
  • タブは使っちゃいけないらしい
  • インデントは半角スペース2文字で
keyspaces:
..- name: キースペース名
....[reprica_placement_strategy: クラス名]
....[stragegy_options:
......- name: value
........name: value
................. ・・・省略 ]
....replication_factor: 数値
....column_families
......- name: カラムファミリ名
........[column_type: カラムタイプ名 Super/Standard(デフォルト)]
........[compare_with: ソート方法 BytesType(デフォルト) / AsciiType / UTF8Type / LexicalUUIDType / TimeUUIDTipe / LongType / InegerType]
........[clock_type: 値 ]
........[reconciler: 値]
........[compare_subcolumns_with: サブカラムのソート方法]
........[keys_cached: 数値(デフォルト=200,000)]
........[rows_cached: 数値(デフォルト=0)]
........[comment: 'コメント']
........[read_repair_chance: 0〜1の間の数値(デフォルト=1.0)]
........[preload_row_cache: true/false(デフォルト=false)]
........[gc_grace_seconds: 秒数(デフォルト=864,000(10日))]

      - name: カラムファミリ名
            ... 以下、カラムファミリの設定。

      - name: カラムファミリ名
            ... 以下、カラムファミリの設定。
  • ..は半角スペース2桁を表す
  • []はオプショナルな設定を表す
  • keyspacesには"system"と"definitions"は予約語なので使えない
  • reprica_placement_strategyは次の3つが提供されている。
    • org.apache.cassandra.locator.RackUnawareStrategy (デフォルト)
    • org.apache.cassandra.locator.RackAwareStrategy
    • org.apache.cassandra.locator.DatacenterShardStrategy
  • clock_typeは、compare_withがTimeUUIDTipeのときに指定できるっぽい。
  • clock_typeは、現状は'Timestamp'のみっぽい。
  • compare_subcolumns_withで指定できる値は、compare_withを参照


先日書いた、ブログを例にとった場合、次のような感じだろうか。

keyspaces:
  - name: Blogspace
    column_families:
      - name: Weblog
        column_type: Super
        
      - name: Mypage
        column_type: Super


 こうしてみると、とりあえず複製とか考えずに動かすにはキースペース名と、カラムファミリ名、あと、中にスーパーカラムかカラムが入るのかさえ決めてやれば後はどうにでもなるのかな?

参考

ここが大変参考になります。

YAML とは、構造化されたデータを表現するためのフォーマットです。目的は XML と似ていますが、XML と比べて「読みやすい」「書きやすい」「わかりやすい」という利点があります。

また YAML はあくまで「仕様」であり、それを処理するライブラリの「実装」が必要です。 Ruby 1.8 では Syck というライブラリが標準で含まれています。

るびま


中身を改行で表現する方法。Cassandra.yaml内ではコメントを改行して書けないのかなと思い調べてたらヒットしました。

テーマのインポーターでウェブページの要素を記述していたんですが、理解している範囲のYAMLの書き方だと、そもそも複数行にわたる「本文」や「続き」を書く事が出来ない。改行すると、それは別な要素(?という言い方が正しいかは別にして)として扱われるので、今までは改行抜きで記述していたんです。

http://www.zelazny.mydns.jp/archives/002709.php