Описание системных таблиц¶
Данный раздел описывает таблицы Picodata, используемые для служебных нужд. Перечисленные системные таблицы являются глобальными.
По умолчанию доступ к системным таблицам запрещен всем пользователям
СУБД, кроме admin и pico_service.
Описание соответствует версии Picodata 25.2.0-23-ge0b4eb122.
Описание схемы данных¶
_pico_table¶
Содержит информацию о пользовательских таблицах Picodata.
Глобальные таблицы реплицируются на каждый инстанс в кластере.
В шардированных таблицах весь набор данных разбивается на
бакеты, пронумерованные
bucket_id. Каждый репликасет хранит свой набор бакетов. Данные
реплицируются между инстансами, принадлежащими одному репликасету.
Поля:
id: (unsigned)name: (string) название таблицыdistribution: (map) определяет распределение данных в кластере. Возможны следующие варианты:{"Global": null}— глобальная таблица{"ShardedImplicitly": [sharding_key, sharding_fn, tier]}— шардированная таблица,bucket_idвычисляется автоматически какsharding_fn(sharding_key)sharding_fn: (string) функция шардирования, на сегодняшний день поддерживается только"murmur3"sharding_key: (array) ключ шардирования — массив полей[field, ...], по которым вычисляетсяbucket_idtier: имя тира, на инстансах которого хранятся данные этой таблицы. Тир указывается при создании таблицы (CREATE TABLE ... ON TIER ...)
{"ShardedByField": [field, tier]}— шардированная таблица, в качествеbucket_idиспользуется значение поляfield(ровно одного). Так же, указывается имя тира, на инстансах которого хранятся данные
format: (array,[{"name": ..., "field_type": ..., "is_nullable": ...}]) массив словарей с описанием формата полей таблицы:name: (string) название поляfield_type: (string,"any" | "unsigned" | "string" | "double" | "integer" | "boolean" | "varbinary" | "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)scope: (string)value: (any)
Индексы:
_pico_db_config_pk(unique), parts:[key, scope]_pico_db_config_key(non-unique), parts:[key]
Описание топологии кластера¶
_pico_peer_address¶
Содержит адреса всех пиров кластера.
Поля:
raft_id: (unsigned)address: (string)connection_type: (string)
Индексы:
_pico_peer_address_raft_id(unique), parts:[raft_id, connection_type]
_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)picodata_version: (string)
Индексы:
_pico_instance_name(unique), parts:[name]_pico_instance_uuid(unique), parts:[uuid]_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)bucket_count: (unsigned)
Индексы:
_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]