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

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

Данный раздел описывает таблицы 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") движок хранения

Индексы:

  • 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_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)

Индексы:

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

_pico_privilege

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

Поля:

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

Индексы:

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

_pico_role

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

Поля:

  • id (unsigned)
  • name (string)
  • schema_version (unsigned)

Индексы:

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