Skip to content
Snippets Groups Projects
Commit c6dd26e9 authored by Alexander Tolstoy's avatar Alexander Tolstoy
Browse files

Merge branch '14-04' into 'main'

Fixed some typos

See merge request picodata/picodata/docs!8
parents aac7cfd1 893f881d
No related branches found
No related tags found
1 merge request!8Fixed some typos
Pipeline #3867 passed
# Общее описание продукта
## Что такое Picodata?
Программное обеспечение Picodata — это сервер приложений со встроенной базой данных для работы в распределённых системах.
Программное обеспечение Picodata — это сервер приложений со встроенной базой данных для работы в распределенных системах.
Picodata предоставляет систему хранения данных и платформу для работы персистентных приложений на языке Rust и средства управления СУБД на языке SQL.
## Назначение
Основным предназначением продукта Picodata является горизонтально масштабируемое хранение структурированных и неструктурированных данных, управление ими, предоставление среды вычислений внутри кластера, состоящего из реплицированных отдельных узлов. Такие узлы называют экземплярами Picodata или *инстансами*.
Основным назначением продукта Picodata является горизонтально масштабируемое хранение структурированных и неструктурированных данных, управление ими, предоставление среды вычислений внутри кластера, состоящего из реплицированных отдельных узлов. Такие узлы называют экземплярами Picodata или *инстансами*.
## Задачи
Задачи, решаемые ПО Picodata, включают в себя:
Программное обеспечение Picodata решает следующие задачи:
* Реализацию общего линеаризованного хранилища конфигурации, схемы данных и топологии кластера, встроенного в распределенную систему управления базами данных.
* Предоставление графического интерфейса и интерфейса командной строки по управлению топологией кластера.
* Реализацию runtime-библиотек по работе с сетью, файловому вводу-выводу, созданию зеленых потоков (green threads) и управлению ими, работе со встроенной СУБД средствами языка Rust.
* Поддержку языка SQL для работы как с данными отдельного инстанса, так и с данными всего кластера.
* Управление кластером.
* Поддержку жизненного цикла приложения в кластере, включая версионирование, управление зависимостями, упаковку дистрибутива, развертывание и обновление запущенных приложений.
* реализацию общего линеаризованного хранилища конфигурации, схемы данных и топологии кластера, встроенного в распределенную систему управления базами данных;
* предоставление графического интерфейса и интерфейса командной строки по управлению топологией кластера;
* реализацию runtime-библиотек по работе с сетью, файловому вводу-выводу, созданию зеленых потоков (green threads) и управлению ими, работе со встроенной СУБД средствами языка Rust;
* поддержку языка SQL для работы как с данными отдельного инстанса, так и с данными всего кластера;
* управление кластером;
* поддержку жизненного цикла приложения в кластере, включая версионирование, управление зависимостями, упаковку дистрибутива, развертывание и обновление запущенных приложений.
## Область применения
Хранилище данных с использованием ПО Picodata обладает явными преимуществами, которые во многом определяют наиболее выгодные области применения. Речь идёт о быстром доступе к данным внутри распределённого хранилища. Примерами могут служить:
Кластер Picodata обеспечивает быстрый доступ к данным внутри распределенного хранилища. Это позволяет использовать его в следующих областях:
* управление телекоммуникационным оборудованием;
* банковские и в целом финансовые услуги, биржевые торги, аукционы;
* формирование персональных маркетинговых предложений с привязкой ко времени и месту;
* обработка больших объёмов данных в реальном времени для систем класса "интернет вещей" (IoT);
* обработка больших объемов данных в реальном времени для систем класса "интернет вещей" (IoT);
* игровые рейтинговые таблицы;
* и многое другое!
......@@ -31,7 +31,7 @@ Picodata предоставляет систему хранения данных
* автоматическое горизонтальное масштабирование кластера;
* более простая настройка для запуска шардированного кластера. Требуется меньше файлов конфигурации;
* совместимость с любыми инструментами развёртывания инстансов (Ansible, Chef, Puppet);
* совместимость с любыми инструментами развертывания инстансов (Ansible, Chef, Puppet и др.);
* обеспечение высокой доступности данных без необходимости в кластере Etcd и дополнительных настройках;
* автоматическое определение активного инстанса в репликасетах любого размера;
* единая схема данных во всех репликасетах кластера;
......@@ -43,7 +43,7 @@ Picodata предоставляет систему хранения данных
### Составные части кластера
Архитектура кластера Picodata предполагает систему отдельных *инстансов* — программных узлов, входящих в состав кластера. Каждый такой узел может выполнять различные роли, например роль хранения данных, роль сервера приложения, или служебную роль координатора кластера.
Все инстансы работают с единой схемой данных и кодом приложения. Каждый процесс базы данных выполняется на одном процессорном ядре и хранит используемый набор данных в оперативной памяти.
Любой отдельный инстанс является частью набора реплик, который также называют *репликасетом*. Репликасет может состоять из одного или нескольких инстансов — дубликатов одного и того же набора данных. Внутри репликасета всегда есть *активный* инстанс и — если реплик больше 1 — то некоторое число дополнительных инстансов, обеспечивающих отказоустойчивость системы в случае выхода из строя или недоступности активного инстанса. Число реплик определяется *фактором репликации*, заданным в глобальных настройках Picodata.
Любой отдельный инстанс является частью набора реплик, который также называют *репликасетом*. Репликасет может состоять из одного или нескольких инстансов — дубликатов одного и того же набора данных. Внутри репликасета всегда есть *активный* инстанс и — если реплик больше 1 — то некоторое число *резервных* инстансов, обеспечивающих отказоустойчивость системы в случае выхода из строя или недоступности активного инстанса. Число реплик определяется *фактором репликации*, заданным в глобальных настройках Picodata.
На рисунке ниже показана схема простого кластера из двух репликасетов, каждый из которых состоит из двух инстансов (активного и резервного):
......@@ -52,21 +52,21 @@ Picodata предоставляет систему хранения данных
Репликасеты являются единицами горизонтального масштабирования кластера. Данные балансируются между ними автоматически.
### Хранение данных
Внутри каждого репликасета есть *bucket* — виртуализированная неделимая единица хранения, обеспечивающая локальность данных (например, хранение нескольких связанных с клиентом записей на одном физическом узле сети). Сам по себе bucket не имеет ограничений по ёмкости и может содержать любой объём данных. Горизонтальное масштабирование позволяет распределить bucket'ы по разным шардам, оптимизировав производительность кластера путём добавления новых реплицированных инстансов. Чем больше репликасетов входит в состав кластера, тем меньше нагрузка на каждый из них. Bucket хранится физически на одном репликасете и является промежуточным звеном между данными и устройством хранения. В каждом репликасете может быть много bucket'ов (или не быть не одного). Внутри bucket'а данные задублированы по всем инстансам в рамках репликасета в соответствии с фактором репликации. Количество bucket'ов задаётся при первоначальной настройке кластера.
Внутри каждого репликасета есть *bucket* — виртуализированная неделимая единица хранения, обеспечивающая локальность данных (например, хранение нескольких связанных с клиентом записей на одном физическом узле сети). Сам по себе bucket не имеет ограничений по емкости и может содержать любой объем данных. Горизонтальное масштабирование позволяет распределить bucket'ы по разным шардам, оптимизировав производительность кластера путем добавления новых реплицированных инстансов. Чем больше репликасетов входит в состав кластера, тем меньше нагрузка на каждый из них. Bucket хранится физически на одном репликасете и является промежуточным звеном между данными и устройством хранения. В каждом репликасете может быть много bucket'ов (или не быть ни одного). Внутри bucket'а данные задублированы по всем инстансам в рамках репликасета в соответствии с фактором репликации. Количество bucket'ов задается при первоначальной настройке кластера.
На схеме ниже показан пример схемы хранения данных внутри репликасета:
![Хранение данных](storage.svg)
### Отказоустойчивость
Наличие нескольких реплик внутри репликасета обеспечивают его отказоустойчивость. Дополнительно для повышения надёжности каждый инстанс кластера внутри репликасета находится на разных физических серверах, а в некоторых случаях — в удалённых друг от друга датацентрах. Таким образом, в случае недоступности датацентра в репликасете происходит переключение на резервную реплику (инстанс) без прерывания работы.
Наличие нескольких реплик внутри репликасета обеспечивают его отказоустойчивость. Дополнительно для повышения надежности каждый инстанс кластера внутри репликасета находится на разных физических серверах, а в некоторых случаях — в удаленных друг от друга датацентрах. Таким образом, в случае недоступности датацентра в репликасете происходит переключение на резервную реплику/инстанс без прерывания работы.
Пример географического распределения репликасета показан на схеме ниже:
![Отказоустойчивость](failover.svg)
### Шардирование
Шардирование — это распределение bucket'ов между различными репликасетами. В Picodata используется основанное на хэшах шардирование с хранением данных в виртуальных bucket'ах. Каждый репликасет является *шардом*, и чем больше репликасетов имеется в кластере, тем эффективнее данная функция может разделить массив данных на отдельные наборы данных меньшего размера. При добавлении новых инстансов в кластер и/или формировании новых репликасетов, Picodata автоматически равномерно распределит bucket'ы с учётом новой конфигурации.
Шардирование — это распределение bucket'ов между различными репликасетами. В Picodata используется основанное на хэшах шардирование с хранением данных в виртуальных bucket'ах. Каждый репликасет является *шардом*, и чем больше репликасетов имеется в кластере, тем эффективнее данная функция может разделить массив данных на отдельные наборы данных меньшего размера. При добавлении новых инстансов в кластер и/или формировании новых репликасетов Picodata автоматически равномерно распределит bucket'ы с учетом новой конфигурации.
Пример автоматического шардирования при добавлении в кластер новых инстансов показан на схеме ниже:
![Шардирование](sharding.svg)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment