Глоссарий

Данный документ содержит официальные пояснения специфических и сложных терминов, используемых в YMatrix.

A

ACID

ACID — это четыре ключевых свойства, которые система управления базами данных (СУБД) должна гарантировать для обеспечения надежности транзакций при записи или обновлении данных: Атомарность, Согласованность, Изолированность и Долговечность.

  • Атомарность: Все операции внутри транзакции либо завершаются полностью, либо не выполняются вовсе. Если во время выполнения возникает ошибка, транзакция откатывается к начальному состоянию, как будто она никогда не происходила.
  • Согласованность: База данных остается в согласованном состоянии до и после транзакции. Данные, записываемые в базу, должны соответствовать всем заранее определенным правилам, включая точность, ссылочную целостность и автоматическое выполнение последующих задач.
  • Изолированность: Обеспечивает, чтобы параллельные транзакции не мешали друг другу, предотвращая несогласованность данных из-за переплетения выполнения. Уровни изоляции включают: Read Uncommitted, Read Committed, Repeatable Read и Serializable.
  • Долговечность: После завершения транзакции её изменения сохраняются навсегда, даже в случае сбоя системы.

AO

AO — это сокращение от Append-Optimized (оптимизированный для добавления), формат хранения, оптимизированный для операций добавления. Таблицы, использующие этот формат, называются AO-таблицами.

AO-таблицы поддерживают массовую загрузку и чтение данных, обеспечивая преимущества производительности по сравнению с HEAP-таблицами. Как строковые, так и столбцовые AO-таблицы могут сжиматься. Строковые AO-таблицы сокращённо обозначаются как AORO/AORS, а столбцовые — как AOCO/AOCS.

B

MatrixCustom Compression Algorithm (Mxcustom)

Сокращение от MatrixCustom — это проприетарный алгоритм сжатия, разработанный YMatrix.

Цепочка кодирования использует особенности временных рядов для достижения глубокого сжатия. Поддерживает сжатие на уровне столбца и таблицы для таблиц MARS2/3, а также автоматическое кодирование.

C

Гиперконвергенция

Гиперконвергенция — это новое понятие в области баз данных, введённое YMatrix. По сравнению с другими архитектурами, гиперконвергенция интегрирует несколько типов данных и операций в единой базе данных, обеспечивая высокую производительность для разнообразных типов данных и сценариев, тем самым устраняя «острова данных».

Внутренне YMatrix использует микроядерную архитектуру. На основе общих компонентов инфраструктуры она предоставляет специализированные комбинации движков хранения и выполнения для различных бизнес-сценариев, формируя специализированные микроядра для повышения производительности записи, хранения и запросов.

Непрерывное представление (CV)

Сокращение от Continuous View — это механизм, обеспечивающий быстрый ответ на агрегационные запросы.

После создания CV система автоматически выполняет реальное агрегирование во время внесения данных, синхронизируясь с базовой таблицей на уровне транзакции.

D

Heap (HEAP)

HEAP — это движок хранения, предоставляемый PostgreSQL, использующий строковое хранение. HEAP-таблицы поддерживают высокую параллельность операций чтения/записи, транзакции и индексирование.

В HEAP-таблицах данные не имеют встроенного порядка и полагаются на индексные страницы для повышения производительности запросов. Данные изначально хранятся в порядке вставки, но движок базы данных может перемещать строки внутри кучи для эффективного хранения. Поэтому порядок строк предсказать невозможно. Для обеспечения упорядоченного вывода пользователи должны использовать ORDER BY.

Для определения постоянного логического порядка хранения строк пользователи должны создать кластеризованный индекс, а не использовать HEAP-таблицу.

E

ETCD

ETCD — это распределённое хранилище ключ-значение, используемое для хранения и извлечения данных в распределённых системах. Оно использует алгоритм консенсуса Raft для обеспечения согласованности и надёжности данных. Разработано для высокой доступности, ETCD обладает надёжными возможностями восстановления после сбоев. Предоставляет простой RESTful API, позволяющий приложениям легко получать доступ и манипулировать парами ключ-значение.

