7.3.53. schema¶
7.3.53.1. 概要¶
バージョン 5.0.9 で追加.
schema コマンドはデータベース内のスキーマを返します。
このコマンドはデータベースの詳細を知りたいときに便利です。たとえば、データベースを視覚化したり、データベースのGUIを作ったりするときに便利です。
7.3.53.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
#   ],
#   {
#     "tables": {
#       "Terms": {
#         "normalizer": {
#           "id": 78,
#           "name": "NormalizerAuto"
#         },
#         "name": "Terms",
#         "tokenizer": {
#           "id": 67,
#           "name": "TokenBigram"
#         },
#         "command": {
#           "command_line": "table_create --name Terms --flags TABLE_PAT_KEY --key_type ShortText --default_tokenizer TokenBigram --normalizer NormalizerAuto",
#           "name": "table_create",
#           "arguments": {
#             "key_type": "ShortText",
#             "default_tokenizer": "TokenBigram",
#             "normalizer": "NormalizerAuto",
#             "flags": "TABLE_PAT_KEY",
#             "name": "Terms"
#           }
#         },
#         "indexes": [],
#         "key_type": {
#           "type": "type",
#           "id": 14,
#           "name": "ShortText"
#         },
#         "value_type": null,
#         "token_filters": [],
#         "type": "patricia trie",
#         "id": 258,
#         "columns": {
#           "memos_content_index": {
#             "name": "memos_content_index",
#             "weight": false,
#             "section": false,
#             "compress": null,
#             "command": {
#               "command_line": "column_create --table Terms --name memos_content_index --flags COLUMN_INDEX|WITH_POSITION --type Memos --source content",
#               "name": "column_create",
#               "arguments": {
#                 "source": "content",
#                 "table": "Terms",
#                 "flags": "COLUMN_INDEX|WITH_POSITION",
#                 "name": "memos_content_index",
#                 "type": "Memos"
#               }
#             },
#             "indexes": [],
#             "sources": [
#               {
#                 "table": "Memos",
#                 "id": 257,
#                 "full_name": "Memos.content",
#                 "name": "content"
#               }
#             ],
#             "value_type": {
#               "type": "reference",
#               "id": 256,
#               "name": "Memos"
#             },
#             "full_name": "Terms.memos_content_index",
#             "position": true,
#             "table": "Terms",
#             "type": "index",
#             "id": 259
#           }
#         }
#       },
#       "Memos": {
#         "normalizer": null,
#         "name": "Memos",
#         "tokenizer": null,
#         "command": {
#           "command_line": "table_create --name Memos --flags TABLE_HASH_KEY --key_type ShortText",
#           "name": "table_create",
#           "arguments": {
#             "key_type": "ShortText",
#             "flags": "TABLE_HASH_KEY",
#             "name": "Memos"
#           }
#         },
#         "indexes": [],
#         "key_type": {
#           "type": "type",
#           "id": 14,
#           "name": "ShortText"
#         },
#         "value_type": null,
#         "token_filters": [],
#         "type": "hash table",
#         "id": 256,
#         "columns": {
#           "content": {
#             "name": "content",
#             "weight": false,
#             "section": false,
#             "compress": null,
#             "command": {
#               "command_line": "column_create --table Memos --name content --flags COLUMN_SCALAR --type Text",
#               "name": "column_create",
#               "arguments": {
#                 "table": "Memos",
#                 "flags": "COLUMN_SCALAR",
#                 "name": "content",
#                 "type": "Text"
#               }
#             },
#             "indexes": [
#               {
#                 "table": "Terms",
#                 "section": 0,
#                 "id": 259,
#                 "full_name": "Terms.memos_content_index",
#                 "name": "memos_content_index"
#               }
#             ],
#             "sources": [],
#             "value_type": {
#               "type": "type",
#               "id": 15,
#               "name": "Text"
#             },
#             "full_name": "Memos.content",
#             "position": false,
#             "table": "Memos",
#             "type": "scalar",
#             "id": 257
#           }
#         }
#       }
#     },
#     "normalizers": {
#       "NormalizerNFKC51": {
#         "id": 79,
#         "name": "NormalizerNFKC51"
#       },
#       "NormalizerAuto": {
#         "id": 78,
#         "name": "NormalizerAuto"
#       }
#     },
#     "token_filters": {},
#     "tokenizers": {
#       "TokenBigramSplitSymbolAlphaDigit": {
#         "id": 71,
#         "name": "TokenBigramSplitSymbolAlphaDigit"
#       },
#       "TokenRegexp": {
#         "id": 77,
#         "name": "TokenRegexp"
#       },
#       "TokenBigramIgnoreBlankSplitSymbolAlphaDigit": {
#         "id": 75,
#         "name": "TokenBigramIgnoreBlankSplitSymbolAlphaDigit"
#       },
#       "TokenBigram": {
#         "id": 67,
#         "name": "TokenBigram"
#       },
#       "TokenDelimit": {
#         "id": 65,
#         "name": "TokenDelimit"
#       },
#       "TokenUnigram": {
#         "id": 66,
#         "name": "TokenUnigram"
#       },
#       "TokenBigramSplitSymbol": {
#         "id": 69,
#         "name": "TokenBigramSplitSymbol"
#       },
#       "TokenDelimitNull": {
#         "id": 76,
#         "name": "TokenDelimitNull"
#       },
#       "TokenBigramIgnoreBlankSplitSymbolAlpha": {
#         "id": 74,
#         "name": "TokenBigramIgnoreBlankSplitSymbolAlpha"
#       },
#       "TokenBigramSplitSymbolAlpha": {
#         "id": 70,
#         "name": "TokenBigramSplitSymbolAlpha"
#       },
#       "TokenTrigram": {
#         "id": 68,
#         "name": "TokenTrigram"
#       },
#       "TokenBigramIgnoreBlankSplitSymbol": {
#         "id": 73,
#         "name": "TokenBigramIgnoreBlankSplitSymbol"
#       },
#       "TokenBigramIgnoreBlank": {
#         "id": 72,
#         "name": "TokenBigramIgnoreBlank"
#       }
#     },
#     "plugins": {},
#     "types": {
#       "UInt64": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 11,
#         "can_be_value_type": true,
#         "name": "UInt64"
#       },
#       "Int32": {
#         "can_be_key_type": true,
#         "size": 4,
#         "id": 8,
#         "can_be_value_type": true,
#         "name": "Int32"
#       },
#       "Int16": {
#         "can_be_key_type": true,
#         "size": 2,
#         "id": 6,
#         "can_be_value_type": true,
#         "name": "Int16"
#       },
#       "LongText": {
#         "can_be_key_type": false,
#         "size": 2147483648,
#         "id": 16,
#         "can_be_value_type": false,
#         "name": "LongText"
#       },
#       "TokyoGeoPoint": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 17,
#         "can_be_value_type": true,
#         "name": "TokyoGeoPoint"
#       },
#       "Text": {
#         "can_be_key_type": false,
#         "size": 65536,
#         "id": 15,
#         "can_be_value_type": false,
#         "name": "Text"
#       },
#       "ShortText": {
#         "can_be_key_type": true,
#         "size": 4096,
#         "id": 14,
#         "can_be_value_type": false,
#         "name": "ShortText"
#       },
#       "Float": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 12,
#         "can_be_value_type": true,
#         "name": "Float"
#       },
#       "UInt8": {
#         "can_be_key_type": true,
#         "size": 1,
#         "id": 5,
#         "can_be_value_type": true,
#         "name": "UInt8"
#       },
#       "UInt32": {
#         "can_be_key_type": true,
#         "size": 4,
#         "id": 9,
#         "can_be_value_type": true,
#         "name": "UInt32"
#       },
#       "Object": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 2,
#         "can_be_value_type": true,
#         "name": "Object"
#       },
#       "UInt16": {
#         "can_be_key_type": true,
#         "size": 2,
#         "id": 7,
#         "can_be_value_type": true,
#         "name": "UInt16"
#       },
#       "Int64": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 10,
#         "can_be_value_type": true,
#         "name": "Int64"
#       },
#       "Time": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 13,
#         "can_be_value_type": true,
#         "name": "Time"
#       },
#       "Bool": {
#         "can_be_key_type": true,
#         "size": 1,
#         "id": 3,
#         "can_be_value_type": true,
#         "name": "Bool"
#       },
#       "WGS84GeoPoint": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 18,
#         "can_be_value_type": true,
#         "name": "WGS84GeoPoint"
#       },
#       "Int8": {
#         "can_be_key_type": true,
#         "size": 1,
#         "id": 4,
#         "can_be_value_type": true,
#         "name": "Int8"
#       }
#     }
#   }
# ]
7.3.53.4. 引数¶
このセクションではすべての引数について説明します。
7.3.53.4.1. 必須引数¶
必須の引数はありません。
7.3.53.4.2. 省略可能引数¶
省略可能な引数はありません。
7.3.53.5. 戻り値¶
schema はこのデータベースのスキーマを返します。:
[HEADER, SCHEMA]
7.3.53.5.2. SCHEMA¶
SCHEMA は以下の情報を含んだオブジェクトです。:
{
  "plugins":       PLUGINS,
  "types":         TYPES,
  "tokenizers":    TOKENIZERS,
  "normalizers":   NORMALIZERS,
  "token_filters": TOKEN_FITLERS,
  "tables":        TABLES
}
7.3.53.5.3. PLUGINS¶
PLUGINS はオブジェクトです。キーはプラグイン名で値はプラグインの詳細です。:
{
  "PLUGIN_NAME_1": PLUGIN_1,
  "PLUGIN_NAME_2": PLUGIN_2,
  ...
  "PLUGIN_NAME_n": PLUGIN_n
}
7.3.53.5.4. PLUGIN¶
PLUGIN はプラグインの詳細を示すオブジェクトです。
{
  "name": PLUGIN_NAME
}
以下は PLUGIN のプロパティです。
| 名前 | 説明 | 
|---|---|
| 
 | プラグイン名。 plugin_register で使います。 | 
