Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • core/docs
1 result
Show changes
Commits on Source (2)
......@@ -16,18 +16,44 @@ Picodata 23.06.0-232-ge436159d5
Содержит информацию о пользовательских
[таблицах](../overview/glossary.md#table) Picodata.
Глобальные таблицы реплицируются на каждый инстанс в кластере.
В шардированных таблицах весь набор данных разбивается на сегменты —
виртуальные [бакеты](../overview/glossary.md#bucket) (bucket),
пронумерованные `bucket_id`. Каждый репликасет хранит свой набор
бакетов. Данные реплицируются между инстансами, принадлежащими одному
репликасету.
Поля:
* `id`: (_unsigned_)
* `name`: (_string_)
* `distribution`: (_array_)
* `format`: (_array_)
* `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_)
* `engine`: (_string_, `"memtx" | "vinyl"`) [движок хранения](../overview/glossary.md#db-engine)
Индексы:
......
......@@ -94,14 +94,24 @@ Picodata содержит следующие встроенные системн
На логическом уровне единицей кластера является узел. Под узлом, в зависимости от контекста, может пониматься как отдельная вычислительная единица, обладающая пулом ресурсов (физический сервер, виртуальная машина, контейнер), так и программный экземпляр Picodata, уже входящий в состав кластера.
Также инстанс является репликой в составе репликасета и может входить в указанную при его запуске группу инстансов.
### Тир (tier) {: #tier }
**Тир** — это группа инстансов, объединенных по функциональному назначению.
В части хранения шардированных данных тир представляет собой отдельную
группу хранения. Для каждой шардированной таблицы определена
принадлежность конкретному тиру.
<!--См. также:
- [Запуск кластера — Тиры](../tutorial/deploy.md#tiers) -->
### Кластер (cluster) {: #cluster }
**Кластер** — набор логических и программных узлов, составляющих отдельную централизованно управляемую группу с общим пространством хранения.
**Кластер** — набор логических и программных узлов, составляющих централизованно управляемую группу с общей схемой данных.
**Кластер** является наиболее крупной сущностью в системе хранения, в некотором смысле он и есть система хранения. Внутри кластера находятся инстансы, объединенные в репликасеты (см. ниже). Дополнительно, в Picodata используется понятие групп инстансов — отдельного способа более гибко управлять большим числом инстансов в зависимости от их ролей, характера нагрузки и топологии сети.
**Кластер** является наиболее крупной сущностью в системе хранения, в некотором смысле он и есть система хранения. Внутри кластера находятся инстансы, объединенные в репликасеты, которые, в свою очередь, входят в состав тиров.
Схематичное представление кластера, в составе которого есть некоторое число инстансов, репликасетов и групп инстансов, показано ниже.<a name="cluster_group"></a>
Схематичное представление кластера, в составе которого есть некоторое число инстансов, репликасетов и тиров, показано ниже.<a name="cluster_group"></a>
![Cluster](../images/cluster_group.svg)
......@@ -120,14 +130,6 @@ Picodata содержит следующие встроенные системн
Термин _лидер_ часто путают с _мастером_ применительно к репликации Tarantool. В Picodata они хоть и близки, но все же отличаются по смыслу. Под _мастером_ следует понимать инстанс, который выполняет пользовательские DML-операции (insert / update / delete). На практике чаще всего такой инстанс один, и в таком случае оба термина описывают один и тот же инстанс (отсюда и путаница), но в Tarantool архитектурно заложена возможность вести запись на нескольких узлах репликасета одновременно — т.н. режим мультимастера (multi-master). Даже в таком режиме операции DDL (`box.schema.create_space` и т.д.) должен выполнять лишь один инстанс из всех, и здесь становится важно отличать _лидера_ от _мастера_. Несмотря на то, что в Picodata режим мультимастера пока не реализован, документация и код должны использовать эти термины корректно.
### Группа инстансов (instance_group) {: #instance_group }
**Группа инстансов** — это логическое объединение инстансов с общим фактором репликации и ролями. Каждая группа шардируется индивидуально.
Концепция групп является аналогом [vshard_group](https://www.tarantool.io/ru/doc/latest/book/cartridge/cartridge_cli/commands/replicasets/#list-vshard-groups){:target="_blank"} из Cartridge, но дополнительно позволяет назначать роли группам (в Cartridge роли настраивались индивидуально для каждого репликасета).
**Группа инстансов** является более крупным образованием, чем репликасет. См пояснительную [картинку](#cluster_group).
Каждая шардированная таблица принадлежит одной конкретной инстанс-группе. На инстансах из других групп таблица физически не создается. Но так как схема данных является общей на весь кластер, создавать две таблицы с одинаковым именем в разных группах не разрешается. Принадлежность инстанс-группе определяется только для шардированных таблиц, глобальные таблицы создаются повсюду.
### Домен отказа (failure_domain) {: #failure_domain }
**Домен отказа** является признаком физического расположения сервера, на котором запущен инстанс. Указание домена отказа позволяет обозначить наличие единой точки отказа у двух инстансов. Смысл данного параметра состоит в том, чтобы в один репликасет попадали инстансы из разных физических локаций, что повышает отказоустойчивость кластера.
......@@ -139,8 +141,12 @@ Picodata содержит следующие встроенные системн
Если домены отказа двух инстансов имеют хотя бы одну общую зону (и ключ, и значение), то допускается возможность одновременной потери связи с обоими. Поэтому инстансы, делящие общую зону, не будут объединены в репликасет. Picodata также стремится распределить голосующие raft-узлы таким образом, чтобы их домены отказа имели по минимуму общих зон.
### Фактор репликации (replication_factor) {: #replication_factor }
**Фактор репликации** — число инстансов в репликасете. Задается общим на группу инстансов (так же как и набор ролей). Отредактировать фактор репликации, сохраненный в конфигурации кластера, можно командой `picodata set-replication-factor`. Редактирование конфигурации сказывается только на вновь добавляемых инстансах, но не затрагивает уже работающие.
**Фактор репликации** — число инстансов в репликасете. Задается общим на [тир](#tier).
См. также:
- [Запуск кластера — Репликация и зоны доступности](../tutorial/deploy.md#failure-domains)
### Бакет (bucket) {: #bucket }
**Bucket (бакет)** — виртуальная неделимая единица хранения данных, обеспечивающая их локальность (т. е. нахождение на каком-то одном репликасете).
......
......@@ -91,7 +91,7 @@ Picodata будет избегать помещения двух инстанс
#### init-replication-factor {: #init-replication-factor}
`--init-replication-factor <INIT_REPLICATION_FACTOR>`<br>
Число реплик (инстансов с одинаковым набором хранимых данных) для каждого репликасета.
Аргумент используется только при начальном создании кластера и в дальнейшем игнорируется.
Данный параметр не может использоваться одновременно с [init-cfg](#init-cfg).
Аналогичная переменная окружения: `PICODATA_INIT_REPLICATION_FACTOR`.
#### instance-id {: #instance-id}
......@@ -127,6 +127,17 @@ Picodata будет избегать помещения двух инстанс
Путь к файлу Lua-скрипта, который будет выполнен после присоединения инстанса к кластеру.
Аналогичная переменная окружения: `PICODATA_SCRIPT`.
#### init-cfg {: #init-cfg}
`--init-cfg <path>`<br>
Относительный или абсолютный путь к конфигурационному файлу.<!--[конфигурационному файлу](../tutorial/deploy.md#init-cfg)-->
Данный параметр не может использоваться одновременно с [init-replication-factor](#init-replication-factor). Аналогичная переменная окружения: `PICODATA_INIT_CFG`.
#### tier {: #tier}
`--tier <tier>` <br>
Название [тира](../overview/glossary.md#tier) которому будет
принадлежать инстанс. Аналогичная переменная окружения:
`PICODATA_INSTANCE_TIER`.
## Команда `connect` {: #connect-command }
Подключается к указанному инстансу и открывает интерактивную консоль
......