CatalogはDroongaクラスタの設定を管理するためのJSONデータです。Droongaクラスタは1つ以上のdatasetsからなり、datasetはその他の部分からなります。それらは全てcatalogに記述し、クラスタ内の全てホストで共有しなければなりません。
この version の catalog は Droonga 1.0.0 以降で有効です。
{
"version": <Version number>,
"effectiveDate": "<Effective date>",
"datasets": {
"<Name of the dataset 1>": {
"nWorkers": <Number of workers>,
"plugins": [
"Name of the plugin 1",
...
],
"schema": {
"<Name of the table 1>": {
"type" : <"Array", "Hash", "PatriciaTrie" or "DoubleArrayTrie">
"keyType" : "<Type of the primary key>",
"tokenizer" : "<Tokenizer>",
"normalizer" : "<Normalizer>",
"columns" : {
"<Name of the column 1>": {
"type" : <"Scalar", "Vector" or "Index">,
"valueType" : "<Type of the value>",
"vectorOptions": {
"weight" : <Weight>,
},
"indexOptions" : {
"section" : <Section>,
"weight" : <Weight>,
"position" : <Position>,
"sources" : [
"<Name of a column to be indexed>",
...
]
}
},
"<Name of the column 2>": { ... },
...
}
},
"<Name of the table 2>": { ... },
...
},
"fact": "<Name of the fact table>",
"replicas": [
{
"dimension": "<Name of the dimension column>",
"slicer": "<Name of the slicer function>",
"slices": [
{
"label": "<Label of the slice>",
"volume": {
"address": "<Address string of the volume>"
}
},
...
}
},
...
]
},
"<Name of the dataset 2>": { ... },
...
}
}
version2. (このページに記述されている仕様はこの値が2のときのみ有効です)effectiveDatedatasetsデータセット名をキーとし、dataset 定義 を値とするオブジェクト。
nWorkersdatasetとvolumeの定義でオーバライドできます。A version 2 catalog effective after 2013-09-01T00:00:00Z, with no datasets:
{
"version": 2,
"effectiveDate": "2013-09-01T00:00:00Z",
"datasets": {
}
}
pluginsdatasetとvolumeの定義でオーバライドできます。schematable 定義を値とするオブジェクト。datasetとvolumeの定義でオーバライドできます。factdatasetが複数のsliceに格納される場合、schemaパラメータで定義されたテーブルの中から、1つfact tableを選択する必要があります。datasetとvolumeの定義でオーバライドできます。replicasvolume 定義の配列。データベースインスタンスに1つにつき4ワーカーを持ち、プラグインgroonga、crud、searchを使用するデータセット:
{
"nWorkers": 4,
"plugins": ["groonga", "crud", "search"],
"schema": {
},
"replicas": [
]
}
type"Array": キーの無いテーブル"Hash": ハッシュテーブル"PatriciaTrie": パトリシアトライテーブル"DoubleArrayTrie": ダブル配列トライテーブル"Hash"keyTypetypeが"Array"の場合は指定してはいけません。"Integer" : 64bit 符号付き整数。"Float" : 64bit 浮動小数点数。"Time" : マイクロ秒精度の時刻。"ShortText" : 4095バイトまでの文字列。"TokyoGeoPoint" : 旧日本測地系による経緯度。"WGS84GeoPoint" : WGS84 による経緯度。tokenizerkeyTypeが"ShortText"である場合にのみ有効です。"TokenDelimit""TokenUnigram""TokenBigram""TokenTrigram""TokenBigramSplitSymbol""TokenBigramSplitSymbolAlpha""TokenBigramSplitSymbolAlphaDigit""TokenBigramIgnoreBlank""TokenBigramIgnoreBlankSplitSymbol""TokenBigramIgnoreBlankSplitSymbolAlpha""TokenBigramIgnoreBlankSplitSymbolAlphaDigit""TokenDelimitNull"normalizerkeyTypeが"ShortText"である場合にのみ有効です。"NormalizerAuto""NormalizerNFKC51"columnscolumn definition.ShortText型のキーを持つHashテーブルで、カラムは無いもの:
{
"type": "Hash",
"keyType": "ShortText",
"columns": {
}
}
TokenBigramトークナイザとNormalizerAutoノーマライザを利用するPatriciaTrieテーブル
{
"type": "PatriciaTrie",
"keyType": "ShortText",
"tokenizer": "TokenBigram",
"normalizer": "NormalizerAuto",
"columns": {
}
}
An object with the following key/value pairs.
type"Scalar": A single value."Vector": A list of values."Index" : A set of unique values with additional properties respectively. Properties can be specified in indexOptions."Scalar"valueType"Bool" : true or false."Integer" : 64bit signed integer."Float" : 64bit floating-point number."Time" : Time value with microseconds resolution."ShortText" : Text value up to 4,095 bytes length."Text" : Text value up to 2,147,483,647 bytes length."TokyoGeoPoint" : Tokyo Datum based geometric point value."WGS84GeoPoint" : WGS84 based geometric point value.vectorOptionsvectorOptions definition{} (Void object).indexOptionsindexOptions definition{} (Void object).ShortTextを格納するスカラー型のカラム:
{
"type": "Scalar",
"valueType": "ShortText"
}
A vector column to store ShortText values with weight:
{
"type": "Scalar",
"valueType": "ShortText",
"vectorOptions": {
"weight": true
}
}
Storeテーブルのaddressカラムをインデックスするカラム:
{
"type": "Index",
"valueType": "Store",
"indexOptions": {
"sources": [
"address"
]
}
}
weighttrue or false).false.Store the weight data.
{
"weight": true
}
sectiontrue or false).false.weighttrue or false).false.positiontrue or false).false.sourcesvalueType.Store the section data, the weight data and the position data.
Index name and address on the referencing table.
{
"section": true,
"weight": true,
"position": true
"sources": [
"name",
"address"
]
}
slices の集合で構成されます。ボリュームが単一のデータベースインスタンスから構成される場合は、addressパラメータを指定しなければなりません。このとき、それ以外のパラメータを指定してはいけません。そうでない場合は、dimensionとslicerとslicesが必須で、他は指定してはいけません。address${host_name}:${port_number}/${tag}.${name}
host_name: データベースのインスタンスを保持するホストの名前。port_number: データベースのインスタンスのためのポート番号。tag: データベースのインスタンスのタグ名。タグ名には.を含めることはできません。ホスト名とポート番号のペアごとに、複数のタグを使うことができます。name: データベースのインスタンスの名前。あるホスト名・ポート番号・タグ名の3つの組み合わせごとに、複数のインスタンス名を使うことができます。dimensioncolumnsからスカラー型のカラムを選択します。dimensionを参照してください。"_key"datasetとvolumeの定義でオーバライドできます。slicer"hash"datasetとvolumeの定義でオーバライドできます。slicesの集合からなるボリュームを定義するためには、レコードを複数のスライスに振り分けるための方法を決める必要があります。
sliceで指定されたスライサー関数と、スライサー関数への入力として与えられるdimensionで指定されたカラム(またはキー)によって、それが決まります。
スライサーは以下の3種類に分けられます:
hash{High, Middle, Low}など)に基づいて振り分けます。
この種類のスライサー:
slicesslice 定義の配列。“localhost:24224/volume.000”にあるボリューム:
{
"address": "localhost:24224/volume.000"
}
3つのスライスから構成され、_keyに対してratio-scaledなスライサー関数hashを適用してレコードを分散させるボリューム
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{
"volume": {
"address": "localhost:24224/volume.000"
}
},
{
"volume": {
"address": "localhost:24224/volume.001"
}
},
{
"volume": {
"address": "localhost:24224/volume.002"
}
}
]
weightslicerが atio-scaledの場合のみ有効。1labellabel is allowed in slices.boundaryslicerの返す値と比較可能な具体的な値。slicerがordinal-scaledの場合のみ有効。boundary is allowed in a slices.volumevolume 定義オブジェクト
ratio-scaledなスライサーのためのスライス、重みは1
{
"weight": 1,
"volume": {
}
}
nominal-scaledなスライサーのためのスライス、ラベルは "1"
{
"label": "1",
"volume": {
}
}
ordinal-scaledなスライサーに対するスライス、境界値は100:
{
"boundary": 100,
"volume": {
}
}
基本的な使い方のチュートリアルに登場するカタログを参照してください。