v4.0.0-GA · Enterprise Production Release · 2026-10-31

СУБД на Rust по принципу ДНК —
хранение данных с самовосстановлением
A Rust database built on the DNA principle —
data storage with self-healing

СУБД общего назначения: хранит обычные цифровые данные — таблицы, строки, ключи. Принцип хранения подсмотрен у ДНК: четвертичный алфавит и 2-битная упаковка (4 основания в байте), комплементарная двойная нить, избыточность и самовосстановление. Один бинарник: DnaQL и SQL 32/32, совместимость по проводному протоколу PostgreSQL (pgwire), кворумный Raft, S3-тиринг и PITR, TLS 1.3 / Argon2id / XChaCha20, самовосстановление RS(4+2), Prometheus-метрики и Kubernetes-манифесты. Всё подтверждено 215 тестами, kill‑9-прогоном и сравнением с MySQL 8.4.6 и PostgreSQL 17.11. A general-purpose DBMS for ordinary digital data — tables, rows, keys. The storage principle is borrowed from DNA: a quaternary alphabet with 2-bit packing (4 bases per byte), a complementary dual strand, redundancy and self-repair. One binary: DnaQL plus a 32/32 SQL engine, PostgreSQL wire-protocol compatibility (pgwire), quorum Raft, S3 tiering and PITR, TLS 1.3 / Argon2id / XChaCha20, RS(4+2) self-healing, Prometheus metrics and Kubernetes manifests. Proven by 215 tests, a kill‑9 durability run and a comparison against MySQL 8.4.6 and PostgreSQL 17.11.

🦀 Rust · без unsafe в ядреno unsafe in the core ✅ 215/215 tests 🧪 SQL 32/32 conformance 🔐 TLS 1.3 · Argon2id · XChaCha20 ⚖️ AGPL-3.0 / Apache-2.0 🐧 Linux · macOS
308 423 rows/s
пакетная запись v4.0.0-GA (строгий fsync WAL)
batched write on v4.0.0-GA (strict WAL fsync)
32 / 32
SQL-соответствие: 0 unsupported, 0 mismatch
SQL conformance: 0 unsupported, 0 mismatch
215 / 215
cargo test --release: unit + SQL + recovery + Raft + pgwire
cargo test --release: unit + SQL + recovery + Raft + pgwire
0 / 123 408
потерь после kill -9 (fsync на каждый ack)
losses after kill -9 (fsync per ack)
1,05 с1.05 s
Raft failover (SLA < 2 c), 0 потерь закоммиченного
Raft failover (SLA < 2 s), zero committed loss
Features

Что внутриWhat's inside

🌳

LSM-движок + WAL

Три режима fsync (strict/relaxed/off), атомарные сегменты, bloom-фильтры, checkpoint и компакция.

Three fsync modes (strict/relaxed/off), atomic segment writes, bloom filters, checkpoint and compaction.

🧬

DnaQLDnaQL

Пайплайны |>: ANALYZE SEQUENCE/LOCUS, GC_CONTENT, MELTING_TEMP, реверс-комплемент, транскрипция, перевод, нечёткий bitap-поиск.

Pipelines |>: ANALYZE SEQUENCE/LOCUS, GC_CONTENT, MELTING_TEMP, reverse-complement, transcription, translation, fuzzy bitap search.

🗺️

Прозрачное хранение: SHOW STORAGETransparent storage: SHOW STORAGEv4.1

Оператор пишет обычный SQL — SHOW STORAGE FOR users WHERE id = 5; показывает хромосому, локус, точный ключ и физическое представление каждого значения; sql2dnaql транслирует SQL в DnaQL с картой хранения; DnaQL-эквивалент — ANALYZE LOCUS users:5 |> STORAGE_MAP();. В панели — кнопка 🔬 у каждой строки и передача STORAGE_MAP в DnaQL-консоль одним кликом. Цепочки A/C/G/T читает машина, человеку — привычные значения.

