docs: update README and all docs with formal verification, new BaraQL features, OpenTelemetry tracing

- Add Formal Verification section to README and architecture docs
- Document TLA+ specs for Raft, 2PC, MVCC, Replication
- Add new BaraQL features: JSON path (->, ->>), FTS @@, CREATE INDEX USING FTS,
  RECOVER TO TIMESTAMP, UNION/INTERSECT/EXCEPT
- Add OpenTelemetry tracing example to README
- Update Quick Start to use nimble test/bench
- Update EN and BG documentation
This commit is contained in:
2026-05-07 16:06:13 +03:00
parent e73bfb450c
commit 215df1cdf3
11 changed files with 252 additions and 6 deletions
+11
View File
@@ -123,6 +123,17 @@ Client → Protocol → Auth → Parser → AST → IR → Codegen
- **Gossip Protocol** (`core/gossip.nim`): SWIM-подобно управление на членство
- **Distributed Transactions** (`core/disttxn.nim`): Two-phase commit
## Ключови Дизайн Решения
1. **Чист Nim**: Без Cython, Python или Rust зависимости
2. **Обединено Съхранение**: Един двигател за KV, граф, вектор, FTS и колонно
3. **Вграден Режим**: Работи като библиотека или сървър
4. **Бинарен Протокол**: Ефективен wire протокол
5. **MVCC**: Multi-version concurrency control
6. **Schema-First**: Строго типизирана система с наследяване
7. **Крос-Модал**: Един език за заявки през всички модели данни
8. **Формално Верифициран**: Разпределените алгоритми са специфицирани в TLA+ и проверени с TLC
## Статистика на Модулите
| Категория | Модули | Редове Код | Предназначение |
+29 -2
View File
@@ -105,6 +105,33 @@ RETURN friend.name;
## Пълнотекстово Търсене
```sql
SELECT * FROM articles
WHERE MATCH(title, body) AGAINST('database programming');
-- Създаване на FTS индекс
CREATE INDEX idx_fts ON articles(body) USING FTS;
-- Търсене с BM25 ранжиране
SELECT * FROM articles WHERE body @@ 'database programming';
```
## JSON Оператори
```sql
-- Извличане на JSON поле като JSON
SELECT data->'name' FROM users;
-- Извличане на JSON поле като текст
SELECT data->>'name' FROM users;
```
## Set Операции
```sql
SELECT name FROM customers
UNION ALL
SELECT name FROM suppliers;
```
## Възстановяване до Момент във Времето
```sql
RECOVER TO TIMESTAMP '2026-05-07T12:00:00';
```
+20
View File
@@ -34,4 +34,24 @@ import barabadb/core/replication
var rm = newReplicationManager(rmSync)
rm.addReplica(newReplica("r1", "10.0.0.1", 9472))
rm.connectReplica("r1")
```
## Формална Верификация
Разпределените алгоритми са формално специфицирани в TLA+ и проверени с TLC:
- **Raft Консенсус** — `formal-verification/raft.tla`
- Проверено: ElectionSafety, StateMachineSafety
- **Two-Phase Commit** — `formal-verification/twopc.tla`
- Проверено: Atomicity, NoOrphanBlocks
- **Репликация** — `formal-verification/replication.tla`
- Проверено: MonotonicLsn, AcksRemovePending
Пускане на TLC:
```bash
cd formal-verification
java -cp tla2tools.jar tlc2.TLC -config models/raft.cfg raft.tla
java -cp tla2tools.jar tlc2.TLC -config models/twopc.cfg twopc.tla
java -cp tla2tools.jar tlc2.TLC -config models/replication.cfg replication.tla
```
+18 -1
View File
@@ -24,4 +24,21 @@ discard tm.commit(txn)
BaraDB използва **snapshot isolation**:
- Читателите не блокират писатели
- Писателите не блокират читатели
- Всяка транзакция вижда консистентен моментна снимка
- Всяка транзакция вижда консистентен моментна снимка
## Формална Верификация
MVCC / Snapshot Isolation протоколът е формално специфициран в TLA+:
- **Спецификация:** `formal-verification/mvcc.tla`
- **Проверени свойства:**
- `NoDirtyReads` — транзакциите никога не четат неcommit-нати данни
- `ReadOwnWrites` — транзакциите винаги виждат собствените си записи
- `WriteWriteConflict` — first-committer-wins
Пускане на TLC:
```bash
cd formal-verification
java -cp tla2tools.jar tlc2.TLC -config models/mvcc.cfg mvcc.tla
```