Режимы работы OLTP или OLAP
При работе с базами данных выделяют два основных сценария: On-line Transaction Processing (Онлайн обработка транзакций, OLTP) и On-line Analytical Processing (Онлайн аналитическая обработка, OLAP).
Режим OLTP ориентирован на быстрое выполнение большого потока транзакций, каждая из которых обрабатывает сравнительно небольшой объем данных. А режим OLAP в основном предназначен для анализа данных с более низким относительно OLTP числом транзакций, но со значительно большим объемом обрабатываемых данных.
Режимы работы OLTP и OLAP доступны как для бессерверного режима, так и для режима с выделенными инстансами Yandex Managed Service for YDB.
Режим работы OLTP
Используемые в OLTP-нагрузках данные рекомендуется хранить в строковых таблицах
Строковые таблицы лучше всего подходят для OLTP-нагрузок с большим количеством коротких транзакций и высоким числом параллельных пользователей, когда нужно быстро читать или изменять целые сущности (строки) — по ключу, с частыми INSERT/UPDATE/DELETE. Такой формат минимизирует I/O при доступе к полной записи, хорошо работает с индексами, ограничениями и транзакциями (ACID), обеспечивая низкую задержку и целостность данных. Он оптимален для оперативных систем — интернет-магазинов, банковских и биллинговых приложений, CRM/ERP, систем бронирования — где типичные запросы затрагивают немного строк, но множество столбцов.
Режим работы OLTP идентичен в бессерверном режиме и в режиме с выделенными инстансами Yandex Managed Service for YDB.
Важно
В базах данных Yandex Managed Service for YDB, работающих в режиме OLTP, нельзя создавать колоночные таблицы.
Режим работы OLAP
Базы данных OLAP предназначены для аналитической обработки данных. С их помощью удобно решать задачи периодического анализа данных, строить витрины данных или выполнять любые другие аналитические задачи.
Важно
При работе внутри одной базы данных OLAP- и OLTP-нагрузки делят общие ресурсы базы данных, при этом профили использования ресурсов базы данных для OLAP- и OLTP-нагрузок существенно отличаются друг от друга. Не рекомендуется объединять в рамках одной базы данных production нагрузки разных типов из-за взаимовлияния профилей нагрузки друг на друга.
Используемые в OLAP-нагрузках данные рекомендуется хранить в колоночных таблицах
Колоночные таблицы YDB хранят данные каждого столбца отдельно (независимо) от других столбцов. Такой принцип хранения данных оптимизирован для использования в OLAP-сценариях, так как при построении аналитических отчетов часто используются лишь несколько столбцов исходных данных и колоночное хранение позволяет считывать с дисков только те столбцы, которые непосредственно участвуют в запросе. Еще один плюс такого подхода — высокая степень сжатия данных, так как в рамках каждого столбца зачастую хранятся повторяющиеся или близкие данные. Минусом является то, что выполнение операций над полными строками становится более затратным из-за необходимости восстанавливать их на лету из отдельных ячеек.
OLAP-режим доступен в Yandex Managed Service for YDB как для бессерверного режима, так и для режима с выделенными инстансами. Для режима с выделенными инстансами OLAP-функциональность доступна на стадии General Availability. Для бессерверного режима OLAP реализован как экспериментальная beta-функция (OLAP/Analytics β) и находится на стадии Preview.
В режиме работы OLAP каждому узлу YDB выделяется больший объем оперативной памяти, чем в режиме OLTP, что необходимо для выполнения аналитических запросов с большим объемом данных. Если объем обрабатываемых данных в запросе превышает объем оперативной памяти, YDB использует спиллинг — записывает промежуточные результаты выполнения аналитических запросов на диск.
Важно
- В настоящий момент использование бессерверных баз данных
OLAP (Analytics β)не тарифицируется. Оплачивается только используемый объем хранения данных по тарифам Serverless Yandex Managed Service for YDB. - Временное хранилище (спиллинг) в выделенных (dedicated) базах данных тарифицируется отдельно. См. Правила тарификации для режима Managed Service for YDB с выделенными инстансами.
- Максимальное количество параллельно выполняемых запросов в выделенных (dedicated) базах данных в режиме OLAP по умолчанию равно 10. Данное ограничение задаётся параметром
CONCURRENT_QUERY_LIMITв пуле ресурсовolap. Вы можете изменить его самостоятельно. Об управлении потреблением ресурсов в YDB читайте в документации .