ミッションたぶんPossible

どこにでもいるシステムエンジニアのなんでもない日記です。たぶん。

storage-conf.xmlでのKeyspaceとColumnFamily設定内容解説

Cassandraのデータ定義はstorage-confirm.xmlに記述します。
こちらにもちらっと書きましたが、この辺をちゃんと抑えて無くて結構困ったので、一念発起して調べてみました。とりあえずKeyspaceとColumnFamilyの指定のみです。

<Keyspace Name="Keyspace1">
	<ReplicaPlacementStrategy>org.apache.cassandra.locator.RackUnawareStrategy</ReplicaPlacementStrategy>

	<ReplicationFactor>1</ReplicationFactor>

	<EndPointSnitch>org.apache.cassandra.locator.EndPointSnitch</EndPointSnitch>

		<ColumnFamily Name="userlog"
			ColumnType="Super"
			CompareWith="BytesType"
			KeysCached="1000"
			RowsCached="100"
			RowCacheSavePeriodInSeconds="0"
			KeyCacheSavePeriodInSeconds="3600"/>
</Keyspace>
  • Keyspace
    • Keyspaceを指定。RDBのDBに相当。name属性でKeyspace名を指定できる。
    • ReplicaPlacementStrategy
      • データの複製を作る場所のルールを示すクラスの名称を指定。基本デフォルトでOK。
    • ReplicationFactor
      • データの複製を作る個数を指定。
    • EndPointSnitch
    • -
    • ColumnFamily
      • ColumnFamilyを指定。RDBのテーブルに相当。指定できる属性は以下で説明。
        • Name
          • ColumnFamily名(RDBでいうテーブル名)。「-(ハイフン)」は使用できない。
        • ColumnType
          • SuperColumnを持つか否かの指定。「Standard」もしくは「Super」を指定できる。SuperColumnを持つ場合には「Super」を指定する。「Standard」を指定した場合、もしくはColumnType属性の指定を省略した場合にはSuperColumnは持たない。省略すると「BytesType」が指定される。
        • CompareWith
        • CompareSubcolumnsWith
          • データを複数取得(get)した際の並び替え方法を指定。「BytesType」「AsciiType」「UTF8Type」「LongType」「LexicalUUIDType」「TimeUUIDType」を指定できる。CompareSubcolumnsWithはSuperColumnを持つ場合に、サブカラムのSort方法を指定する為の属性。
        • KeysCached
          • keyをキャッシュする割合、あるいは個数。1未満(ex:0.5)や%(ex:25%)だと割合、絶対数(ex:3600)だと個数を指定できる。デフォルトは20万個
        • RowsCached
          • カラムをキャッシュする割合、あるいは個数。指定ルールはKeysCachedと同じ。デフォルトは0(キャッシュされない)。
        • RowCacheSavePeriodInSeconds
        • KeyCacheSavePeriodInSeconds
          • keyもしくは行の自動保存の周期を秒単位で指定できる。デフォルトは0(自動保存しない)。
        • Comment
          • コメント。人間が読む為のものなので、必要に応じて書けばOK


とりあえず動かしたいだけなら、タグの指定に関してはCompareWithとColumnTypeだけ覚えとけばなんとかなる気がしますw。