CASSANDRA_HOME/conf/storage-conf.xmlは、Apache CassandraのDBを定義する設定ファイル。
Cassandraの起動時に読み込まれ、定義が反映される。
ちなみに、storage-conf.xmlの解釈はDatabaseDescriptorクラスで行われている。
|
storage-conf.xmlはStorageをルート要素とするXMLファイル。
<Storage> <ClusterName>Test Cluster</ClusterName> 〜 </Storage>
| 分類 | 要素名 | ver | デフォルト値 | 備考 | ||
|---|---|---|---|---|---|---|
| 基本設定 | ||||||
| ClusterName | Test Cluster | クラスター名。 | ||||
| AutoBootstrap | 0.5 | false | ||||
| HintedHandoffEnabled | 0.6.2 | true | →HintedHandoff [2010-05-31] | |||
| Keyspaces | (Keyspace1) | キースペースの定義。 | ||||
| Authenticator | 0.6 | 〜.AllowAllAuthenticator | ||||
| Partitioner | 〜.RandomPartitioner | |||||
| InitialToken | ||||||
| SavedCachesDirectory | 0.6.6 | /var/lib/cassandra/saved_caches | [2010-10-21] | |||
| CommitLogDirectory | /var/lib/cassandra/commitlog | コミットログを置くディレクトリー。 | ||||
| DataFileDirectories | データファイルを置くディレクトリー。 | |||||
| DataFileDirectory | /var/lib/cassandra/data | |||||
| Seeds | Cassandraのノード群の指定。 | |||||
| Seed | 127.0.0.1 | |||||
| Miscellaneous | RpcTimeoutInMillis | 10000 | ミリ秒 | 他のノードからの応答が返るまで待つ時間。 デフォルトは10秒。 |
||
| PhiConvictThreshold | 0.6.2 | 8 | [2010-05-31] | |||
| CommitLogRotation ThresholdInMB |
128 | MB | コミットログのローテーションを行うサイズ。 | |||
| Local hosts and ports | ListenAddress | localhost | 他のノードからの接続の為のIPアドレスおよびポート番号。 | |||
| StoragePort | 7000 | |||||
| ThriftAddress | localhost | Cassandra(DBサーバー)が接続を受け付けるIPアドレスおよびポート番号。 | ||||
| ThriftPort | 9160 | |||||
| ThriftFramedTransport | false | |||||
| メモリー・ディスク・パフォーマンス(性能) | ||||||
| DiskAccessMode | auto | |||||
| RowWarningThresholdInMB | 512 | MB | 0.6.6ではデフォルトは「64」。[2010-10-21] | |||
| SlicedBufferSizeInKB | 64 | KB | ||||
| FlushDataBufferSizeInMB | 32 | MB | ||||
| FlushIndexBufferSizeInMB | 8 | MB | ||||
| ColumnIndexSizeInKB | 64 | KB | ||||
| MemtableThroughputInMB | 64 | MB | ||||
| BinaryMemtable ThroughputInMB |
256 | MB | ||||
| MemtableOperationsInMillions | 0.3 | 百万個 | ||||
| MemtableFlushAfterMinutes | 0.5 | 60 | 分 | |||
| ConcurrentReads | 8 | |||||
| ConcurrentWrites | 32 | |||||
| CommitLogSync | periodic | |||||
| CommitLogSyncPeriodInMS | 10000 | ミリ秒 | ||||
| CommitLogSync BatchWindowInMS |
1 | ミリ秒 | この要素自体がデフォルトではコメントアウトされている。 | |||
| GCGraceSeconds | 864000 | 秒 | デフォルトは10日。 | |||
| DoConsistencyChecksBoolean | 0.6.6 | true | Read Repairの有無の制御。[2010-10-21] 無効にすると、スループットが改善するらしい。 |
|||
Keyspace要素でキースペースを定義する。
いわばテーブルの定義に当たる。(RDBのcreate tableに相当する)
Storage/Keyspacesの下に複数のKeyspace要素を記述できる。
定義を変更したら、Cassandraを再起動しないと反映されない。
デフォルトで「Keyspace1」という名前のキースペースが定義されている。
<Storage>
<ClusterName>Test Cluster</ClusterName>
〜
<Keyspaces>
<Keyspace Name="Keyspace1">
<ColumnFamily Name="Standard1" CompareWith="BytesType"/>
<ColumnFamily Name="Standard2"
CompareWith="UTF8Type"
KeysCached="100%"/>
<ColumnFamily Name="StandardByUUID1" CompareWith="TimeUUIDType" />
<ColumnFamily Name="Super1"
ColumnType="Super"
CompareWith="BytesType"
CompareSubcolumnsWith="BytesType" />
<ColumnFamily Name="Super2"
ColumnType="Super"
CompareWith="UTF8Type"
CompareSubcolumnsWith="UTF8Type"
RowsCached="10000"
KeysCached="50%"
Comment="A column family with supercolumns, whose column and subcolumn names are UTF8 strings"/>
<ReplicaPlacementStrategy>org.apache.cassandra.locator.RackUnawareStrategy</ReplicaPlacementStrategy>
<ReplicationFactor>1</ReplicationFactor>
<EndPointSnitch>org.apache.cassandra.locator.EndPointSnitch</EndPointSnitch>
</Keyspace>
</Keyspaces>
〜
</Storage>
| 要素名 | ver | 値の例 | 備考 |
|---|---|---|---|
| ColumnFamily | カラムファミリーの指定。 | ||
| ReplicaPlacementStrategy | 0.6 | 〜.RackUnawareStrategy | データの複製を作る場所のルールのクラス。 |
| ReplicationFactor | 0.6 | 1 | データの複製を作る個数。 |
| EndPointSnitch | 0.6 | 〜.EndPointSnitch |
ReplicaPlacementStrategy・ReplicationFactor・EndPointSnitchは必須。
ColumnFamily要素でカラムファミリーを定義する。
ColumnFamilyの指定は、Name属性だけ必須で、後はオプション。
カラムファミリーはRDBのテーブルに相当するらしいので、ColumnFamily要素を定義するという事は、テーブルを作成する(create
tableを実行する)のに等しい。
ただしカラムファミリー内のカラム名は実行時に動的に指定するので、事前に定義はしない。
また、バイナリーデータであれば何でも入れられるので、カラムの型を定義することも無い。
| 属性名 | ver | 値の例 | 備考 | |
|---|---|---|---|---|
| Name | カラムファミリー名。 名前にはハイフン「-」を含んではいけない。 |
|||
| ColumnType | Standard Super |
省略すると「Standard」になる。 スーパーカラムを持ちたい場合、「Super」を指定する。 |
||
| CompareWith | BytesType AsciiType UTF8Type LongType LexicalUUIDType TimeUUIDType |
Cassandraから複数カラムを取得する際のカラムのソート方法の指定。 AbstractTypeを継承して自分で定義を作ることも可能。 |
||
| CompareSubcolumnsWith | スーパーカラムを持つ場合に指定可能。(サブカラムのソート方法の指定) | |||
| KeysCached | 0.5 100% 200000 |
sstable毎のキーをキャッシュする割合、あるいは個数。(データをキャッシュする訳では無い) 1未満の数値だと割合、末尾に「%」を付けるとパーセント、絶対値だと個数。 デフォルトは20万個。 |
||
| RowsCached | データをメモリー上にキャッシュする割合、あるいは個数。 1未満の数値だと割合、末尾に「%」を付けるとパーセント、絶対値だと個数。 デフォルトは0、すなわちキャッシュされない。 データサイズが大きい、あるいは書き込み頻度が多いカラムファミリーはキャッシュすべきでない。 |
|||
| FlushPeriodInMinutes | 60 | 分 | CLIではdescribe keyspaceコマンドの「flush period」でこの値を表示するようになっているが、storage-conf.xmlで定義しても無視される模様。(cassandra-0.6.1) | |
| Comment | 0.5 | コメントを書ける。(人間向け) storage-conf.xmlにはXML宣言が無いから、日本語を書く場合はデフォルトのエンコーディングであるUTF-8で書かないといけない。 XML宣言でWindows-31Jとかを指定すればシフトJISでも問題なく書ける。 |
||
キャッシュ(KeysCached・RowsCached)でパーセントを指定すると、データ総数が増えればキャッシュされるデータ数も増えていく。