The operator writes plain SQL — SHOW STORAGE FOR users WHERE id = 5; shows the chromosome, locus, exact key and physical representation of every value; sql2dnaql transpiles SQL into DnaQL with a storage map; the DnaQL equivalent is ANALYZE LOCUS users:5 |> STORAGE_MAP();. The panel adds a 🔬 button on every row and a one-click STORAGE_MAP hand-off to the DnaQL console. Machines read the A/C/G/T chains, humans get familiar values.

🛢️

SQL-движок 32/32SQL engine 32/32v3.6

INNER/LEFT/RIGHT/FULL JOIN, UNION [ALL], CTE (WITH), скалярные и коррелированные подзапросы, EXISTS, оконные функции, UPSERT (ON CONFLICT), BEGIN/COMMIT/ROLLBACK, EXPLAIN.

INNER/LEFT/RIGHT/FULL JOIN, UNION [ALL], CTEs, scalar & correlated subqueries, EXISTS, window functions, UPSERT (ON CONFLICT), BEGIN/COMMIT/ROLLBACK, EXPLAIN.

🐘

pgwire — протокол PostgreSQLpgwire — PostgreSQL protocolv3.7

psql, DBeaver, Grafana и любой PG-драйвер подключаются к порту 5432. Тот же движок и ACL, что и у нативного протокола.

psql, DBeaver, Grafana and any PG driver connect on port 5432. Same engine and ACL as the native protocol.

⚖️

Raft-консенсусRaft consensusv3.8

Кворумный кластер (3+ ноды): выборы, персистентный лог, репликация с откатом по conflict_index, редирект NOT_LEADER, failover < 2 c.

Quorum cluster (3+ nodes): elections, persistent log, replication with conflict-index rollback, NOT_LEADER redirects, failover < 2 s.

☁️

S3-тиринг и PITRS3 tiering & PITRv3.9

Демоушн сегментов в S3/MinIO/GCS (AWS SigV4, rustls) с Bloom-сайдкаром; консистентные снапшоты pitr --target и восстановление pitr --restore.

Segment demotion to S3/MinIO/GCS (AWS SigV4, rustls) with a Bloom sidecar; consistent snapshots via pitr --target and restore via pitr --restore.

⚡

Online DDLOnline DDLv3.9

ALTER TABLE ... ADD COLUMN — мгновенно, только метаданные, без блокировок и перезаписи строк.

ALTER TABLE ... ADD COLUMN is instant: metadata-only, no locks, no row rewrites.

🔐

БезопасностьSecurity

TLS 1.2/1.3 и mTLS на всех слушателях, Argon2id, per-table ACL, lockout по IP/логину, XChaCha20-Poly1305 при хранении, trusted-proxy SSO.

TLS 1.2/1.3 and mTLS on every listener, Argon2id, per-table ACL, IP/username lockout, XChaCha20-Poly1305 at rest, trusted-proxy SSO.

🪞

Самовосстановление RS(4+2)RS(4+2) self-healing

Зеркало Strand B на внешнем диске, коды Рида–Соломона с CRC на блоки, scrubber, doctor, ремонт на чтении, откат WAL.

Strand B mirror on an external disk, Reed–Solomon with per-block CRC, scrubber, doctor, repair-on-read, WAL rollback.

🖥️

Веб-панельWeb panelv4.1

phpMyAdmin-подобная: KPI-дашборд с «Данными на диске», браузер строк с 🔬-картой хранения, SQL- и DnaQL-консоли с планом и блоком SQL → DnaQL, онлайн-компакция с размером до/после и историей запусков, пользователи и ACL, CSP-hardening.

phpMyAdmin-style: KPI dashboard with a "data on disk" card, row browser with a 🔬 storage map, SQL & DnaQL consoles with plans and an SQL → DnaQL block, online compaction with before/after sizes and a run history, users & ACL, CSP-hardened.

📈

Prometheus и KubernetesPrometheus & Kubernetesv4.0

GET /metrics в формате Prometheus 0.0.4: health, lesion found/repaired/unrecoverable, memtable, сегменты, плюс метрики компакции (v4.1) — dnadb_compactions_total, байты до/после/сэкономлено, длительность и метка времени последнего запуска, dnadb_data_dir_bytes. CRD DnaDbCluster, StatefulSet, ServiceMonitor.

