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.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 のプロパティです。

名前

説明

name

プラグイン名。 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 のプロパティです。

名前

説明

name

型名。

size

1つの値のバイト数です。

can_be_key_type

この型をテーブルのキーの型に使えるなら true 、そうでないなら false

can_be_value_type

この型をテーブルの値の型に使えるなら true 、そうでないなら false

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 のプロパティです。

名前

説明

name

トークナイザー名。 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 のプロパティです。

名前

説明

name

ノーマライザー名。 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 のプロパティです。

名前

説明

name

トークンフィルター名。 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 のプロパティです。

名前

説明

name

テーブル名。

type

テーブルの種類。

以下のどれかです。

key_type

テーブルのキーの型。

テーブルの種類が array なら null になります。

テーブルの種類が array でなければオブジェクトになります。オブジェクトは次のプロパティを持ちます。

  • name :型名。

  • type :もし型がテーブルなら reference 、そうでないなら type

value_type

テーブルの値の型。

テーブルが「値」を使っていない場合は null になります。

テーブルが「値」を使っている場合はオブジェクトになります。オブジェクトは次のプロパティを持ちます。

  • name :型名。

  • type :もし型がテーブルなら reference 、そうでないなら type

tokenizer

テーブルのトークナイザー。 default_tokenizer で指定されたものです。

テーブルがトークナイザーを使っていない場合は null になります。

テーブルがトークナイザーを使っている場合はオブジェクトになります。オブジェクトは次のプロパティを持ちます。

  • name :トークナイザー名。

normalizer

テーブルのノーマライザー。 normalizer で指定されたものです。

テーブルがノーマライザーを使っていない場合は null になります。

テーブルがノーマライザーを使っている場合はオブジェクトになります。オブジェクトは次のプロパティを持ちます。

  • name :ノーマライザー名。

token_filters

テーブルのトークンフィルターです。 token_filters で指定されたものです。

オブジェクトの配列です。オブジェクトは次のプロパティを持ちます。

  • name :トークンフィルター名。

indexes

テーブルのキーに対するインデックス。

INDEX の配列です。

command

このテーブルを作るためのGroongaコマンドに関する情報。

COMMAND になります。

columns

テーブルのカラム。

オブジェクトです。キーはカラム名で値は 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 のプロパティです。

名前

説明

full_name

テーブル名を含むインデックスカラム名。

例: Terms.index

table

インデックスカラムのテーブル名。

例: Terms

name

インデックスカラム名。

例: index

section

テーブルのキーに対するインデックスカラムのセクション番号。

インデックスカラムがマルチカラムインデックスでない場合は 0 になります。

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 のプロパティです。

名前

説明

name

このテーブル・カラムを作るGroongaコマンドの名前。

arguments

このテーブル・カラムを作るためのGroongaコマンドの引数。

オブジェクトになります。キーは引数名で値は引数の値です。

command_line

このテーブル・カラムを作る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 のプロパティです。

名前

説明

name

カラム名。

例: age

table

カラムのテーブル名。

例: Users

full_name

テーブル名を含むカラム名。

例: Users.age

type

カラムの種類。

以下のどれかです。

value_type

カラムの値の型。

オブジェクトです。このオブジェクトは次のプロパティを持ちます。

  • name :型名。

  • type :もし型がテーブルなら reference 、そうでないなら type

compress

カラムの圧縮方法です。

カラムがどの圧縮方法も使っていない場合は null になります。

カラムが圧縮方法を使っている場合は次のどれかになります。

  • zlib :カラムの値を圧縮するためにzlibを使います。

  • lz4 :カラムの値を圧縮するためにLZ4を使います。

section

カラムがセクション情報を保存できるかどうか。

WITH_SECTION フラグ付きでカラムを作ったときは true 、そうでないときは false になります。

通常、インデックスカラムでない場合は false になります。

weight

カラムが重み情報を保存できるかどうか。

WITH_WEIGHT フラグ付きでカラムを作ったときは true 、そうでないときは false になります。

position

カラムが位置情報を保存できるかどうか。

WITH_POSITION フラグ付きでカラムを作ったときは true 、そうでないときは false になります。

通常、インデックスカラムでない場合は false になります。

sources

インデックスカラムのソースカラム。

SOURCE の配列になります。

インデックスカラムまたは 生成カラム の場合は1つ以上の要素になります。そうでない場合は空の配列になります。

generator

Added in version 14.1.0.

スクリプト構文 の生成式です。

生成カラム でない場合は空文字列になります。

indexes

カラムのインデックス。

INDEX の配列です。

command

このカラムを作るためのGroongaコマンド情報。

COMMAND になります。

7.3.56.5.18. SOURCE#

SOURCE はソースの詳細を示すオブジェクトです。:

{
  "name":      COLUMN_NAME,
  "table":     TABLE_NAME,
  "full_name": COLUMN_NAME_WITH_TABLE_NAME
}

以下は SOURCE のプロパティです。

名前

説明

name

ソースカラム名。

例: content

_key 擬似カラムになるかもしれません。

table

ソースカラムのテーブル名。

例: Memos

full_name

テーブル名を含むソースカラム名。

例: Memos.content

7.3.56.6. 参考#