Raft — это алгоритм, решающий проблемы консенсуса в распределённых системах. Он позволяет группе машин функционировать как единое целое, продолжая работу даже при сбое некоторых узлов. Таким образом, алгоритмы консенсуса играют критически важную роль в построении надёжных масштабируемых программных систем.

Связанные понятия:

  • Лидер: Управляющий кластером ETCD, выбираемый через консенсус, и единственный в любой момент времени.
  • Фоллоуер: Копирует журналы, полученные от лидера. Это состояние по умолчанию при запуске ETCD.
  • Кандидат: Узел, способный инициировать выборы лидера.

F

FTP-сервер

FTP-сервер (File Transfer Protocol) — это программное обеспечение, используемое для передачи файлов по компьютерным сетям. Он предоставляет стандартный метод для загрузки и скачивания файлов, а также поддерживает операции управления файлами и каталогами.

G

Failover

Механизм автоматизированных операций, который отслеживает статус узлов через кластер ETCD и автоматически переключает основной и резервный узлы при сбоях.

ETCD является ключевым компонентом сервиса состояния кластера YMatrix, управляя состоянием всех узлов. При сбое любого узла система базы данных автоматически выполняет failover без вмешательства оператора.

Failback

После завершения failover затронутый узел может иметь только первичный/основной экземпляр без здорового зеркального/резервного. При повторном сбое восстановление станет невозможным. Поэтому необходимо использовать инструмент mxrecover для создания здорового зеркального/резервного экземпляра для нового первичного/основного.

H

Скользящее окно

Часто используемая функция в сценариях потоковой обработки. Позволяет непрерывно агрегировать данные в пределах недавнего временного окна.

Скользящие окна часто применяются в мониторинге и оповещениях. Когда данные в окне соответствуют заданным условиям, сервер отправляет оповещения клиентам. Например, вычислять среднюю температуру по каждому устройству каждую минуту и генерировать оповещение, если она превышает 90 градусов.

Кольцевое зеркалирование

Стандартная стратегия распределения зеркал в YMatrix. При наличии как минимум двух хостов последовательность Primary-сегментов на одном хосте рассматривается как линейная лента, сложенная пополам. Зеркала затем размещаются по часовой стрелке на других хостах, начиная с середины.

Добавление новых Primary при масштабировании не нарушает существующие кольца зеркал, а создаёт новое.

Помимо кольцевого зеркалирования, YMatrix поддерживает:

  • Рассеянное зеркалирование: Распределяет зеркала каждого хоста по остальным хостам. Требует больше хостов, чем Primary-сегментов на один хост. Для равномерного распределения количество независимых хостов должно превышать количество сегментных экземпляров на один хост.
  • Групповое зеркалирование: Размещает все зеркала Primary-сегментов одного хоста вместе на другом хосте как группу.

Модель Вулкана

Также известна как Pull-Based Execution. Один из движков выполнения, поддерживаемых YMatrix — движок выполнения Вулкан реализует итеративные вычисления с использованием этой модели.

После разбора SQL-запроса генерируется дерево запроса, где каждый узел представляет алгебраический оператор.

В модели Вулкана операторы действуют как итераторы, каждый из которых предоставляет интерфейс next(). Реализация включает три шага:

  1. Вызов next() дочернего оператора для получения одной кортежной записи.
  2. Обработка кортежа в соответствии с логикой оператора.
  3. Возврат обработанного кортежа или NULL.

Во время выполнения next() вызывается сверху вниз от корня дерева запроса, а данные движутся снизу вверх. Преимущества включают чёткую логику и низкую связанность. Однако обработка по одной строке снижает эффективность использования кэша CPU, а частые вызовы next() создают высокую накладную нагрузку.

