7.3.56. schema
#
7.3.56.1. 概要#
Added in version 5.0.9.
schema
コマンドはデータベース内のスキーマを返します。
このコマンドはデータベースの詳細を知りたいときに便利です。たとえば、データベースを視覚化したり、データベースのGUIを作ったりするときに便利です。
7.3.56.2. 構文#
このコマンドに引数はありません:
schema
7.3.56.3. 使い方#
以下は出力例を示すためのサンプルスキーマです。
実行例:
table_create Memos TABLE_HASH_KEY ShortText
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Memos content COLUMN_SCALAR Text
# [[0,1337566253.89858,0.000355720520019531],true]
table_create Terms TABLE_PAT_KEY ShortText \
--default_tokenizer TokenBigram \
--normalizer NormalizerAuto
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Terms memos_content_index \
COLUMN_INDEX|WITH_POSITION \
Memos content
# [[0,1337566253.89858,0.000355720520019531],true]
このサンプルスキーマに対する schema
コマンドの出力は次の通りです。
実行例:
schema
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# {
# "plugins": {
# },
# "types": {
# "BFloat16": {
# "id": 20,
# "name": "BFloat16",
# "size": 2,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "Bool": {
# "id": 3,
# "name": "Bool",
# "size": 1,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "Float": {
# "id": 12,
# "name": "Float",
# "size": 8,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "Float32": {
# "id": 19,
# "name": "Float32",
# "size": 4,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "Int16": {
# "id": 6,
# "name": "Int16",
# "size": 2,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "Int32": {
# "id": 8,
# "name": "Int32",
# "size": 4,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "Int64": {
# "id": 10,
# "name": "Int64",
# "size": 8,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "Int8": {
# "id": 4,
# "name": "Int8",
# "size": 1,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "LongText": {
# "id": 16,
# "name": "LongText",
# "size": 2147483648,
# "can_be_key_type": false,
# "can_be_value_type": false
# },
# "Object": {
# "id": 2,
# "name": "Object",
# "size": 8,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "ShortText": {
# "id": 14,
# "name": "ShortText",
# "size": 4096,
# "can_be_key_type": true,
# "can_be_value_type": false
# },
# "Text": {
# "id": 15,
# "name": "Text",
# "size": 65536,
# "can_be_key_type": false,
# "can_be_value_type": false
# },
# "Time": {
# "id": 13,
# "name": "Time",
# "size": 8,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "TokyoGeoPoint": {
# "id": 17,
# "name": "TokyoGeoPoint",
# "size": 8,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "UInt16": {
# "id": 7,
# "name": "UInt16",
# "size": 2,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "UInt32": {
# "id": 9,
# "name": "UInt32",
# "size": 4,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "UInt64": {
# "id": 11,
# "name": "UInt64",
# "size": 8,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "UInt8": {
# "id": 5,
# "name": "UInt8",
# "size": 1,
# "can_be_key_type": true,
# "can_be_value_type": true
# },
# "WGS84GeoPoint": {
# "id": 18,
# "name": "WGS84GeoPoint",
# "size": 8,
# "can_be_key_type": true,
# "can_be_value_type": true
# }
# },
# "tokenizers": {
# "TokenBigram": {
# "id": 67,
# "name": "TokenBigram"
# },
# "TokenBigramIgnoreBlank": {
# "id": 72,
# "name": "TokenBigramIgnoreBlank"
# },
# "TokenBigramIgnoreBlankSplitSymbol": {
# "id": 73,
# "name": "TokenBigramIgnoreBlankSplitSymbol"
# },
# "TokenBigramIgnoreBlankSplitSymbolAlpha": {
# "id": 74,
# "name": "TokenBigramIgnoreBlankSplitSymbolAlpha"
# },
# "TokenBigramIgnoreBlankSplitSymbolAlphaDigit": {
# "id": 75,
# "name": "TokenBigramIgnoreBlankSplitSymbolAlphaDigit"
# },
# "TokenBigramSplitSymbol": {
# "id": 69,
# "name": "TokenBigramSplitSymbol"
# },
# "TokenBigramSplitSymbolAlpha": {
# "id": 70,
# "name": "TokenBigramSplitSymbolAlpha"
# },
# "TokenBigramSplitSymbolAlphaDigit": {
# "id": 71,
# "name": "TokenBigramSplitSymbolAlphaDigit"
# },
# "TokenDelimit": {
# "id": 65,
# "name": "TokenDelimit"
# },
# "TokenDelimitNull": {
# "id": 76,
# "name": "TokenDelimitNull"
# },
# "TokenDocumentVectorBM25": {
# "id": 82,
# "name": "TokenDocumentVectorBM25"
# },
# "TokenDocumentVectorTFIDF": {
# "id": 81,
# "name": "TokenDocumentVectorTFIDF"
# },
# "TokenMecab": {
# "id": 64,
# "name": "TokenMecab"
# },
# "TokenNgram": {
# "id": 78,
# "name": "TokenNgram"
# },
# "TokenPattern": {
# "id": 79,
# "name": "TokenPattern"
# },
# "TokenRegexp": {
# "id": 77,
# "name": "TokenRegexp"
# },
# "TokenTable": {
# "id": 80,
# "name": "TokenTable"
# },
# "TokenTrigram": {
# "id": 68,
# "name": "TokenTrigram"
# },
# "TokenUnigram": {
# "id": 66,
# "name": "TokenUnigram"
# }
# },
# "normalizers": {
# "NormalizerAuto": {
# "id": 83,
# "name": "NormalizerAuto"
# },
# "NormalizerHTML": {
# "id": 90,
# "name": "NormalizerHTML"
# },
# "NormalizerNFKC100": {
# "id": 85,
# "name": "NormalizerNFKC100"
# },
# "NormalizerNFKC121": {
# "id": 86,
# "name": "NormalizerNFKC121"
# },
# "NormalizerNFKC130": {
# "id": 87,
# "name": "NormalizerNFKC130"
# },
# "NormalizerNFKC150": {
# "id": 88,
# "name": "NormalizerNFKC150"
# },
# "NormalizerNFKC51": {
# "id": 84,
# "name": "NormalizerNFKC51"
# },
# "NormalizerTable": {
# "id": 89,
# "name": "NormalizerTable"
# }
# },
# "token_filters": {
# "TokenFilterNFKC100": {
# "id": 230,
# "name": "TokenFilterNFKC100"
# },
# "TokenFilterNFKC121": {
# "id": 231,
# "name": "TokenFilterNFKC121"
# },
# "TokenFilterNFKC130": {
# "id": 232,
# "name": "TokenFilterNFKC130"
# },
# "TokenFilterNFKC150": {
# "id": 233,
# "name": "TokenFilterNFKC150"
# }
# },
# "tables": {
# "Memos": {
# "id": 256,
# "name": "Memos",
# "type": "hash table",
# "key_type": {
# "id": 14,
# "name": "ShortText",
# "type": "type"
# },
# "value_type": null,
# "tokenizer": null,
# "normalizer": null,
# "normalizers": [
#
# ],
# "token_filters": [
#
# ],
# "indexes": [
#
# ],
# "command": {
# "name": "table_create",
# "arguments": {
# "name": "Memos",
# "flags": "TABLE_HASH_KEY",
# "key_type": "ShortText"
# },
# "command_line": "table_create --name Memos --flags TABLE_HASH_KEY --key_type ShortText"
# },
# "columns": {
# "content": {
# "id": 257,
# "name": "content",
# "table": "Memos",
# "full_name": "Memos.content",
# "type": "scalar",
# "value_type": {
# "id": 15,
# "name": "Text",
# "type": "type"
# },
# "compress": null,
# "missing": "add",
# "invalid": "error",
# "section": false,
# "weight": false,
# "weight_float32": false,
# "weight_bfloat16": false,
# "position": false,
# "sources": [
#
# ],
# "generator": "",
# "indexes": [
# {
# "id": 259,
# "full_name": "Terms.memos_content_index",
# "table": "Terms",
# "name": "memos_content_index",
# "section": 0
# }
# ],
# "command": {
# "name": "column_create",
# "arguments": {
# "table": "Memos",
# "name": "content",
# "flags": "COLUMN_SCALAR",
# "type": "Text"
# },
# "command_line": "column_create --table Memos --name content --flags COLUMN_SCALAR --type Text"
# }
# }
# }
# },
# "Terms": {
# "id": 258,
# "name": "Terms",
# "type": "patricia trie",
# "key_type": {
# "id": 14,
# "name": "ShortText",
# "type": "type"
# },
# "value_type": null,
# "tokenizer": {
# "id": 67,
# "name": "TokenBigram",
# "options": null
# },
# "normalizer": {
# "id": 83,
# "name": "NormalizerAuto",
# "options": null
# },
# "normalizers": [
# {
# "id": 83,
# "name": "NormalizerAuto",
# "options": null
# }
# ],
# "token_filters": [
#
# ],
# "indexes": [
#
# ],
# "command": {
# "name": "table_create",
# "arguments": {
# "name": "Terms",
# "flags": "TABLE_PAT_KEY",
# "key_type": "ShortText",
# "default_tokenizer": "TokenBigram",
# "normalizer": "NormalizerAuto"
# },
# "command_line": "table_create --name Terms --flags TABLE_PAT_KEY --key_type ShortText --default_tokenizer TokenBigram --normalizer NormalizerAuto"
# },
# "columns": {
# "memos_content_index": {
# "id": 259,
# "name": "memos_content_index",
# "table": "Terms",
# "full_name": "Terms.memos_content_index",
# "type": "index",
# "value_type": {
# "id": 256,
# "name": "Memos",
# "type": "reference"
# },
# "compress": null,
# "missing": null,
# "invalid": null,
# "section": false,
# "weight": false,
# "weight_float32": false,
# "weight_bfloat16": false,
# "position": true,
# "sources": [
# {
# "id": 257,
# "name": "content",
# "table": "Memos",
# "full_name": "Memos.content"
# }
# ],
# "generator": "",
# "indexes": [
#
# ],
# "command": {
# "name": "column_create",
# "arguments": {
# "table": "Terms",
# "name": "memos_content_index",
# "flags": "COLUMN_INDEX|WITH_POSITION",
# "type": "Memos",
# "source": "content"
# },
# "command_line": "column_create --table Terms --name memos_content_index --flags COLUMN_INDEX|WITH_POSITION --type Memos --source content"
# }
# }
# }
# }
# }
# }
# ]
7.3.56.4. 引数#
このセクションではすべての引数について説明します。
7.3.56.4.1. 必須引数#
必須の引数はありません。
7.3.56.4.2. 省略可能引数#
省略可能な引数はありません。
7.3.56.5. 戻り値#
schema
はこのデータベースのスキーマを返します。:
[HEADER, SCHEMA]
7.3.56.5.1. HEADER
#
HEADER
については 出力形式 を参照してください。
7.3.56.5.2. SCHEMA
#
SCHEMA
は以下の情報を含んだオブジェクトです。:
{
"plugins": PLUGINS,
"types": TYPES,
"tokenizers": TOKENIZERS,
"normalizers": NORMALIZERS,
"token_filters": TOKEN_FITLERS,
"tables": TABLES
}
7.3.56.5.3. PLUGINS
#
PLUGINS
はオブジェクトです。キーはプラグイン名で値はプラグインの詳細です。:
{
"PLUGIN_NAME_1": PLUGIN_1,
"PLUGIN_NAME_2": PLUGIN_2,
...
"PLUGIN_NAME_n": PLUGIN_n
}
7.3.56.5.4. PLUGIN
#
PLUGIN
はプラグインの詳細を示すオブジェクトです。
{
"name": PLUGIN_NAME
}
以下は PLUGIN
のプロパティです。
名前 |
説明 |
---|---|
|
プラグイン名。 plugin_register で使います。 |
7.3.56.5.5. TYPES
#
TYPES
はオブジェクトです。キーは型名で、値は型の詳細です。:
{
"TYPE_NAME_1": TYPE_1,
"TYPE_NAME_2": TYPE_2,
...
"TYPE_NAME_n": TYPE_n
}
7.3.56.5.6. TYPE
#
TYPE
は型の詳細を示すオブジェクトです。:
{
"name": TYPE_NAME,
"size": SIZE_OF_ONE_VALUE_IN_BYTE,
"can_be_key_type": BOOLEAN,
"can_be_value_type": BOOLEAN
}
以下は TYPE
のプロパティです。
名前 |
説明 |
---|---|
|
型名。 |
|
1つの値のバイト数です。 |
|
この型をテーブルのキーの型に使えるなら |
|
この型をテーブルの値の型に使えるなら |
7.3.56.5.7. TOKENIZERS
#
TOKENIZERS
はオブジェクトです。キーはトークナイザー名で値はトークナイザーの詳細です。:
{
"TOKENIZER_NAME_1": TOKENIZER_1,
"TOKENIZER_NAME_2": TOKENIZER_2,
...
"TOKENIZER_NAME_n": TOKENIZER_n
}
7.3.56.5.8. TOKENIZER
#
TOKENIZER
はトークナイザーの詳細を示すオブジェクトです。:
{
"name": TOKENIZER_NAME
}
以下は TOKENIZER
のプロパティです。
名前 |
説明 |
---|---|
|
トークナイザー名。 default_tokenizer で使います。 |
7.3.56.5.9. NORMALIZERS
#
NORMALIZERS
はオブジェクトです。キーはノーマライザー名で値はノーマライザーの詳細です。:
{
"NORMALIZER_NAME_1": NORMALIZER_1,
"NORMALIZER_NAME_2": NORMALIZER_2,
...
"NORMALIZER_NAME_n": NORMALIZER_n
}
7.3.56.5.10. NORMALIZER
#
NORMALIZER
はノーマライザーの詳細を示すオブジェクトです。:
{
"name": NORMALIZER_NAME
}
以下は NORMALIZER
のプロパティです。
名前 |
説明 |
---|---|
|
ノーマライザー名。 normalizer で使います。 |
7.3.56.5.11. TOKEN_FILTERS
#
TOKEN_FILTERS
はオブジェクトです。キーはトークンフィルター名で値はトークンフィルターの詳細です。:
{
"TOKEN_FILTER_NAME_1": TOKEN_FILTER_1,
"TOKEN_FILTER_NAME_2": TOKEN_FILTER_2,
...
"TOKEN_FILTER_NAME_n": TOKEN_FILTER_n
}
7.3.56.5.12. TOKEN_FILTER
#
TOKEN_FILTER
はトークンフィルターの詳細を示すオブジェクトです。:
{
"name": TOKEN_FILTER_NAME
}
以下は TOKEN_FILTER
のプロパティです。
名前 |
説明 |
---|---|
|
トークンフィルター名。 token_filters で使います。 |
7.3.56.5.13. TABLES
#
TABLES
はオブジェクトです。キーはテーブル名で値はテーブルの詳細です。:
{
"TABLE_NAME_1": TABLE_1,
"TABLE_NAME_2": TABLE_2,
...
"TABLE_NAME_n": TABLE_n
}
7.3.56.5.14. TABLE
#
TABLE
はテーブルの詳細を示すオブジェクトです。
{
"name": TABLE_NAME
"type": TYPE,
"key_type": KEY_TYPE,
"value_type": VALUE_TYPE,
"tokenizer": TOKENIZER,
"normalizer": NORMALIZER,
"token_filters": [
TOKEN_FILTER_1,
TOKEN_FILTER_2,
...,
TOKEN_FILTER_n,
],
"indexes": [
INDEX_1,
INDEX_2,
...,
INDEX_n
],
"command": COMMAND,
"columns": {
"COLUMN_NAME_1": COLUMN_1,
"COLUMN_NAME_2": COLUMN_2,
...,
"COLUMN_NAME_3": COLUMN_3,
}
}
以下は TABLE
のプロパティです。
名前 |
説明 |
---|---|
|
テーブル名。 |
|
テーブルの種類。 以下のどれかです。
|
|
テーブルのキーの型。 テーブルの種類が テーブルの種類が
|
|
テーブルの値の型。 テーブルが「値」を使っていない場合は テーブルが「値」を使っている場合はオブジェクトになります。オブジェクトは次のプロパティを持ちます。
|
|
テーブルのトークナイザー。 default_tokenizer で指定されたものです。 テーブルがトークナイザーを使っていない場合は テーブルがトークナイザーを使っている場合はオブジェクトになります。オブジェクトは次のプロパティを持ちます。
|
|
テーブルのノーマライザー。 normalizer で指定されたものです。 テーブルがノーマライザーを使っていない場合は テーブルがノーマライザーを使っている場合はオブジェクトになります。オブジェクトは次のプロパティを持ちます。
|
|
テーブルのトークンフィルターです。 token_filters で指定されたものです。 オブジェクトの配列です。オブジェクトは次のプロパティを持ちます。
|
|
テーブルのキーに対するインデックス。 INDEX の配列です。 |
|
このテーブルを作るためのGroongaコマンドに関する情報。 COMMAND になります。 |
|
テーブルのカラム。 オブジェクトです。キーはカラム名で値は COLUMN です。 |
7.3.56.5.15. INDEX
#
INDEX
はインデックスの詳細を示すオブジェクトです。:
{
"full_name": INDEX_COLUMN_NAME_WITH_TABLE_NAME,
"table": TABLE_NAME,
"name": INDEX_COLUMN_NAME,
"section": SECTION
}
以下は INDEX
のプロパティです。
名前 |
説明 |
---|---|
|
テーブル名を含むインデックスカラム名。 例: |
|
インデックスカラムのテーブル名。 例: |
|
インデックスカラム名。 例: |
|
テーブルのキーに対するインデックスカラムのセクション番号。 インデックスカラムがマルチカラムインデックスでない場合は |
7.3.56.5.16. COMMAND
#
COMMAND
はこのテーブル・カラムを作る方法を示したオブジェクトです。:
{
"name": COMMAND_NAME,
"arguments": {
"KEY_1": "VALUE_1",
"KEY_2": "VALUE_2",
...,
"KEY_n": "VALUE_n"
},
"command_line": COMMAND_LINE
}
以下は COMMAND
のプロパティです。
名前 |
説明 |
---|---|
|
このテーブル・カラムを作るGroongaコマンドの名前。 |
|
このテーブル・カラムを作るためのGroongaコマンドの引数。 オブジェクトになります。キーは引数名で値は引数の値です。 |
|
このテーブル・カラムを作るGroongaコマンドのコマンドラインです。 この文字列はGroongaが評価できます。 |
7.3.56.5.17. COLUMN
#
COLUMN
はカラムの詳細を示したオブジェクトです。:
{
"name": COLUMN_NAME,
"table": TABLE_NAME,
"full_name": COLUMN_NAME_WITH_TABLE,
"type": TYPE,
"value_type": VALUE_TYPE,
"compress": COMPRESS,
"section": SECTION,
"weight": WEIGHT,
"compress": COMPRESS,
"section": BOOLEAN,
"weight": BOOLEAN,
"position": BOOLEAN,
"sources": [
SOURCE_1,
SOURCE_2,
...,
SOURCE_n
],
"generator": GENERATOR,
"indexes": [
INDEX_1,
INDEX_2,
...,
INDEX_n
],
"command": COMMAND
}
以下は COLUMN
のプロパティです。
名前 |
説明 |
---|---|
|
カラム名。 例: |
|
カラムのテーブル名。 例: |
|
テーブル名を含むカラム名。 例: |
|
カラムの種類。 以下のどれかです。 |
|
カラムの値の型。 オブジェクトです。このオブジェクトは次のプロパティを持ちます。
|
|
カラムの圧縮方法です。 カラムがどの圧縮方法も使っていない場合は カラムが圧縮方法を使っている場合は次のどれかになります。
|
|
カラムがセクション情報を保存できるかどうか。
通常、インデックスカラムでない場合は |
|
カラムが重み情報を保存できるかどうか。
|
|
カラムが位置情報を保存できるかどうか。
通常、インデックスカラムでない場合は |
|
インデックスカラムのソースカラム。 SOURCE の配列になります。 インデックスカラムまたは 生成カラム の場合は1つ以上の要素になります。そうでない場合は空の配列になります。 |
|
Added in version 14.1.0. スクリプト構文 の生成式です。 生成カラム でない場合は空文字列になります。 |
|
カラムのインデックス。 INDEX の配列です。 |
|
このカラムを作るためのGroongaコマンド情報。 COMMAND になります。 |
7.3.56.5.18. SOURCE
#
SOURCE
はソースの詳細を示すオブジェクトです。:
{
"name": COLUMN_NAME,
"table": TABLE_NAME,
"full_name": COLUMN_NAME_WITH_TABLE_NAME
}
以下は SOURCE
のプロパティです。
名前 |
説明 |
---|---|
|
ソースカラム名。 例:
|
|
ソースカラムのテーブル名。 例: |
|
テーブル名を含むソースカラム名。 例: |