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

Merge branch '14-04' into 'main'

New images and words for Picodata product description

See merge request picodata/picodata/docs!6
parents ecd84068 84f44183
No related branches found
No related tags found
1 merge request!6New images and words for Picodata product description
Pipeline #3806 passed
......@@ -9,10 +9,10 @@
* Полностью российское программное обеспечение;
## Гарантия сохранности данных
Picodata реализует [ACID-подход](https://ru.wikipedia.org/wiki/ACID), при котором любые изменения данных предварительно сохраняются в журнале на диске и реплицируются на несколько серверов. При выходе из строя любой компоненты данные автоматически восстанавливаются из существующих копий. Все операции с топологией кластера и схемой данных также атомарны.
Picodata реализует [ACID-подход](https://ru.wikipedia.org/wiki/ACID), при котором любые изменения данных предварительно сохраняются в журнале на диске и реплицируются на несколько серверов. При выходе из строя любой компоненты данные автоматически восстанавливаются из существующих копий, что позволяет добиться высокой отказоустойчивости. Все операции с топологией кластера и схемой данных также атомарны.
## Горизонтальное масштабирование
Picodata разделяет данные на независимые фрагменты (шарды) по числу доступных ядер процессора. Такой подход снижает издержки на разделяемый доступ к данным, повышает утилизацию оборудования и позволяет в любой момент нарастить вычислительную мощность системы.
Picodata обеспечивает эффективное управление распределённым кластером. Данные в кластере разделены на независимые фрагменты (шарды) по числу доступных ядер процессора. Такой подход снижает издержки на разделяемый доступ к данным, повышает утилизацию оборудования и позволяет в любой момент нарастить вычислительную мощность системы.
## Выполнение бизнес-логики внутри решетки данных
Мы в Picodata нашли способ масштабировать не только данные, но и вычисления. Наша система хранит и версионирует программный код на каждом узле кластера. Мы разработали целый ряд техник, позволяющих безопасно обновлять распределенные приложения, сохраняя целостность данных и избегая простоев системы (no downtime). Все это позволяет обеспечить бескомпромиссную скорость операций с данными.
......
# Преимущества Rust
Программное обеспечение Picodata предоставляет встроенные средства разработки приложений на языке Rust. Такой выбор языка имеет ряд преимуществ, не только благодаря растущей популярности Rust, но и за счёт его богатой стандартной библиотеки, которая позволяет реализовывать многие функции, не прибегая к сторонним библиотекам, например, в отличие от Lua. Также, к числу достоинств Rust относятся:
- строгая статическая типизация, упрощающая разработку и поддержку больших проектов. При этом наличие мощного движка выведения типов ([type inference](https://dhghomon.github.io/easy_rust/Chapter_8.html)) позволяет не указывать явно все типы в коде;
- безопасная работа с памятью ([borrow checker](https://doc.rust-lang.org/1.8.0/book/references-and-borrowing.html)), что делает код безопаснне чем на языках C/C++. При этом код остаётся более эффективным чем на языках, использующих "сборщики мусора" (C#, Java, Go), за счёт того, что безопасность обеспечивается во время компиляции, а не исполнения;
- мощные встроенные средства оптимизации (а также оптимизации LLVM) делают Rust одним из самых эффективных языков на сегодняшний день;
- развитая экосистема: [Cargo](https://doc.rust-lang.org/cargo/) — единый инструмент для настройки/сборки/тестирования/установки зависимостей и публикации кода. [Crates.io](https://crates.io) — централизованное хранилище Rust-модулей, написанных сообществом.
- стандартизированная документация — наиболее удобный способ комментирования собственного кода (достаточно написать комментарий с простой разметкой, и затем при публикации модуля документация автоматически становится доступна всем пользователям на сайте [docs.rs](https://docs.rs));
- быстро растущее сообщество разработчиков и энтузиастов. В ежегодном [опросе](https://insights.stackoverflow.com/survey/2021) пользователей [stackoverflow.com](https://stackoverflow.com) язык Rust несколько лет подряд [занимает первое место](https://stackoverflow.blog/2020/06/05/why-the-developers-who-use-rust-love-it-so-much) по удовлетворённости пользователей (те, которые пишут на Rust, не хотят писать ни на чём другом).
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
......@@ -38,18 +38,23 @@ Picodata позволяет развёртывать и управлять кл
## Архитектура
Архитектура кластера под управлением Picodata предполагает систему узлов, входящих в состав кластера. Каждый узел может выполнять различные роли, например роль хранения данных, роль сервера приложения, или служебную роль координатора кластера.
Все узлы работают с единой схемой данных и кодом приложения. Каждый процесс базы данных выполняется на одном процессорном ядре и хранит все свои данные в оперативной памяти.
Любой отдельный узел является часть набора реплик, который также называют *репликасетом*. Репликасет может состоять из одного узла или нескольких дубликатов одного и того же набора данных. Внутри репликасета всегда есть *лидер* (основной узел) и - если реплик больше 1 - то некоторое число вспомогательных узлов, обеспечивающие отказоустойчивость системы в случае выхода из строя или недоступности лидера. Число реплик определяется *фактором репликации*, заданным для набора в глобальных настройках Picodata.
Любой отдельный узел является часть набора реплик, который также называют *репликасетом*. Репликасет может состоять из одного узла или нескольких дубликатов одного и того же набора данных. Внутри репликасета всегда есть *лидер* (основной узел) и если реплик больше 1 то некоторое число вспомогательных узлов, обеспечивающие отказоустойчивость системы в случае выхода из строя или недоступности лидера. Число реплик определяется *фактором репликации*, заданным для набора в глобальных настройках Picodata.
На рисунке ниже показана схема простого кластера из двух репликасетов, каждый из которых состоит из двух узлов (активного и в ожидании):
![Схема кластера](cluster.png)
Репликасеты являются единицами физического масштабирования кластера. Данные балансируются между ними автоматически.
Внутри каждого репликасета есть *bucket* - виртуализированная единица хранения, обеспечивающая локальность данных (например, хранение нескольких связанных с клиентом записей на одном физическом узле). Таким образом, при горизонтальном масштабировании кластера данные распределяются по устройствам хранения не напрямую, а внутри bucket'ов. Это позволяет увеличить скорость выполнения запросов к БД и одновременно с этим снизить нагрузку на сетевую инфраструктуру кластера.
Внутри каждого репликасета есть *bucket* виртуализированная неделимая единица хранения, обеспечивающая локальность данных (например, хранение нескольких связанных с клиентом записей на одном физическом узле). Таким образом, при горизонтальном масштабировании кластера данные распределяются по устройствам хранения не напрямую, а внутри bucket'ов. Это позволяет увеличить скорость выполнения запросов к БД и одновременно с этим снизить нагрузку на сетевую инфраструктуру кластера. Bucket всегда хранится физически на одном узле и является промежуточным звеном между данными и устройством хранения. В каждом репликасете может быть много bucket'ов (или не быть не одного). Внутри bucket'а данные задублированы по всем узлам в рамках репликасета в соответствие с фактором репликации.
На схеме ниже показан пример шардирования элементов кластера путём распределения репликасетов по нескольким серверам:
На схеме ниже показан пример схемы хранения данных внутри репликасета:
![Принцип шардирования](sharding.png)
![Хранение данных](storage.png)
В свою очередь, сервера могут находиться в разных дата-центрах и быть географически распределены. С точки зрения администратора кластера, данные сначала попадают в опредёленный bucket и лишь затем оказываются на физическом устройстве хранения.
Каждый bucket в любой момент времени может находиться только в одном репликасете. В то же время, в репликасете может быть несколько bucket'ов, или не быть ни одного. Внутри bucket'а данные задублированы по всем узлам в рамках репликасета в соответствие с фактором репликации.
\ No newline at end of file
Узлы внутри репликасета обеспечивают его отказоустойчивость. Однако, для повышения надёжности каждый узел внутри репликасета находится на разных физических серверах, а также, как правило, в разных, географически удалённых друг от друга датацентрах. Таким образом, репликасет становится *распределённым* и в случае недоступности или выходы из строя датацентра продолжает работать, делая активным другой узел. За распределение узлов между разными серверами отвечает библиотека Tarantool vShard, используемая в Picodata.
Пример географического распределения репликасета показан на схеме ниже:
![Шардирование](sharding.png)
Таким образом, каждый узел является *репликасетом*, а каждый репликасет — *шардом*.
\ No newline at end of file
......@@ -6,6 +6,7 @@ Picodata — это распределенный сервер приложен
* Общее [описание](description) продукта
* [Преимущества](benefits) использования Picodata
* [Преимущества языка Rust](benefits_rust) при разработке приложений
* Администрирование БД как [услуга](services)
* Системные требования
* Руководство по установке
......
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
docs/storage.png 0 → 100644
NaN GiB (NaN%)
View file @ d41ed230
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
......@@ -2,7 +2,8 @@ site_name: Портал документации Picodata
nav:
- Главная: index.md
- Описание продукта: description.md
- Преимущества: benefits.md
- Преимущества Picodata: benefits.md
- Преимуществая языка Rust: benefits_rust.md
- Установка и первые шаги: install.md
- Услуги: services.md
theme:
......
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