nexus
[Image: License: AGPL v3](https://www.gnu.org/licenses/agpl-3.0) [Image: Tests: 317 passing](#testing) [Image: Version: 1.0.0](https://github.com/localzet/nexus/releases)
Современная база данных для приложений, которым нужны SQL + JSON + графы + векторы в одной системе
NexusDB — это полнофункциональная многомодельная СУБД, позволяющая работать со всеми типами данных без необходимости синхронизировать несколько отдельных сервисов. Написана на Rust для максимальной произв
✨ Возможности
Заголовок раздела «✨ Возможности»- SQL Query Engine — полная поддержка SELECT, JOIN, GROUP BY, Window Functions, CTEs
- MVCC Transactions — конкурентная обработка без глобальных блокировок
- High Availability — Raft консенсус с автоматическим failover
- Distributed — Consistent hashing sharding и geo-replication
- Performance — LRU кеширование, индексирование, query optimization
- Full-Text Search — инвертированный индекс с BM25 scoring
- Monitoring — метрики, health checks, slow query log
🚀 Быстрый старт
Заголовок раздела «🚀 Быстрый старт»# На Docker (проще всего)docker run -d --name nexus -p 5433:5433 ghcr.io/localzet/nexus:latest
# Или из исходниковgit clone https://github.com/localzet/nexus.gitcd nexus && cargo build --release./target/release/nexusСервер запустится на порту 5433 с NQL протоколом.
📚 Документация
Заголовок раздела «📚 Документация»Quick Links:
- NQL Specification — Полный протокол (JSON commands)
- NQL Examples — Примеры на Python, TypeScript, PHP
- Client Libraries — Python, TypeScript, PHP SDKs
Architecture & Design:
- System Architecture — Как устроена NexusDB
- MVCC Transactions — Параллельные транзакции ACID
- Raft Replication — Консенсус и кластеризация
💡 Примеры использования
Заголовок раздела «💡 Примеры использования»Python Client
Заголовок раздела «Python Client»from nexus import NexusClient
client = NexusClient("localhost", 5433)
# Create tableclient.create_table("users", [ ("id", "integer", {"primary_key": true}), ("name", "varchar", {"length": 100}), ("email", "varchar", {"length": 100})])
# Insertclient.insert("users", {"id": 1, "name": "Alice", "email": "alice@example.com"})
# Selectresult = client.select("users", where={"field": "id", "eq": 1})print(result.rows)TypeScript Client
Заголовок раздела «TypeScript Client»import { NexusClient } from "nexus-db";
const client = new NexusClient("localhost", 5433);
const result = await client.select( "users", ["id", "name", "email"], { field: "id", eq: 1 });console.log(result.rows);PHP Client
Заголовок раздела «PHP Client»use NexusDB\NexusClient;
$client = new NexusClient("localhost", 5433);
$result = $client->select( "users", columns: ["id", "name", "email"], where: ["field" => "id", "eq" => 1]);foreach ($result->rows as $row) { echo $row["name"];}📊 Архитектура
Заголовок раздела «📊 Архитектура»Single Protocol: NQL (JSON) — всё работает через единый TCP порт 5433
🔧 Функциональность
Заголовок раздела «🔧 Функциональность»Query Processing
Заголовок раздела «Query Processing»- SELECT with WHERE, GROUP BY, ORDER BY, LIMIT
- JOINs: INNER, LEFT, RIGHT, FULL, CROSS
- Aggregates: COUNT, SUM, AVG, MIN, MAX
- Window Functions: ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, FIRST_VALUE, LAST_VALUE
- CTEs: Simple и Recursive
- Subqueries: scalar, correlated, EXISTS, IN
- INSERT, UPDATE, DELETE
Storage & Concurrency
Заголовок раздела «Storage & Concurrency»- MVCC versioning
- 4 isolation levels (READ UNCOMMITTED → SERIALIZABLE)
- Lock management (Shared/Exclusive)
- Conflict detection
- Write-Ahead Logging (WAL)
- Multi-version visibility
Indexing
Заголовок раздела «Indexing»- B-Tree (ordered, range queries)
- Hash Index (exact match)
- Bloom Filter (probabilistic filtering)
Distribution
Заголовок раздела «Distribution»- Raft consensus
- Consistent hashing
- Range/Hash/List partitioning
- Automatic failover
Performance
Заголовок раздела «Performance»- LRU Cache
- Buffer Pool
- Query Result Caching
- Full-Text Search (Inverted Index + BM25)
- Query Optimization
📈 Производительность
Заголовок раздела «📈 Производительность»| Операция | Сложность | Примечания |
|---|---|---|
| Point SELECT (индекс) | O(1) | Hash index |
| Range SELECT | O(log n) | B-Tree index |
| JOIN | O(n) | С индексом |
| GROUP BY | O(n log n) | Сортирующий алгоритм |
| Window Func | O(n²) | Худший случай |
Подробные бенчмарки см. в performance-ru.md.
🧪 Тестирование
Заголовок раздела «🧪 Тестирование»# Все тестыcargo test --lib
# Конкретный модульcargo test --lib mvcccargo test --lib window_functionscargo test --lib sharding
# С выводом результатовcargo test --lib -- --nocapture
# Один конкретный тестcargo test --lib test_mvcc_versioning -- --exactСтатистика: 317 тестов, все проходят, 0 errors
📋 Требования
Заголовок раздела «📋 Требования»- Rust 1.70 или выше
- OS: Linux, macOS, Windows
- RAM: минимум 512 MB
🤝 Внесение вклада
Заголовок раздела «🤝 Внесение вклада»CONTRIBUTING.md содержит подробные инструкции.
Основные направления для разработки
Заголовок раздела «Основные направления для разработки»- Performance — Query plan caching, parallel execution
- Features — Columnar storage, advanced analytics
- Enterprise — RBAC, data masking, audit logging
📄 Лицензия
Заголовок раздела «📄 Лицензия»GNU Affero General Public License v3.0 — смотрите LICENSE для полного текста.
Это означает, что использование этого ПО в сетевых приложениях требует открытия исходного кода.
👤 Автор
Заголовок раздела «👤 Автор»Ivan Zorin (localzet)
- Email: creator@localzet.com
- GitHub: https://github.com/localzet
- Website: https://localzet.com
🔗 Ссылки
Заголовок раздела «🔗 Ссылки»- GitHub: https://github.com/localzet/nexus
- Issues: https://github.com/localzet/nexus/issues
- Discussions: https://github.com/localzet/nexus/discussions
- Docs: ./docs
🎯 Дорожная карта
Заголовок раздела «🎯 Дорожная карта»- Multi-model storage (Tables, JSON, Graphs, Vectors)
- SQL query engine
- MVCC transactions
- Raft replication
- Window functions
- CTEs & subqueries
- Full-text search
- Query optimization
v1.1.0 (Планируется)
Заголовок раздела «v1.1.0 (Планируется)»- Query plan caching
- Parallel query execution
- Columnar storage
- Extended window functions
- Performance improvements
v1.2.0 (Планируется)
Заголовок раздела «v1.2.0 (Планируется)»- RBAC (Role-Based Access Control)
- Data masking
- Audit logging
- Geo-replication
Спасибо за использование NexusDB! 🚀
Если у вас есть вопросы — открывайте issue или discussion.
Исходный код · AGPL-3.0