7.3.53.5.5. TYPES¶
TYPES はオブジェクトです。キーは型名で、値は型の詳細です。:
{
  "TYPE_NAME_1": TYPE_1,
  "TYPE_NAME_2": TYPE_2,
  ...
  "TYPE_NAME_n": TYPE_n
}
7.3.53.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.53.5.7. TOKENIZERS¶
TOKENIZERS はオブジェクトです。キーはトークナイザー名で値はトークナイザーの詳細です。:
{
  "TOKENIZER_NAME_1": TOKENIZER_1,
  "TOKENIZER_NAME_2": TOKENIZER_2,
  ...
  "TOKENIZER_NAME_n": TOKENIZER_n
}
7.3.53.5.8. TOKENIZER¶
TOKENIZER はトークナイザーの詳細を示すオブジェクトです。:
{
  "name": TOKENIZER_NAME
}
以下は TOKENIZER のプロパティです。
| 名前 | 説明 | 
|---|---|
| 
 | トークナイザー名。 default_tokenizer で使います。 | 
7.3.53.5.9. NORMALIZERS¶
NORMALIZERS はオブジェクトです。キーはノーマライザー名で値はノーマライザーの詳細です。:
{
  "NORMALIZER_NAME_1": NORMALIZER_1,
  "NORMALIZER_NAME_2": NORMALIZER_2,
  ...
  "NORMALIZER_NAME_n": NORMALIZER_n
}
7.3.53.5.10. NORMALIZER¶
NORMALIZER はノーマライザーの詳細を示すオブジェクトです。:
{
  "name": NORMALIZER_NAME
}
以下は NORMALIZER のプロパティです。
| 名前 | 説明 | 
|---|---|
| 
 | ノーマライザー名。 normalizer で使います。 | 