Векторизованная модель аналогична модели Вулкана: создаёт дерево запроса и использует pull-based выполнение. Ключевое отличие заключается в том, что каждая итерация возвращает пакет кортежей, а не один. Это снижает накладные расходы на итерации и позволяет использовать аппаратные возможности, такие как SIMD, особенно выгодно для столбцового хранения.

I

Interconnect

Обозначает сетевой уровень в архитектуре базы данных, обеспечивающий межпроцессное взаимодействие между Segment и опирающийся на стандартную инфраструктуру Ethernet-коммутации.

J

Оптимизатор на основе стоимости (CBO)

Также известный как Cost-Based Optimization — это оптимизатор по умолчанию в YMatrix для генерации планов запросов.

Оптимизаторы обычно выполняют два этапа: оптимизацию на основе правил (RBO) и оптимизацию на основе стоимости (CBO). В отличие от RBO, CBO опирается на точные и актуальные статистические данные, позволяя планам выполнения динамически адаптироваться к изменениям данных.

Понижение уровня хранения

Метод, используемый YMatrix для автоматизации разделения горячих и холодных данных, интегрированный с движком хранения MARS3. Холодные данные автоматически понижаются и сохраняются в объектном хранилище, при этом остаются прозрачно доступными через уровень MPP для эффективного анализа холодных данных. Процесс понижения не требует ручного вмешательства, минимизируя затраты на управление и эксплуатацию.

Объектное хранилище — это архитектура хранения данных, в которой данные управляются как объекты, в отличие от файловых систем (использующих иерархические файлы) и блочного хранения (использующего секторы и блоки). Обеспечивает высокую стоимость-эффективность и низкую стоимость хранения.


Job (MatrixGate job, Job)

В MatrixGate (mxgate) Job отвечает за запись данных в целевую таблицу. Каждый Job имеет планировщик slot, обеспечивающий выполнение только одной транзакции записи за раз. Независимо от того, запускается ли mxgate через конфигурацию или командную строку, необходимо указать имя целевой таблицы (через --target). После проверки существования таблицы mxgate запускает специфичный для таблицы Job. Job активирует slot и подключает их к экземплярам Segment для параллельной записи данных. Одна таблица инициирует один Job, а один Job может активировать несколько slot.

Расцепление

Расцепление — это снижение зависимостей между компонентами или модулями системы, позволяющее им разрабатываться, тестироваться и поддерживаться независимо. Эта техника широко применяется в разработке программного обеспечения, архитектуре систем и сетевой коммуникации. Снижение взаимозависимостей между компонентами улучшает надёжность, масштабируемость и поддерживаемость системы.

M

MARS

Серия движков хранения, разработанных YMatrix, расшифровывается как Matrix Append-Optimized Resilient Storage.

Включает MARS2 и MARS3:

  • MARS2: Использует физически упорядоченное слияние для снижения операций поиска ввода-вывода, повышая производительность запросов. Поддерживает цепочку кодирования и столбцовое хранение.
  • MARS3: Построен на основе MARS2, добавляет поддержку как аналитических (AP), так и транзакционных (TP) рабочих нагрузок, дополнительно повышая производительность записи.

Master

Обозначает основной узел в кластере, выполняющий следующие функции:

  • Управляет подключениями клиентских сессий.
  • Разбирает SQL-запросы и генерирует планы выполнения.
  • Распределяет планы выполнения между Segment, контролирует их выполнение и возвращает результаты клиентам.
  • Не хранит бизнес-данные; хранит только системный каталог (метаданные всех элементов данных).
  • В кластере допускается только один Master, при этом может быть дополнительно настроен Standby для избыточности.

MPP

Сокращение от Massively Parallel Processing. В кластере базы данных с архитектурой Shared-Nothing каждый узел имеет независимые системы дисков и памяти. Бизнес-данные распределены между узлами, которые связаны через специализированные или коммерческие сети для совместного выполнения вычислений и предоставления служб базы данных.

Кратко: архитектура MPP распределяет задачи между несколькими серверами и узлами, выполняет вычисления параллельно и агрегирует результаты для финального вывода.

MVCC

