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

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

Данный раздел описывает таблицы Picodata, используемые для служебных нужд. Перечисленные системные таблицы являются глобальными.

Описание схемы данных

_pico_table

Содержит информацию о пользовательских таблицах Picodata.

Глобальные таблицы реплицируются на каждый инстанс в кластере.

В шардированных таблицах весь набор данных разбивается на сегменты — виртуальные бакеты (bucket), пронумерованные bucket_id. Каждый репликасет хранит свой набор бакетов. Данные реплицируются между инстансами, принадлежащими одному репликасету.

Поля:

  • id: (unsigned)
  • name: (string) название таблицы
  • distribution: (array) определяет распределение данных в кластере. Возможны следующие варианты:
    • ["global"] — глобальная таблица
    • ["sharded_implicitly", sharding_key, sharding_fn] — шардированная таблица, bucket_id вычисляется автоматически как sharding_fn(sharding_key)
      • sharding_fn: (string) функция шардирования, на сегодняшний день поддерживается только "crc32"
      • sharding_key: (array) ключ шардирования — массив полей [field,...], по которым вычисляется bucket_id
    • ["sharded_by_field", field] — шардированная таблица, в качестве bucket_id используется значение поля field
  • format: (array, [[field_name, field_type, is_nullable]]) массив с описанием формата полей таблицы:
    • field_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) создатель таблицы

Индексы:

  • id (unique), parts: [id]
  • name (unique), parts: [name]

_pico_index

Содержит информацию об индексах БД.

Поля:

  • table_id: (unsigned)
  • id: (unsigned)
  • name: (string)
  • local: (boolean)
  • parts: (array)
  • schema_version: (unsigned)
  • operable: (boolean)
  • unique: (boolean)

Индексы:

  • id (unique), parts: [table_id, id]
  • name (unique), parts: [table_id, 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) — идентификатор владельца (создателя) хранимой процедуры

Индексы:

  • id (unique), parts: [id]
  • name (unique), parts: [name]

Описание свойств кластера

_pico_property

Содержит свойства кластера в формате «ключ—значение».

Поля:

  • key: (string)
  • value: (any)

Индексы:

  • key (unique), parts: [key]

Описание топологии кластера

_pico_peer_address

Содержит адреса всех пиров кластера.

Поля:

  • raft_id: (unsigned)
  • address: (string)

Индексы:

  • raft_id (unique), parts: [raft_id]

_pico_instance

Содержит информацию обо всех инстансах кластера.

Поля:

  • instance_id: (string)
  • instance_uuid: (string)
  • raft_id: (unsigned)
  • replicaset_id: (string)
  • replicaset_uuid: (string)
  • current_grade: (array)
  • target_grade: (array)
  • failure_domain: (map)
  • tier: (string)

Индексы:

  • instance_id (unique), parts: [instance_id]
  • raft_id (unique), parts: [raft_id]
  • replicaset_id (non-unique), parts: [replicaset_id]

_pico_replicaset

Содержит информацию обо всех репликасетах кластера.

Поля:

  • replicaset_id: (string)
  • replicaset_uuid: (string)
  • current_master_id: (string)
  • target_master_id: (string)
  • tier: (string)
  • weight: (number)
  • weight_origin: (string)
  • state: (string, "ready" | "not-ready")

Индексы:

  • replicaset_id (unique), parts: [replicaset_id]

_pico_tier

Содержит информацию обо всех тирах в кластере.

Поля:

  • name: (string)
  • replication_factor: (unsigned)

Индексы:

  • name (unique), parts: [name]

Описание управления доступом

_pico_user

Содержит информацию обо всех пользователях и ролях Picodata.

Поля:

  • id: (unsigned)
  • name: (string)
  • schema_version: (unsigned)
  • auth: (array)
  • owner: (unsigned)

Индексы:

  • id (unique), parts: [id]
  • name (unique), parts: [name]

_pico_privilege

Содержит информацию обо всех привилегиях, предоставленных пользователям Picodata.

Поля:

  • privilege: (string)
  • object_type: (string)
  • object_id: (integer)
  • grantee_id: (unsigned)
  • grantor_id: (unsigned)
  • schema_version: (unsigned)

Индексы:

  • primary (unique), parts: [grantee_id, object_type, object_id, privilege]
  • object (non-unique), parts: [object_type, object_id]