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>": { ... },
...
}
}
version
2
. (このページに記述されている仕様はこの値が2
のときのみ有効です)effectiveDate
datasets
データセット名をキーとし、dataset
定義 を値とするオブジェクト。
nWorkers
dataset
とvolume
の定義でオーバライドできます。A version 2 catalog effective after 2013-09-01T00:00:00Z
, with no datasets:
{
"version": 2,
"effectiveDate": "2013-09-01T00:00:00Z",
"datasets": {
}
}
plugins
dataset
とvolume
の定義でオーバライドできます。schema
table
定義を値とするオブジェクト。dataset
とvolume
の定義でオーバライドできます。fact
dataset
が複数のslice
に格納される場合、schema
パラメータで定義されたテーブルの中から、1つfact tableを選択する必要があります。dataset
とvolume
の定義でオーバライドできます。replicas
volume
定義の配列。データベースインスタンスに1つにつき4ワーカーを持ち、プラグインgroonga
、crud
、search
を使用するデータセット:
{
"nWorkers": 4,
"plugins": ["groonga", "crud", "search"],
"schema": {
},
"replicas": [
]
}
type
"Array"
: キーの無いテーブル"Hash"
: ハッシュテーブル"PatriciaTrie"
: パトリシアトライテーブル"DoubleArrayTrie"
: ダブル配列トライテーブル"Hash"
keyType
type
が"Array"
の場合は指定してはいけません。"Integer"
: 64bit 符号付き整数。"Float"
: 64bit 浮動小数点数。"Time"
: マイクロ秒精度の時刻。"ShortText"
: 4095バイトまでの文字列。"TokyoGeoPoint"
: 旧日本測地系による経緯度。"WGS84GeoPoint"
: WGS84 による経緯度。tokenizer
keyType
が"ShortText"
である場合にのみ有効です。"TokenDelimit"
"TokenUnigram"
"TokenBigram"
"TokenTrigram"
"TokenBigramSplitSymbol"
"TokenBigramSplitSymbolAlpha"
"TokenBigramSplitSymbolAlphaDigit"
"TokenBigramIgnoreBlank"
"TokenBigramIgnoreBlankSplitSymbol"
"TokenBigramIgnoreBlankSplitSymbolAlpha"
"TokenBigramIgnoreBlankSplitSymbolAlphaDigit"
"TokenDelimitNull"
normalizer
keyType
が"ShortText"
である場合にのみ有効です。"NormalizerAuto"
"NormalizerNFKC51"
columns
column
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.vectorOptions
vectorOptions
definition{}
(Void object).indexOptions
indexOptions
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"
]
}
}
weight
true
or false
).false
.Store the weight data.
{
"weight": true
}
section
true
or false
).false
.weight
true
or false
).false
.position
true
or false
).false
.sources
valueType
.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つの組み合わせごとに、複数のインスタンス名を使うことができます。dimension
columns
からスカラー型のカラムを選択します。dimensionを参照してください。"_key"
dataset
とvolume
の定義でオーバライドできます。slicer
"hash"
dataset
とvolume
の定義でオーバライドできます。slices
の集合からなるボリュームを定義するためには、レコードを複数のスライスに振り分けるための方法を決める必要があります。
slice
で指定されたスライサー関数と、スライサー関数への入力として与えられるdimension
で指定されたカラム(またはキー)によって、それが決まります。
スライサーは以下の3種類に分けられます:
hash
{High, Middle, Low}
など)に基づいて振り分けます。
この種類のスライサー:
slices
slice
定義の配列。“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"
}
}
]
weight
slicer
が atio-scaledの場合のみ有効。1
label
label
is allowed in slices.boundary
slicer
の返す値と比較可能な具体的な値。slicer
がordinal-scaledの場合のみ有効。boundary
is allowed in a slices.volume
volume
定義オブジェクト
ratio-scaledなスライサーのためのスライス、重みは1
{
"weight": 1,
"volume": {
}
}
nominal-scaledなスライサーのためのスライス、ラベルは "1"
{
"label": "1",
"volume": {
}
}
ordinal-scaledなスライサーに対するスライス、境界値は100
:
{
"boundary": 100,
"volume": {
}
}
基本的な使い方のチュートリアルに登場するカタログを参照してください。