Multi-Version Concurrency Control (MVCC) — это механизм обеспечения согласованности данных с использованием многоверсионной модели. MVCC обеспечивает изоляцию транзакций для каждой сессии, гарантируя, что каждый запрос видит согласованный снимок данных, не затронутый параллельными транзакциями.

O

ORCA

Оптимизатор по умолчанию в Greenplum Database, расширяющий традиционные возможности планирования и оптимизации запросов для лучшей производительности в многопроцессорной среде. В YMatrix ORCA включается установкой параметра optimizer и поддерживается в версиях 5.2.0 и выше, интегрируясь с векторизованным движком выполнения.

GPORCA повышает производительность запросов в следующих областях:

  • Запросы к партиционированным таблицам
  • Запросы с общими табличными выражениями (CTE)
  • Запросы с подзапросами

R

Runtime Filter

Ключевая технология для повышения производительности движка выполнения YMatrix. Runtime Filters создаются динамически во время выполнения на основе оценки стоимости, в отличие от фильтров, заранее запланированных оптимизатором.

RPO

Recovery Point Objective (RPO) — это максимальный допустимый объём потери данных после сбоя системы. Меньшее значение RPO указывает на меньший риск потери данных.

RTO

Recovery Time Objective (RTO) — это максимальное допустимое время восстановления системы до нормального состояния после сбоя. Отражает способность бизнес-системы восстанавливаться после катастрофы.

S

Транзакция

Последовательность операций, выполняемых как единая логическая единица. Несколько операций передаются в базу данных как неделимое целое — либо все выполняются успешно, либо ни одна не выполняется — и должны полностью удовлетворять свойствам ACID.

В реляционных базах данных транзакция может быть одним SQL-запросом, группой операторов или всей программой. Она является базовой единицей для восстановления базы данных и управления параллелизмом, обычно начинается с BEGIN/START TRANSACTION и завершается END/COMMIT.

Базы данных позволяют нескольким параллельным транзакциям читать, записывать и изменять данные. Изоляция предотвращает несогласованность данных, вызванную параллельным выполнением. SQL определяет четыре уровня изоляции в порядке убывания строгости:

  • Serializable
  • Repeatable Read
  • Read Committed
  • Read Uncommitted

Segment

Наиболее часто обозначает Segment Instance — экземпляр узла хранения данных, по сути, независимую базу данных PostgreSQL, хранящую часть данных и выполняющую большую часть обработки запросов. Иногда относится к Segment Node — физическому серверу, на котором размещается один или несколько Segment Instance.

Segment Instance обычно включает Primary Instance и Mirror Instance (если включено зеркалирование):

  • Primary Instance: Основной экземпляр.
  • Mirror Instance: Зеркальный экземпляр.

SIMD

Single Instruction, Multiple Data (SIMD) — это архитектура набора команд компьютера, позволяющая нескольким процессорным блокам одновременно выполнять одну и ту же инструкцию над разными данными.

SIMD широко используется в обработке изображений, аудио и научных вычислениях, значительно повышая вычислительную эффективность.


Слот

В MatrixGate (mxgate) слот — это процесс, записывающий данные в экземпляры Segment. После получения задачи загрузки данных mxgate создает определенное количество слотов на основе параметра --stream-prepared. Каждый слот выполняет INSERT INTO dest SELECT * FROM external для импорта внешних данных в сегменты YMatrix. Продолжительность каждой передачи данных задается параметром --interval. Например, если --interval установлен в 100, каждый слот передает данные каждые 100 мс.

Резервный узел (Standby)

Обозначает резервный узел (экземпляр) Master.

Пользователи могут по желанию развернуть резервный или зеркальный экземпляр Master на хосте, отличном от основного Master. Когда Master становится недоступным, Standby принимает на себя роль теплого резерва.

Standby остается синхронизированным с Master через потоковую репликацию. На Standby запущен процесс репликации, отвечающий за синхронизацию данных между хостами Master и Standby.

T

Графический интерфейс пользователя (MatrixUI)

