AngaraBase
Реляционная СУБД с протоколом PostgreSQL и предсказуемым поведением.
Написана на Rust. Текущая ветка — 0.6.x.
AngaraBase разработана для нагрузок типа ERP/SaaS, где предсказуемость важнее «магии», а каждое поведение фиксируется явным контрактом.
Здесь — то, что уже работает в коде на текущей ветке. Roadmap-фичи помечены отдельно. AngaraBase — молодой проект, и мы предпочитаем точность маркетинговым обещаниям.
С чего начать
Выберите вход по своей роли:
| Кто вы | Куда идти |
|---|---|
| Знакомлюсь с продуктом | Что такое AngaraBase → Архитектура с высоты птичьего полёта |
| Хочу попробовать локально | Quickstart за 5 минут |
| Разработчик приложения | SQL compatibility → Data types → Known issues |
| DBA / SRE | Installation → Configuration → Backup/Restore → Operations runbooks |
| Security engineer | Security model → Hardening → Audit |
| Contributor / Researcher | Architecture overview → Layering and Boundaries → Glossary |
| Сообщаю о проблеме | Support flow |
Ключевые особенности
Совместимость с PostgreSQL без сюрпризов
- Стандартный pgwire-протокол:
psql, JDBC, psycopg, node-postgres, pgx, Npgsql работают как с обычным PostgreSQL. - Контрактное подмножество SQL: что поддерживается — поддерживается полностью; что не поддерживается —
возвращает явный SQLSTATE (
0A000и др.), а не молчаливый bypass. - Pinned-тесты совместимости (compat suite) как доказательство, а не «процент совместимости».
Подробнее: SQL compatibility overview.
Современный движок: MVCC через UNDO-log, а не через bloat
В отличие от PostgreSQL, AngaraBase хранит исторические версии строк в отдельном UNDO-логе (как Oracle/InnoDB), а не в самой таблице. В результате:
- heap-страницы содержат только текущие версии строк → меньше bloat;
VACUUMв привычном смысле не нужен — старые версии очищает фоновый AngaraGC по чёткому контракту;- видимость для транзакций определяется детерминированно по snapshot.
Подробнее: Транзакции и MVCC.
Pluggable storage с первого дня
- Row-store (baseline) — для OLTP.
- AngaraMemory — in-memory таблицы с тремя уровнями durability (
none/logged/snapshotted) и hard row-cap. - AngaraColumn — columnar storage для аналитики (в roadmap; HTAP-направление).
Выбор движка делается при CREATE TABLE ... WITH (storage='memory'|'row'|...).
Подробнее: Storage engine.
Cost-based оптимизатор и vectorized execution
- AngaraPlan — CBO с robust-планированием, устойчивым к ошибкам в оценках.
- AngaraStat — статистика: HLL для NDV, equi-height histograms, MCV (reservoir sampling).
- AngaraFlow — streaming-исполнение (Volcano).
- AngaraVector — vectorized путь для scan/filter/project/join/aggregate; режимы
auto/force_vector/force_row. ВEXPLAINявно отмечаетсяVectorHashJoin,VectorAggи др. - AngaraParallel — partitioned parallel join, DOP-капы (
ANGARABASE_PARALLEL_DOP_CAP_*).
Подробнее: Query processing.
Многоуровневая защита с явными контрактами
Безопасность встроена в ядро, а не «прикручена» сверху. Шесть слоёв защиты, каждый с собственным контрактом:
- Транспорт и идентичность — TLS, SCRAM, cert-аутентификация.
- RBAC — кому вообще разрешено.
- RLS v1 — какие строки видны и изменяемы.
- Break-glass — единственный путь обхода RLS (даже
SUPERUSERего не имеет), всегда с REASON, TTL и аудитом. - Audit chain — append-only, tamper-evident (SHA-256 chain).
- TDE — шифрование страниц, WAL и audit-sink; fail-closed без ключа.
Подробнее: Security model.
Эксплуатация под предсказуемость
- Per-database backup и restore (cold + online/PITR baseline).
- Ясная диагностика:
EXPLAIN/EXPLAIN ANALYZE,sys.*views (sys.identity,sys.health,sys.settings,sys.tables,sys.column_stats,angara_stat_activity,angara_stat_statements). - Структурированное логирование, OpenTelemetry-style spans, USDT/eBPF probes.
- Метрики Prometheus:
angara_*именованные подсистемы видно в логах, метриках иEXPLAIN. - Native-пакеты RPM/DEB, init-first service start fence, systemd-юниты.
Подробнее: Operations runbooks.
Принципы проекта (явная позиция)
| Принцип | Что это значит |
|---|---|
| Restrictive by default | Строгие проверки и аутентификация по умолчанию. Обходы — только явным флагом |
| Contract-first | Каждая фича имеет явный контракт: что поддержано, какой SQLSTATE при отказе, какие инварианты |
| Fail-closed | При неопределённости — явная ошибка, а не «как-нибудь сработает» |
| Evidence-first | Корректность доказывается артефактами тестов, а не маркетингом |
| PostgreSQL-friendly | Никаких собственных клиентов: вся совместимость — через pgwire |
| Минимум зависимостей | Меньше runtime dependencies → меньше supply-chain поверхности |
Полная декларация: Project principles.
Документация по разделам
Знакомство (Tutorials)
Концепции (Explanation)
- Хранение данных — row-store, страницы, slotted pages, pluggable storage
- Транзакции и MVCC — UNDO-log MVCC, изоляция, GC
- Индексы — AngaraTree (B+tree, BRIN), IndexStore
- Обработка запросов — AngaraPlan, AngaraStat, AngaraFlow, AngaraVector
- Каталог и метаданные — SysCatalog и
sys.*views - Жизненный цикл инстанса — init, startup, recovery, shutdown
SQL Reference (Reference)
- Обзор совместимости — политика, SQLSTATE-коды, vector execution
- Типы данных — поддерживаемые типы, casting, NULL
- DDL — CREATE/ALTER/DROP, индексы, ограничения
- DML — INSERT, UPDATE, DELETE, mutation policies
- Запросы — CTE, JOIN, агрегаты, ORDER BY
- Секционирование — RANGE/LIST partitioning, routing, pruning
Безопасность (How-to)
- Модель безопасности
- Аутентификация
- Авторизация (RBAC + RLS)
- Аудит
- Шифрование (TDE + клиентское)
- Break-glass
- Hardening runbook
- GOST-совместимость
Эксплуатация (How-to)
- Установка — portable archive, RPM/DEB, source build
- Конфигурация — TOML, env,
sys.settings - Резервное копирование и восстановление — cold + online/PITR
- Crash recovery — host migration, WAL replay
- Обновление версии
- Мониторинг — Prometheus, Grafana, health probes
- Диагностика — EXPLAIN, slow log,
sys.* - Логирование, Tracing, USDT/eBPF probes
- GC auto-tuning
- Error debug runbook (10 минут)
- GOST crypto setup
- Verify release artifacts
Operator deep-dives — runbooks (Reference)
- Operations overview
- Runbooks index
- Troubleshooting guide
- Disaster recovery playbook
- Performance tuning guide
- MVCC and GC operator minimum
- Diagnostics bundle runbook
- Security operations baseline
- Upgrade and migration
- Backup and restore (operator-level)
- Configuration schema reference
- Observability metrics checklist
- jemalloc heap profiling runbook
- Parallel runtime observability runbook
- Replication v2 operations guide
- Operational policies baseline
- Client compatibility baseline (operator)
- Testing and validation baseline
- Golden dataset management
- CI reproducibility contract
- Known issues baseline (operator)
Architecture (Reference)
Справочник (Reference)
- Известные ограничения и SQLSTATE
- Глоссарий и именованные подсистемы
- Системные представления
sys.* - Совместимость клиентов
- Поддержка и сбор артефактов баг-репорта
- Generated reference (auto-generated registries)
История изменений
- AngaraBook changelog (highlights) — сжатая лента изменений с пользовательской точки зрения.
Сообщество и участие
Мы рады участникам сообщества:
- Нашли баг или regression? Соберите артефакты по Support flow и откройте issue.
- Хотите изменить поведение? Предложите RFC по процессу разработки проекта (внутренний контур).
- Хотите помочь с документацией? AngaraBook —
documentation-as-codeв этом же репозитории. Правила оформления: см. внутреннийWRITING_RULES.mdрядом с книгой. - Хотите следить за разработкой? Следите за changelog и release notes.
О документации
AngaraBook построена на принципах Diátaxis:
- Tutorials (Знакомство) — обучение через действие, для новых пользователей.
- How-to guides (Безопасность / Эксплуатация) — рецепты для конкретных задач.
- Reference (SQL / Architecture / Справочник) — точное описание поведения.
- Explanation (Концепции) — почему всё устроено так, а не иначе.
Гарантии качества:
- Документация — часть кода: правится в одном репозитории, проходит ту же CI, что и движок.
- Любое заявленное SQL/ops-поведение проверяется pinned-тестами или явно помечается как roadmap.
- Anti-drift: версии команд, конфигурационные ключи и SQLSTATE-коды сверяются автоматически.
- Public-сборка проходит security gate: внутренние процессы и конфиденциальные ссылки не попадают в публичный портал.
Если вы заметили несоответствие документации и реального поведения — это баг документации; пожалуйста, сообщите.
AngaraBase v0.6.x · Linux x86_64/aarch64 · glibc >= 2.28