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

Общее описание продукта

Данный раздел содержит общие сведения о продукте Picodata, его назначении, области применения и внутреннем устройстве.

Что такое Picodata?

Picodata — это распределенная система промышленного уровня для управления базами данных с возможностью расширения функциональности за счет плагинов. Исходный код Picodata открыт. Программное обеспечение Picodata реализует хранение структурированных и неструктурированных данных, транзакционное управление данными, язык запросов SQL, а также поддержку плагинов на языках Rust и Lua.

Назначение

Основным назначением продукта Picodata является горизонтально масштабируемое хранение структурированных и неструктурированных данных, управление ими, предоставление среды вычислений внутри кластера, состоящего из реплицированных отдельных узлов (инстансов). Данная комбинация возможностей позволяет эффективно реализовать сценарии управления наиболее востребованными, часто изменяющимися, горячими данными. В традиционных корпоративных архитектурах для ускорения и повышения надёжности доступа к данным классических, универсальных СУБД используются кэши и шины данных. Цель развития Picodata: заменить три компонента корпоративной архитектуры — кэш, шина и витрина доступа к данным — единым, высокопроизводительным и строго консистентным решением.

Роль в платформе данных

С точки зрения использования нашего ПО в составе корпоративной платформы, Picodata предоставляет операционный слой управления данными для решений класса In-memory data grid (IMDG). Это резидентная база данных для очень быстрой обработки среднего по объёму массива данных. Все данные хранятся в оперативной памяти, но при этом они персистентны за счёт периодического обновления снимков БД (snapshots) на диске. Ниже показана условная пирамида управления данными с точки зрения их объёма.

picodata_db

Picodata занимает верхнюю часть пирамиды, т.к. оперирует данными ограниченного объёма. На изображении показаны примеры прочих СУБД, которые служат для управления более крупными массивами данных и лучше подходят для архивного хранения и построения аналитических отчетов. В то же время такие СУБД хуже справляются с потоком часто меняющихся данных. Это именно та область, где Picodata эффективно решает поставленные задачи.

Задачи

Программное обеспечение Picodata решает следующие задачи:

  • реализация общего линеаризованного хранилища конфигурации, схемы данных и топологии кластера, встроенного в распределенную систему управления базами данных;
  • предоставление интерфейса командной строки по управлению топологией кластера;
  • реализация runtime-библиотек по работе с сетью, файловому вводу-выводу, реализация кооперативной многозадачности и управления потоками, работа со встроенной СУБД средствами языка Rust;
  • поддержка языка SQL для работы как с данными отдельного инстанса, так и с данными всего кластера;
  • управление кластером;
  • поддержка жизненного цикла приложения в кластере, включая версионирование, управление зависимостями, упаковку дистрибутива, развертывание и обновление запущенных приложений.

Варианты и области применения

Мы выделяем для продукта Picodata следующие четыре варианта применения:

  • использование непосредственно как БД с хранением данных в оперативной памяти (IMDB);
  • распределенное хранилище объектов в памяти с доступом по объектным ключам (IMDG);
  • запуск и использование бизнес-логики на сервере приложений Picodata непосредственно рядом с данными;
  • возможность использования сервера приложений Picodata как платформы для микросервисов.

Области применения в бизнесе

Ключевые преимущества Picodata (скорость, отказоустойчивость, гибкость) позволяют использовать продукт в следующих областях:

  • управление телекоммуникационным оборудованием;
  • банковские и в целом финансовые услуги, биржевые торги (высокочастотный трейдинг), аукционы;
  • формирование персональных маркетинговых предложений с привязкой ко времени и месту;
  • обработка больших объемов данных в реальном времени для систем класса "интернет вещей" (IoT);
  • игровые рейтинговые таблицы;
  • и многое другое!

Особенности кластера Picodata

Кластер с СУБД Picodata обладает следующими свойствами:

  • высокая производительность: от 10000 запросов к данным в секунду;
  • объем обрабатываемых данных: 2-100 Тб;
  • автоматическое горизонтальное масштабирование кластера;
  • простая настройка для запуска шардированного кластера. Не требуется много файлов конфигурации;
  • совместимость с любыми инструментами развертывания инстансов (Ansible, Chef, Puppet и др.);
  • обеспечение высокой доступности данных без необходимости в кластере Etcd и дополнительных настройках;
  • автоматическое определение активного инстанса в репликасетах любого размера;
  • единая схема данных во всех репликасетах кластера;
  • возможность обновлять схему данных и менять топологию работающего кластера, например, добавлять новые инстансы. Picodata автоматически управляет версиями схемы;
  • встроенные инструменты для создания и запуска приложений;
  • гарантия сохранности и консистентности данных.

Архитектура кластера

Составные части кластера

Архитектура кластера Picodata предполагает систему отдельных инстансов — программных узлов, входящих в состав кластера. Каждый такой узел может выполнять различные роли, например роль хранения данных, роль сервера приложения, или служебную роль координатора кластера. Все инстансы работают с единой схемой данных и кодом приложения. Каждый процесс базы данных выполняется на одном процессорном ядре и хранит используемый набор данных в оперативной памяти. Любой отдельный инстанс является частью набора реплик, который также называют репликасетом. Репликасет может состоять из одного или нескольких инстансов — дубликатов одного и того же набора данных. Внутри репликасета всегда есть активный инстанс и — если реплик больше 1 — то некоторое число резервных инстансов, обеспечивающих отказоустойчивость системы в случае выхода из строя или недоступности активного инстанса. Число реплик определяется фактором репликации, заданным в глобальных настройках Picodata.

На рисунке ниже показана схема простого кластера из двух репликасетов, каждый из которых состоит из двух инстансов (активного и резервного).

Репликасеты являются единицами горизонтального масштабирования кластера. Данные балансируются между ними автоматически.

Хранение данных

Внутри каждого репликасета есть бакет (bucket) — виртуализированная неделимая единица хранения, обеспечивающая локальность данных (например, хранение нескольких связанных с клиентом записей на одном физическом узле сети). Сам по себе бакет не имеет ограничений по емкости и может содержать любой объем данных. Горизонтальное масштабирование позволяет распределить бакеты по разным шардам, оптимизируя производительность кластера путем добавления новых реплицированных инстансов. Чем больше репликасетов входит в состав кластера, тем меньше нагрузка на каждый из них. Бакет хранится физически на одном репликасете и является промежуточным звеном между данными и устройством хранения. В каждом репликасете может быть много бакетов (или не быть ни одного). Внутри бакета данные задублированы по всем инстансам в рамках репликасета в соответствии с фактором репликации. Количество бакетов может быть задано при первоначальной настройке кластера. По умолчанию кластер Picodata использует 3000 бакетов.

Ниже показан пример схемы хранения данных внутри репликасета.