Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

AngaraBase

Реляционная СУБД с протоколом PostgreSQL и предсказуемым поведением. Написана на Rust. Текущая ветка — 0.6.x.

Rust PostgreSQL pgwire MVCC · UNDO-log Soft Launch · v0.6.x

AngaraBase разработана для нагрузок типа ERP/SaaS, где предсказуемость важнее «магии», а каждое поведение фиксируется явным контрактом.

Что описывает эта документация

Здесь — то, что уже работает в коде на текущей ветке. Roadmap-фичи помечены отдельно. AngaraBase — молодой проект, и мы предпочитаем точность маркетинговым обещаниям.


С чего начать

Выберите вход по своей роли:

Кто выКуда идти
Знакомлюсь с продуктомЧто такое AngaraBaseАрхитектура с высоты птичьего полёта
Хочу попробовать локальноQuickstart за 5 минут
Разработчик приложенияSQL compatibilityData typesKnown issues
DBA / SREInstallationConfigurationBackup/RestoreOperations runbooks
Security engineerSecurity modelHardeningAudit
Contributor / ResearcherArchitecture overviewLayering and BoundariesGlossary
Сообщаю о проблеме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.

Многоуровневая защита с явными контрактами

Безопасность встроена в ядро, а не «прикручена» сверху. Шесть слоёв защиты, каждый с собственным контрактом:

  1. Транспорт и идентичность — TLS, SCRAM, cert-аутентификация.
  2. RBAC — кому вообще разрешено.
  3. RLS v1 — какие строки видны и изменяемы.
  4. Break-glass — единственный путь обхода RLS (даже SUPERUSER его не имеет), всегда с REASON, TTL и аудитом.
  5. Audit chain — append-only, tamper-evident (SHA-256 chain).
  6. 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)

SQL Reference (Reference)

Безопасность (How-to)

Эксплуатация (How-to)

Operator deep-dives — runbooks (Reference)

Architecture (Reference)

Справочник (Reference)

История изменений


Сообщество и участие

Мы рады участникам сообщества:

  • Нашли баг или 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