GET /metrics in Prometheus 0.0.4 format: health, lesion found/repaired/unrecoverable, memtable, segments, plus compaction metrics (v4.1) — dnadb_compactions_total, bytes before/after/saved, last-run duration and timestamp, dnadb_data_dir_bytes. CRD DnaDbCluster, StatefulSet, ServiceMonitor.

🧰

ИнструментыTooling

CLI shell (TLS/mTLS), rotate-key без простоя, 16 python-скриптов: smoke, security, kill‑9, chaos, трёхсторонний бенчмарк против MySQL/PostgreSQL.

CLI shell (TLS/mTLS aware), zero-downtime rotate-key, 16 python scripts: smoke, security, kill‑9, chaos, three-way MySQL/PostgreSQL benchmark.

Benchmarks

DNA-DB против MySQL 8.4.6 и PostgreSQL 17.11DNA-DB vs MySQL 8.4.6 & PostgreSQL 17.11

Одинаковая нагрузка, ключи и последовательность RNG на всех трёх системах, у каждой — durability по умолчанию. Одна машина (Debian 13, 2 vCPU), один клиент. Прогон v3.5.0 от 2026-10-31, методика scripts/bench_compare.py. Identical workload, keys and RNG sequence on all three systems, each at its default durability. Same machine (Debian 13, 2 vCPU), one client. v3.5.0 run dated 2026-10-31, methodology scripts/bench_compare.py.

ФазаPhaseDNA-DB v3.5.0MySQL 8.4.6PostgreSQL 17.11
Запись по одной строке (ack на каждую)Single-row insert (ack per row)36 2604 35319 182
Параллельная запись, 8 потоковMultithreaded insert, 8 threads17 6368 31622 157
Пакетный INSERT (200 строк × 40)Batched INSERT (200 rows × 40)298 936162 166215 926
Точечное чтение по ключуPoint read by key43 77911 04917 565
Смешанная 80/20 (8 потоков)Mixed 80/20 (8 threads)20 4118 40317 985
SQL INSERT (3 000 строк)SQL INSERT (3 000 rows)24 9864 00316 811
SQL SELECT по PK (×1 500)SQL SELECT by PK (×1 500)22 4708 91623 638
Неверных значений при проверкеWrong values on verification000

rows/s либо ops/s, чем больше — тем лучше. DNA-DB: --sync strict (fsync на каждый ack). MySQL: innodb_flush_log_at_trx_commit=1. PostgreSQL: synchronous_commit=on. Полная методика: DB_COMPARISON_RU.md. rows/s or ops/s, higher is better. DNA-DB: --sync strict (fsync per ack). MySQL: innodb_flush_log_at_trx_commit=1. PostgreSQL: synchronous_commit=on. Full methodology: DB_COMPARISON.md.

Движок v4.0.0-GA — быстрее ещё разThe v4.0.0-GA engine is faster still

39 194 ops/s
запись по одной строке (p50 0,02 мс)
single-row insert (p50 0.02 ms)
308 423 rows/s
пакетная запись, батчи по 200
batched write, 200-row batches
35 493 ops/s
точечное чтение (p50 0,02 мс)
point read (p50 0.02 ms)
20 711 ops/s
смешанная 80/20, 8 потоков
mixed 80/20, 8 threads
33 023 ops/s
SQL INSERT (3 000 строк)
SQL INSERT (3,000 rows)
27 074 ops/s
SQL SELECT по PK (×1 500)
SQL SELECT by PK (×1,500)

Прогон v4.0.0 от 2026-10-31 выполнен на другой машине (8 потоков), поэтому напрямую с таблицей v3.5.0 не сопоставляется: та же методика scripts/bench_compare.py, числа MySQL/PostgreSQL в нём не участвуют. Сырые данные: bench_compare_results_v400_linux.json. The v4.0.0 run dated 2026-10-31 used a different machine (8 threads), so it is not directly comparable to the v3.5.0 table: same scripts/bench_compare.py methodology, MySQL/PostgreSQL did not take part. Raw data: bench_compare_results_v400_linux.json.

📄 Полный отчёт о сравнении (PDF, 13 стр., RU)Full comparison report (PDF, 13 pages, RU)

Resources

