Описание системных таблиц¶
Данный раздел описывает таблицы Picodata, используемые для служебных нужд. Перечисленные системные таблицы являются глобальными.
Описание соответствует версии Picodata 24.7.0-21-g7918791e
.
Описание схемы данных¶
_pico_table¶
Содержит информацию о пользовательских таблицах Picodata.
Глобальные таблицы реплицируются на каждый инстанс в кластере.
В шардированных таблицах весь набор данных разбивается на сегменты —
виртуальные бакеты (bucket),
пронумерованные bucket_id
. Каждый репликасет хранит свой набор
бакетов. Данные реплицируются между инстансами, принадлежащими одному
репликасету.
Поля:
id
: (unsigned)name
: (string) название таблицыdistribution
: (map) определяет распределение данных в кластере. Возможны следующие варианты:{"Global": null}
— глобальная таблица{"ShardedImplicitly": [sharding_key, sharding_fn]}
— шардированная таблица,bucket_id
вычисляется автоматически какsharding_fn(sharding_key)
sharding_fn
: (string) функция шардирования, на сегодняшний день поддерживается только"murmur3"
sharding_key
: (array) ключ шардирования — массив полей[field, ...]
, по которым вычисляетсяbucket_id
{"ShardedByField": [field]}
— шардированная таблица, в качествеbucket_id
используется значение поляfield
(ровно одного)
format
: (array,[{"name": ..., "field_type": ..., "is_nullable": ...}]
) массив словарей с описанием формата полей таблицы:name
: (string) название поляfield_type
: (string,"any" | "unsigned" | "string" | "number" | "double" | "integer" | "boolean" | "varbinary" | "scalar" | "decimal" | "uuid" | "datetime" | "interval" | "array" | "map"
) тип хранимого значенияis_nullable
: (boolean) возможность хранить значениеNULL
schema_version
: (unsigned) версия схемы, в которой таблица была создана. Используется при восстановлении из снапшота для корректной обработки шардированных таблицoperable
: (boolean) признак доступности таблицы на запись. Используется в процессе создания и удаления таблицengine
: (string,"memtx" | "vinyl"
) движок храненияowner
: (unsigned) создатель таблицыdescription
: (string) описание таблицы
Индексы:
_pico_table_id
(unique), parts:[id]
_pico_table_name
(unique), parts:[name]
_pico_table_owner_id
(non-unique), parts:[owner]
_pico_index¶
Содержит информацию об индексах БД.
Поля:
table_id
: (unsigned) идентификатор таблицы, к которой относится индексid
: (unsigned) идентификатор индекса, уникальный в пределах таблицыname
: (string) название индексаtype
: (string) тип индекса, определяющий способ хранения и поиска данных в индексе — см. CREATE INDEX ~ Типы индексовopts
: (array) массив параметров ключ-значение, определяющих поведение индекса:{"unique": true}
— индекс должен быть уникальным{"unique": false}
— допускается наличие дублирующихся значений в полях
parts
: (array) массив частей индекса, где каждая часть представляет собой поле или набор полей таблицы, по которым строится индексoperable
: (boolean) признак доступности индекса для использования. Возможные значения:true
— индекс доступенfalse
— индекс находится в процессе создания или удаления
schema_version
: (unsigned) версия схемы, в которой индекс был создан
Индексы:
_pico_index_id
(unique), parts:[table_id, id]
_pico_index_name
(unique), parts:[name]
_pico_routine¶
Содержит информацию о процедурах Picodata.
Поля:
id
: (unsigned) — идентификатор (типu32
, первичный ключ)name
: (string) — имя (уникальный индекс)kind
: (string) — тип хранимого объекта: функция или процедураparams
: (array) — таблица с типами параметров объекта, в виде[ {type: 'int', mode: 'in', default: 42}, {type: 'text'} ]
.returns
: (array) — тип возвращаемого результата. Для процедур это пустой массив[]
, для функций — массив типов в возвращаемом кортежеlanguage
: (string) — язык тела процедуры (например,SQL
)body
: (string) — тело основной части хранимой процедурыsecurity
: (string) — режим безопасности, определяющий, от чьего имени будет исполнена процедура (invoker
— от имени вызывающего,definer
— от имени стороннего пользователя)operable
: (boolean) — признак доступности процедуры (дляprepare
— false, дляcommit
— true)schema_version
: (unsigned) — версия схемы данных в Raft на момент изменения хранимой процедурыowner
: (unsigned) — идентификатор владельца (создателя) хранимой процедуры
Индексы:
_pico_routine_id
(unique), parts:[id]
_pico_routine_name
(unique), parts:[name]
_pico_routine_owner_id
(non-unique), parts:[owner]
Описание свойств кластера¶
_pico_property¶
Содержит свойства кластера в формате «ключ—значение».
Поля:
key
: (string)value
: (any)
Индексы:
_pico_property_key
(unique), parts:[key]
_pico_db_config¶
Хранит параметры (и только их), которые можно менять с помощью ALTER SYSTEM.
Поля:
key
: (string)value
: (any)
Индексы:
_pico_db_config_key
(unique), parts:[key]
Описание топологии кластера¶
_pico_peer_address¶
Содержит адреса всех пиров кластера.
Поля:
raft_id
: (unsigned)address
: (string)
Индексы:
_pico_peer_address_raft_id
(unique), parts:[raft_id]
_pico_instance¶
Содержит информацию обо всех инстансах кластера.
Поля:
name
: (string)uuid
: (string)raft_id
: (unsigned)replicaset_name
: (string)replicaset_uuid
: (string)current_state
: (array)target_state
: (array)failure_domain
: (map)tier
: (string)
Индексы:
_pico_instance_name
(unique), parts:[name]
_pico_instance_raft_id
(unique), parts:[raft_id]
_pico_instance_replicaset_name
(non-unique), parts:[replicaset_name]
_pico_replicaset¶
Содержит информацию обо всех репликасетах кластера.
Поля:
name
: (string)uuid
: (string)current_master_name
: (string)target_master_name
: (string)tier
: (string)weight
: (double)weight_origin
: (string)state
: (string,"ready" | "not-ready"
)current_config_version
: (unsigned)target_config_version
: (unsigned)promotion_vclock
: (map)
Индексы:
_pico_replicaset_name
(unique), parts:[name]
_pico_replicaset_uuid
(unique), parts:[uuid]
_pico_tier¶
Содержит информацию обо всех тирах в кластере.
Поля:
name
: (string)replication_factor
: (unsigned)can_vote
: (boolean)current_vshard_config_version
: (unsigned)target_vshard_config_version
: (unsigned)vshard_bootstrapped
: (boolean)
Индексы:
_pico_tier_name
(unique), parts:[name]
Описание управления доступом¶
_pico_user¶
Содержит информацию обо всех пользователях и ролях Picodata.
Поля:
id
: (unsigned)name
: (string)schema_version
: (unsigned)auth
: (array)owner
: (unsigned)type
: (string)
Индексы:
_pico_user_id
(unique), parts:[id]
_pico_user_name
(unique), parts:[name]
_pico_user_owner_id
(non-unique), parts:[owner]
_pico_privilege¶
Содержит информацию обо всех привилегиях, предоставленных пользователям Picodata.
Поля:
grantor_id
: (unsigned)grantee_id
: (unsigned)privilege
: (string)object_type
: (string)object_id
: (integer)schema_version
: (unsigned)
Индексы:
_pico_privilege_primary
(unique), parts:[grantee_id, object_type, object_id, privilege]
_pico_privilege_object
(non-unique), parts:[object_type, object_id]
Описание плагинов¶
Содержит информацию о плагинах Picodata.
_pico_plugin¶
Поля:
name
: (string)enabled
: (boolean)services
: (array)version
: (string)description
: (string)migration_list
: (array)
Индексы:
_pico_plugin_name
(unique), parts:[name, version]
_pico_service¶
Содержит информацию о топологии сервисов, включенных в плагины Picodata.
Поля:
plugin_name
: (string)name
: (string)version
: (string)tiers
: (array)description
: (string)
Индексы:
_pico_service_name
(unique), parts:[plugin_name, name, version]
_pico_service_route¶
Содержит информацию о маршрутизации между сервисами Picodata.
Поля:
plugin_name
: (string)plugin_version
: (string)service_name
: (string)instance_name
: (string)poison
: (boolean)
Индексы:
_pico_service_routing_key
(unique), parts:[plugin_name, plugin_version, service_name, instance_name]
_pico_plugin_migration¶
Содержит информацию о миграциях плагинов Picodata.
Поля:
plugin_name
: (string)migration_file
: (string)hash
: (string)
Индексы:
_pico_plugin_migration_primary_key
(unique), parts:[plugin_name, migration_file]
_pico_plugin_config¶
Содержит информацию о конфигурациях плагинов Picodata.
Поля:
plugin
: (string)version
: (string)entity
: (string)key
: (string)value
: (any)
Индексы:
_pico_plugin_config_pk
(unique), parts:[plugin, version, entity, key]