7.3.53.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.53.5.12. TOKEN_FILTER¶
TOKEN_FILTER はトークンフィルターの詳細を示すオブジェクトです。:
{
  "name": TOKEN_FILTER_NAME
}
以下は TOKEN_FILTER のプロパティです。
| 名前 | 説明 | 
|---|---|
| 
 | トークンフィルター名。 token_filters で使います。 | 
7.3.53.5.13. TABLES¶
TABLES はオブジェクトです。キーはテーブル名で値はテーブルの詳細です。:
{
  "TABLE_NAME_1": TABLE_1,
  "TABLE_NAME_2": TABLE_2,
  ...
  "TABLE_NAME_n": TABLE_n
}
7.3.53.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.53.5.15. INDEX¶
INDEX はインデックスの詳細を示すオブジェクトです。:
{
  "full_name": INDEX_COLUMN_NAME_WITH_TABLE_NAME,
  "table":     TABLE_NAME,
  "name":      INDEX_COLUMN_NAME,
  "section":   SECTION
}
以下は INDEX のプロパティです。
| 名前 | 説明 | 
|---|---|
| 
 | テーブル名を含むインデックスカラム名。 例:  | 
| 
 | インデックスカラムのテーブル名。 例:  | 
| 
 | インデックスカラム名。 例:  | 
| 
 | テーブルのキーに対するインデックスカラムのセクション番号。 インデックスカラムがマルチカラムインデックスでない場合は  | 
7.3.53.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.53.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
  ],
  "indexes": [
    INDEX_1,
    INDEX_2,
    ...,
    INDEX_n
  ],
  "command": COMMAND
}
以下は COLUMN のプロパティです。
| 名前 | 説明 | 
|---|---|
| 
 | カラム名。 例:  | 
| 
 | カラムのテーブル名。 例:  | 
| 
 | テーブル名を含むカラム名。 例:  | 
| 
 | カラムの種類。 以下のどれかです。 | 
| 
 | カラムの値の型。 オブジェクトです。このオブジェクトは次のプロパティを持ちます。 
 | 
| 
 | カラムの圧縮方法です。 カラムがどの圧縮方法も使っていない場合は  カラムが圧縮方法を使っている場合は次のどれかになります。 
 | 
| 
 | カラムがセクション情報を保存できるかどうか。 
 通常、インデックスカラムでない場合は  | 
| 
 | カラムが重み情報を保存できるかどうか。 
 | 
| 
 | カラムが位置情報を保存できるかどうか。 
 通常、インデックスカラムでない場合は  | 
| 
 | インデックスカラムのソースカラム。 SOURCE の配列になります。 通常、カラムがインデックスカラムでない場合は空配列になります。 | 
| 
 | カラムのインデックス。 INDEX の配列です。 | 
| 
 | このカラムを作るためのGroongaコマンド情報。 COMMAND になります。 | 
7.3.53.5.18. SOURCE¶
SOURCE はソースの詳細を示すオブジェクトです。:
{
  "name":      COLUMN_NAME,
  "table":     TABLE_NAME,
  "full_name": COLUMN_NAME_WITH_TABLE_NAME
}
以下は SOURCE のプロパティです。
| 名前 | 説明 | 
|---|---|
| 
 | ソースカラム名。 例:  
 | 
| 
 | ソースカラムのテーブル名。 例:  | 
| 
 | テーブル名を含むソースカラム名。 例:  |