Потребление ресурсов: память и дискResource usage: RAM & disk

Один и тот же детерминированный датасет во всех трёх СУБД — 100 000 и 1 000 000 строк (ключ + значение 160 байт, seed 42, как в основном бенчмарке), настройки по умолчанию у всех. Память — суммарный PSS всех процессов СУБД: разделяемая память делится пропорционально, поэтому PostgreSQL со своими shared_buffers учитывается честно. Диск — прирост каталога данных после корректной остановки, включая WAL и binlog. Оба масштаба измерены в одном прогоне GitHub Actions; между ними базы сбрасывались, а журналы усекались. The same deterministic dataset in all three DBMS — 100,000 and 1,000,000 rows (key + 160-byte value, seed 42, as in the main benchmark), default settings everywhere. Memory is the summed PSS of all DBMS processes: shared memory is split proportionally, so PostgreSQL with its shared_buffers is counted fairly. Disk is the data directory growth after a clean shutdown, including WAL and binlog. Both scales were measured in a single GitHub Actions run; between them the databases were dropped and the logs truncated.

3,9×3.9×
меньше RAM в пике, чем у MySQL, на 1 000 000 строк (127,6 против 503,5 MiB); на 100 000 строк — 5,9×
less peak RAM than MySQL at 1,000,000 rows (127.6 vs 503.5 MiB); 5.9× less at 100,000 rows
297,9 MiB297.9 MiB
диска за 1 000 000 строк после офлайн-компакции — −53 % к MySQL (635,4) и −46 % к PostgreSQL (556,4); до компакции — 535,5 MiB, тоже минимум из трёх
disk for 1,000,000 rows after the offline compaction — −53% vs MySQL (635.4) and −46% vs PostgreSQL (556.4); before compaction — 535.5 MiB, still the lowest of the three
×1,81.8×
к полезным данным (164 MiB) после офлайн-компакции на 1 000 000 строк — RS(4+2) + WAL + индексы; до компакции ×3,3, у MySQL ×3,9, у PostgreSQL ×3,4
the raw payload (164 MiB) after the offline compaction at 1,000,000 rows — RS(4+2) + WAL + index overhead; ×3.3 before compaction, MySQL ×3.9, PostgreSQL ×3.4

Сценарий 1: 100 000 строк, 4 000 чтенийScenario 1: 100,000 rows, 4,000 reads

МетрикаMetricDNA-DB 4.0.0DNA-DB после компакцииDNA-DB after compactionMySQL 8.0.46PostgreSQL 16.15
RAM в покое (сумма PSS процессов)Idle RAM (sum of process PSS)22,422.4—376,7376.722,022.0
RAM в пике — загрузка + точечные чтенияPeak RAM — load + point reads69,669.6—410,1410.155,555.5
Место на диске — прирост, MiBDisk growth, MiB42,242.229,829.859,159.156,156.1
RAM usage, 100k rows
Память: сумма PSS процессов СУБД — в покое и в пике (100 000 строк)RAM: sum of DBMS process PSS — idle vs peak (100,000 rows)
Disk footprint, 100k rows
Диск: прирост каталога данных после чистой остановки (100 000 строк)Disk: data directory growth after a clean shutdown (100,000 rows)

Сценарий 2: 1 000 000 строк, 20 000 чтенийScenario 2: 1,000,000 rows, 20,000 reads

МетрикаMetricDNA-DB 4.0.0DNA-DB после компакцииDNA-DB after compactionMySQL 8.0.46PostgreSQL 16.15
RAM в покое (сумма PSS процессов)Idle RAM (sum of process PSS)22,522.5—388,7388.722,922.9
RAM в пике — загрузка + точечные чтенияPeak RAM — load + point reads127,6127.6—503,5503.5166,5166.5
Место на диске — прирост, MiBDisk growth, MiB535,5535.5297,9297.9635,4635.4556,4556.4
RAM usage, 1M rows
Память: сумма PSS процессов СУБД — в покое и в пике (1 000 000 строк)RAM: sum of DBMS process PSS — idle vs peak (1,000,000 rows)
Disk footprint, 1M rows
Диск: прирост каталога данных после чистой остановки (1 000 000 строк)Disk: data directory growth after a clean shutdown (1,000,000 rows)

