Хранение данных
Эффективное хранение данных — основа любого аналитического хранилища. YDB использует колоночный формат, архитектуру с разделением хранения и вычислений и автоматические процессы обслуживания для обеспечения высокой производительности и низкой стоимости владения.
Колоночные таблицы
Данные в колоночных таблицах хранятся по столбцам, а не по строкам. Этот подход является стандартом для OLAP-систем и даёт два ключевых преимущества:
- Сокращение объёма чтения: при выполнении запроса (
SELECT column_a, column_b FROM ...
) с диска считываются данные только тех столбцов, которые участвуют в запросе; - Сжатие данных: данные одного типа в столбце сжимаются лучше, чем разнородные данные в строке. YDB использует алгоритм сжатия
LZ4
.
Архитектура с разделением хранения и вычислений
Разделение хранения и вычислений — это архитектурный принцип YDB. Узлы, отвечающие за хранение данных (storage nodes), и узлы, выполняющие запросы (dynamic nodes), разделены. Это позволяет:
- Независимо масштабировать ресурсы: если не хватает места на диске, вы добавляете узлы хранения. Если не хватает CPU для запросов — добавляете узлы вычислений. Это отличается от систем с жёстко связанными ресурсами хранения и вычислений;
- Быстро перераспределять нагрузку: для перераспределения вычислительной нагрузки между узлами не требуется физическое перемещение данных, переносятся только метаданные.
Автоматическая оптимизация хранения
YDB спроектирован так, чтобы минимизировать ручные операции по обслуживанию.
- Автоматическое уплотнение (compaction) данных: Данные хранятся в LSM-подобных структурах; процессы слияния и оптимизации данных происходят постоянно в фоновом режиме; вам не нужно запускать
VACUUM
или аналогичные команды. - Автоматическое удаление данных: Для управления жизненным циклом данных используйте механизм удаления по TTL.
Встроенная отказоустойчивость
YDB изначально создавалась как отказоустойчивая система и поддерживает различные режимы размещения данных для защиты от сбоев оборудования, стоек или даже целых дата-центров.