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)でパーセントを指定すると、データ総数が増えればキャッシュされるデータ数も増えていく。