Всё в MiB, меньше — лучше. Методика: пик — максимум суммы PSS при опросе каждые 50 мс во время загрузки (одиночные вставки, ack на каждую) и точечных чтений — 4 000 чтений на 100 000 строк, 20 000 на 1 000 000; диск — от пустого сервера к загруженному после корректной остановки: у MySQL в каталоге лежат binlog и undo, у PostgreSQL — WAL, у DNA-DB — WAL и сегменты RS(4+2). «После компакции» — офлайн-компакция DNA-DB (dna-db-core compact: checkpoint + слияние всех сегментов в один, удаление затёртых версий и использованных надгробий); для MySQL/PostgreSQL аналогичной офлайн-компакции в замере нет. Оба масштаба — один прогон GitHub Actions, ubuntu-24.04: MySQL 8.0.46 и PostgreSQL 16.15 из apt, DNA-DB 4.0.0 (--sync strict); между масштабами базы удалялись, binlog усекался (RESET MASTER), PostgreSQL перезапускался — baseline каждого замера чистый. Сырые данные: resources_compare_linux.json (100k) и resources_compare_linux_1m.json (1M); воспроизведение: Actions → «Resources (RAM & disk)», скрипт scripts/measure_resources.py. All values in MiB, lower is better. Methodology: peak = max of the PSS sum sampled every 50 ms during the load (single inserts, ack per row) plus point reads — 4,000 reads at 100,000 rows, 20,000 at 1,000,000; disk = from an empty server to the loaded one after a clean shutdown — MySQL keeps binlog and undo files in the directory, PostgreSQL keeps WAL, DNA-DB keeps WAL and RS(4+2) segments. “After compaction” = the DNA-DB offline compaction (dna-db-core compact: checkpoint + merging all segments into one, dropping shadowed versions and consumed tombstones); no equivalent offline compaction was measured for MySQL/PostgreSQL. Both scales in one GitHub Actions run, ubuntu-24.04: MySQL 8.0.46 and PostgreSQL 16.15 from apt, DNA-DB 4.0.0 (--sync strict); between the scales the databases were dropped, the binlog truncated (RESET MASTER) and PostgreSQL restarted, so each measurement starts from a clean baseline. Raw data: resources_compare_linux.json (100k) and resources_compare_linux_1m.json (1M); reproduce via Actions → “Resources (RAM & disk)”, script scripts/measure_resources.py.

Charts

Графики (прогон v3.5.0, та же машина)Charts (v3.5.0 run, same machine)

Пять диаграмм из полного отчёта: пропускная способность, задержки, масштабирование, ускорение относительно MySQL/PostgreSQL и соответствие SQL. Клик — увеличение. Five diagrams from the full report: throughput, latency, scaling, speed-up vs MySQL/PostgreSQL and SQL conformance. Click to zoom.

Throughput by phase
Пропускная способность по фазам нагрузкиThroughput by workload phase
Latency
Задержки точечных чтений и SQL-запросовPoint-read and SQL query latency
Scaling
Масштабирование при росте нагрузкиScaling as the workload grows
Speedup
Ускорение относительно MySQL 8.4.6 и PostgreSQL 17.11Speed-up vs MySQL 8.4.6 and PostgreSQL 17.11
SQL conformance
SQL-соответствие: 32 проверки, 0 несовпадений (v4.0: RIGHT/FULL JOIN, UNION, CTE, UPSERT, оконные)SQL conformance: 32 checks, 0 mismatches (v4.0 adds RIGHT/FULL JOIN, UNION, CTE, UPSERT, window functions)
Testing

Полная батарея тестов — всё зелёноеFull test battery — all green

215 / 215

cargo test --release

184 unit + 32 SQL-фичи + 13 recovery + Raft + tiering + pgwire.

184 unit + 32 SQL features + 13 recovery + Raft + tiering + pgwire.

TEST_RESULTS_RU.md
32 / 32

SQL-соответствиеSQL conformance

Канонический прогон: 0 unsupported, 0 mismatch, 0 error — включая RIGHT/FULL JOIN, UNION, CTE, UPSERT, оконные функции.

