Перейти к содержанию

Описание системных таблиц

Данный раздел описывает таблицы 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) — признак доступности процедуры (для preparefalse, для committrue)
  • 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]