Files
Baradb/PLAN.md
T
dimgigov 5deb38feb2 feat: production polish — recursive CTE, UNION/INTERSECT/EXCEPT, DROP INDEX, JSON path, FTS SQL, covering index, SCRAM auth
- Recursive CTE execution (WITH RECURSIVE + UNION ALL, work-table loop)
- UNION / INTERSECT / EXCEPT parser + executor (nkSetOp)
- DROP INDEX parser + executor
- VIEW DDL persistence via AST-to-SQL serializer
- JSON path operators -> and ->> (lexer, parser, IR, executor)
- FTS SQL wiring WHERE col @@ 'query' (case-insensitive term match)
- Multi-column index range scans (prefix equality + range on last col)
- Covering index optimization (skip LSM read when index covers SELECT)
- SCRAM-SHA-256 authentication (password-based validation)
- 279 tests, 0 failures
2026-05-07 13:00:36 +03:00

3.1 KiB
Raw Blame History

BaraDB — Оставащи задачи

Завършеното е преместено в PLAN_DONE.md.


Ниски (nice-to-have, не блокират production)

1. Distributed 2PC — реален network RPC

  • Статус: Симулиран (disttxn.nim:86,108)
  • Промени: prepare() и commit() само маркират участниците като готови. Няма реална мрежова комуникация.
  • Нужно: Изпращане на PREPARE/COMMIT RPC към participant nodes през TCP.

2. LSM-Tree thread-safety

  • Статус: Не е напълно thread-safe
  • Проблем: Stress test ползва отделни DB инстанции на worker (stress_test.nim:20).
  • Нужно: Mutex/lock около shared LSM операциите или MVCC-based concurrency.

3. Full FTS index integration

  • Статус: ⚠️ Базова поддръжка
  • Текущо: WHERE col @@ 'query' прави case-insensitive term match (всеки термин от заявката трябва да се среща в колоната).
  • Липсва: Пълна интеграция с InvertedIndex от fts/engine.nim — BM25 ranking, highlight-и, позиционно търсене.

4. Point-in-time recovery (PITR)

  • Статус: Не е имплементирано
  • Обхват: WAL replay съществува, но няма UI/команда за PITR до конкретен timestamp.
  • Нужно: RECOVER TO TIMESTAMP '...' или подобна команда.

5. OpenTelemetry tracing

  • Статус: Не е имплементирано
  • Текущо: JSON structured logging (logging.nim).
  • Нужно: OpenTelemetry spans за query execution, index lookup, RPC calls.

6. SSTable metadata

  • Статус: ⚠️ Placeholders
  • Проблем: indexOffset и bloomOffset се пишат като 0 в SSTable header (lsm.nim:137,139), коригират се при finalize. Не е бъг, но е нечисто.
  • Нужно: Записване на реалните offsets веднага или restructure на SSTable формата.

7. Hardcoded JWT secret

  • Статус: ⚠️ В 2 файла
  • Проблем: "baradb-default-secret-change-in-production!" в server.nim и httpserver.nim.
  • Нужно: Задължително задаване през env var или config file; отказване на старт ако е default стойност.

Изрично НЕ се прави

Задача Причина
Partitioning Сложно, малки БД не се нуждаят
Kubernetes Helm Docker Compose е достатъчен

Honest Score

9.7/10 — всички критични и средни задачи са завършени. Остават 7 ниско-приоритетни задачи, нито една не блокира самостоятелен production deploy.

279 теста — 0 failure-а.