Canonical run: 0 unsupported, 0 mismatch, 0 error — incl. RIGHT/FULL JOIN, UNION, CTE, UPSERT, window functions.

SQL_FEATURES_RU.md
0 из 123 408

kill -9 durability

Записей потеряно или испорчено после SIGKILL: ноль из 123 408 подтверждённых — WAL replay и ремонт torn-write восстановили всё до последней записи. Ноль здесь — идеальный результат (см. KILL9-отчёт: Missing: 0, Corrupt: 0).

Records lost or corrupted after SIGKILL: zero out of 123,408 acknowledged — WAL replay and torn-write repair recovered every last one. Zero here is the perfect result (see the KILL9 report: Missing: 0, Corrupt: 0).

KILL9_TEST_RESULT_v350.txt
3 / 3

Chaos и самовосстановлениеChaos & self-healing

60 повреждённых секторов офлайн и на живом сервере, 300 000 проверок ключей, 0 потерь; пере-повреждение честно помечено UNREPAIRABLE.

60 damaged sectors offline and under a live server, 300,000 key verifications, 0 losses; over-damage honestly reported UNREPAIRABLE.

chaos_results_v350.txt
15 / 15

Живой smoke протоколаLive protocol smoke

Аутентификация, pre-auth guard, CRUD, кадры 1 MiB, SQL/DnaQL, checkpoint, восстановление после kill.

Auth, pre-auth guard, CRUD, 1 MiB frames, SQL/DnaQL, checkpoint, hard-kill recovery.

smoke_test_results_v350.txt
12 / 12

Security smoke v3.5Security smoke v3.5

Случайный bootstrap, лимит глубины парсера, slowloris-дедлайн, отказ вторых instance и doctor на живой БД.

Random bootstrap, parser depth limit, slowloris deadline, second-instance & live-doctor refusals.

security_smoke_v350.txt
8 / 8

pgwire E2E (сырой клиент)pgwire E2E (raw client)

Handshake, VERSION(), DDL/DML, SELECT, оконные функции через pgwire, NULL, ErrorResponse, BEGIN/ROLLBACK/COMMIT.

Handshake, VERSION(), DDL/DML, SELECT, window functions over pgwire, NULL, ErrorResponse, BEGIN/ROLLBACK/COMMIT.

tests/test_pgwire_client.py
1,05 c

Raft failoverRaft failover

3 ноды: выборы, репликация 3/3, отказ лидера — новый лидер за 1,05 c (SLA < 2 c), ноль потерь закоммиченных записей.

3 nodes: elections, 3/3 replication, leader loss — new leader in 1.05 s (SLA < 2 s), zero loss of committed writes.

tests/raft_cluster.rs
Screenshots

Админ-панельAdmin panel

login
Вход: Argon2id, lockout по IP/логинуLogin: Argon2id, per-IP/username lockout
dashboard
Дашборд: KPI движка и диагностика HEALTHDashboard: engine KPIs and HEALTH diagnostics
tables
Таблицы: просмотр данных и индексыTables: data browser and indexes
sql console
SQL-консоль: JOIN с планом запросаSQL console: JOIN with query plan
dnaql console
DnaQL-консоль: GC_CONTENT и MELTING_TEMPDnaQL console: GC_CONTENT & MELTING_TEMP
row editor
Редактор строки с генерацией UPDATERow editor with generated UPDATE
Guide

Руководство: от нуля до кластераGuide: from zero to a cluster

1.Сборка и первый запускBuild and first run

# Rust 1.75+
git clone https://github.com/nsmykh70-creator/dna-db-core.git
cd dna-db-core && cargo build --release

# запуск: TCP-протокол на 9999, веб-панель на 8080
./target/release/dna-db-core serve --data-dir ./dna_data --port 9999 --admin-port 8080
# панель: https://127.0.0.1:8080/ — TLS включён всегда,
# пароль администратора генерируется случайно и печатается один раз

2.Подключение клиентовConnecting clients

# CLI shell поверх TLS (самоподписанный сертификат сервера):
./target/release/dna-db-core shell --tls-ca ./dna_data/tls/cert.pem

