Columnar / HTAP Tables
Source of truth: RFC-2026-092, RM-0.6.4.0 Sprint 3.
Что такое HTAP row-column store
AngaraBase поддерживает хранение таблиц в HTAP row-column формате (HtapRowColumn):
строки пишутся через обычный WAL, колонки сегментированы в ColumnStore (SegmentManifest).
Это позволяет обслуживать OLTP транзакции и AP-сканы из одной таблицы.
Векторный конвейер (OLAP)
Для высокопроизводительной аналитики (OLAP) используется Vector Pipeline, который задействует SIMD и параллельную агрегацию напрямую из колоночных данных.
Создание HTAP-таблицы (copy-paste готово)
Есть два эквивалентных синтаксиса:
-- Вариант 1: PostgreSQL-style USING (рекомендуется)
CREATE TABLE metrics (
ts TIMESTAMPTZ NOT NULL,
device_id INT NOT NULL,
value FLOAT8
) USING COLUMNAR;
-- Вариант 2: WITH-опция (явный alias)
CREATE TABLE events (
id SERIAL PRIMARY KEY,
data TEXT
) WITH (storage = 'columnar');
-- Вариант 3: каноническое имя движка
CREATE TABLE events2 (
id SERIAL PRIMARY KEY,
data TEXT
) WITH (storage = 'htap_row_column');
Все три формы эквивалентны: таблица создаётся с TableStorageEngineV0::HtapRowColumn
в catalog.
Проверка engine в catalog
-- Через sys_catalog (RM-0.6.4.0)
SELECT table_name, storage_engine
FROM sys.tables
WHERE table_name = 'metrics';
Фоновая компактизация (L1 Compaction)
Начиная с RM-0.6.4.8, angarabase поддерживает фоновую компактизацию (L1 Compaction) для columnar таблиц.
Компактизатор объединяет мелкие L0 сегменты в крупные L1 pack-файлы, что снижает нагрузку на inodes и улучшает сжатие.
Процесс работает полностью прозрачно.
Метрики для мониторинга компактизации:
angarabase_columnar_compaction_totalangarabase_columnar_compaction_duration_msangarabase_columnar_direct_io_fallback_total
Ошибки и их смысл
Неизвестный USING метод → 0A000
ERROR: USING brin is not a supported storage method; ...
SQLSTATE: 0A000 (feature_not_supported)
Что делать: используйте USING COLUMNAR, USING htap_row_column (→ HTAP),
или опустите USING (→ row_store по умолчанию).
Недопустимое значение storage
ERROR: storage expects one of: row_store, memory, columnar, htap_row_column
SQLSTATE: 42601 (syntax_error)
Что делать: используйте одно из перечисленных значений.
Non-goals (Phase 1, RM-0.6.4.0)
- SegmentManifest auto-init при создании таблицы — deferred to Sprint 4 (OQ-S3-3).
- OOM protection для Column Cache — Sprint 4 (OQ-S3-4).
- Полная AP-оптимизация сканов — RFC-2026-092 Phase 2.
Связанные
- Performance tuning guide — tuning для mixed OLTP+HTAP нагрузок.
- Observability metrics — метрики columnar store.
- RFC-2026-092: HTAP Sync and Materialization v1.