Графический интерфейс YMatrix, используемый для визуальной установки, управления и мониторинга. Предоставляет богатый функционал с простым интерфейсом.

Текущие возможности включают:

  • Развертывание на нескольких платформах
  • Симуляция сценариев временных рядов
  • Масштабирование кластера
  • Поглощение потоков данных из Kafka
  • Мониторинг запросов
  • Управление кластером
  • Проверка состояния
  • Самообслуживание
  • Анализ нагрузки
  • SQL-редактор

U

UDF

Пользовательская функция. Функция, созданная пользователем в базе данных.

UDF создаются с помощью оператора CREATE FUNCTION, изменяются с помощью ALTER FUNCTION и удаляются с помощью DROP FUNCTION. Каждое допустимое имя UDF database_name.owner_name.function_name должно быть уникальным.

W

WAL

Write-Ahead Logging (WAL) — это эффективный механизм журналирования в базах данных. Для баз данных, не использующих только память, операции вставки, обновления и удаления сначала записываются в специальный файл журнала, прежде чем применяться к фактическим данным. В случае сбоя база данных может быть восстановлена до известного согласованного состояния с помощью WAL, что обеспечивает целостность данных.

X

Векторизованная модель

Векторизованный движок выполнения в YMatrix использует эту модель для итеративных вычислений.

Подобно модели Volcano, она генерирует дерево запроса и использует выполнение по запросу (pull-based). Ключевое отличие заключается в том, что каждая итерация возвращает пакет кортежей, а не один. Преимущества включают снижение накладных расходов на итерации и лучшее использование аппаратных возможностей, таких как SIMD, что делает ее особенно подходящей для столбцового хранения.

Векторизованный движок выполнения, также известный как MatrixVector, — это высокопроизводительный движок, разработанный для столбцовой организации хранения (например, MARS3, MARS2, AOCO). Он обеспечивает повышение производительности на один-два порядка по сравнению с традиционными движками, основанными на строках, для типичных запросов.

Повышение производительности векторизованного исполнителя по сравнению со скалярными движками (например, Volcano) достигается за счет:

  1. Обработки пакетами для снижения накладных расходов на выполнение
  2. Обработки небольшими пакетами для улучшения локальности данных и использования кэша
  3. Выбора оптимальных путей обработки на основе характеристик данных
  4. Снижения накладных расходов на вызовы функций и использования инструкций SIMD процессора
  5. Обработки по столбцам с загрузкой по требованию для избежания чтения неиспользуемых данных

Разреженный индекс

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

Z

Служба кластера (Служба управления состоянием)

Служба, обеспечивающая высокую доступность за счет сбора и управления информацией о состоянии узлов.

YMatrix использует кластер ETCD для реализации этой службы. При сбое узла базы данных ETCD использует сохраненные данные о состоянии для повышения работоспособного узла до роли новой первичной ноды, обеспечивая доступность кластера.

Например:

  • Если Master выходит из строя, его Standby повышается до роли Master.
  • Если Standby выходит из строя, кластер остается не затронутым.
  • Если Primary выходит из строя, его Mirror повышается до роли Primary.
  • Сбой Mirror не влияет на работу кластера.

Эта служба включает два основных компонента: автоматическое переключение на резерв (failover) и автоматическое восстановление (failback, поддерживается инструментом mxrecover), что обеспечивает полное восстановление узлов.

Управление автоматическим разделением (APM)

Сокращение от Auto Partition Management.

Набор UDF, предоставляемых YMatrix для управления разделами, позволяющий DBA вручную поддерживать разделы в соответствии с требованиями, снижая затраты на обслуживание. Функции включают:

  • auto_partitioning
  • auto_splitting
  • auto_partitioning_ex

Ключевые возможности:

  • Автоматическое создание и удаление разделов
  • Автоматическое разделение разделов по умолчанию
  • Массовое создание разделов
  • Принудительное сохранение определенных исторических разделов
  • Пользовательское планирование автоматических операций с разделами