# psql и любой PG-драйвер — через pgwire (PostgreSQL Wire Protocol v3):
./target/release/dna-db-core serve --data-dir ./dna_data --admin-port 8080 --pgwire-port 5432
psql "host=127.0.0.1 port=5432 user=admin dbname=dna" -c "SELECT VERSION();"

3.SQL, который теперь поддерживается полностьюSQL now fully supported

-- CTE + JOIN
WITH top AS (SELECT dept, COUNT(*) AS n FROM users GROUP BY dept)
SELECT u.name, t.n FROM users u JOIN top t ON u.dept = t.dept;

-- RIGHT / FULL OUTER JOIN
SELECT name, total FROM users RIGHT JOIN orders ON users.id = orders.uid;
SELECT name, total FROM users FULL OUTER JOIN orders ON users.id = orders.uid;

-- UNION и оконные функции
SELECT dept FROM users WHERE id = 1 UNION SELECT dept FROM users WHERE id = 2;
SELECT name, RANK() OVER (PARTITION BY dept ORDER BY total DESC) FROM users;

-- UPSERT и транзакция (один атомарный WAL-кадр на COMMIT)
INSERT INTO kv (k, v) VALUES ('chr1', 3001) ON CONFLICT (k) DO UPDATE SET v = EXCLUDED.v;
BEGIN;
UPDATE accounts SET bal = bal - 100 WHERE id = 1;
UPDATE accounts SET bal = bal + 100 WHERE id = 2;
COMMIT;

4.DnaQL — запросы к последовательностямDnaQL — sequence queries

-- анализ и реверс-комплемент
ANALYZE SEQUENCE 'CGCGCGATCGATCGCGC' |> REV_COMP();

-- джойн двух хромосом по комплементарным ID
FROM chr_a |> LINK chr_b VIA COMPLEMENT(b_id) |> EMIT *;

Полная грамматика: DNAQL_SPEC.md, руководство: DNAQL_MANUAL_RU.mdFull grammar: DNAQL_SPEC.md

5.Raft-кластер из трёх нодA three-node Raft cluster

# три терминала (id уникален, каждый со своим data-dir):
./target/release/dna-db-core cluster --id 0 --port 9500 --data-dir ./dna_node0 \
  --peers 0=127.0.0.1:9500,1=127.0.0.1:9501,2=127.0.0.1:9502
./target/release/dna-db-core cluster --id 1 --port 9501 --data-dir ./dna_node1 \
  --peers 0=127.0.0.1:9500,1=127.0.0.1:9501,2=127.0.0.1:9502
./target/release/dna-db-core cluster --id 2 --port 9502 --data-dir ./dna_node2 \
  --peers 0=127.0.0.1:9500,1=127.0.0.1:9501,2=127.0.0.1:9502

# запись принимается лидером; при его отказе новый лидер выбирается за <2 c,
# не-лидер отвечает NOT_LEADER с адресом текущего.

6.Мониторинг, тиринг, PITRMonitoring, tiering, PITR

# Prometheus-метрики (панель-порт):
curl -k https://127.0.0.1:8080/metrics | head

# консистентный снапшот и восстановление на момент времени:
./target/release/dna-db-core pitr --data-dir ./dna_data --target ./snaps/t1
./target/release/dna-db-core pitr --restore --data-dir ./dna_data --target ./snaps/t1

# ротация ключа шифрования без простоя (включая зеркало Strand B):
./target/release/dna-db-core rotate-key --data-dir ./dna_data \
  --new-key-file /secure/dna-new.key --mirror-dir /mnt/dna_mirror

7.Проверка всего этого у себяVerify it yourself

cargo test --release          # 215 тестов
python3 scripts/smoke_test.py # живой smoke протокола
python3 scripts/chaos_test.py # хаос-тест самовосстановления
python3 scripts/bench_compare.py # трёхсторонний бенчмарк (нужны MySQL/PG)

Полное описание сервера, TLS, ACL и протокола: README_RU.md · PROTOCOL.mdFull server, TLS, ACL and protocol reference: README.md · PROTOCOL.md

Documentation

ДокументацияDocumentation