Skip to content
docs.
WORKSPACE

Your documentation

Explore the project catalog
Localzet ServerАсинхронный PHP-серверTriangleФреймворк и компонентыMIX IDИдентификация и интеграцииHack APIПубличные API хакатонаACNПроект и компонентыUserlay / UserNetПроект и компонентыAxiomПроект и компонентыМесседжинг через почтуПроект и компонентыLWT / JWT / JOSEПроект и компонентыФинансовая аналитика KimaiПроект и компонентыМультипарадигмальная БДПроект и компоненты✓Zorin PlatformПроект и компонентыZorin TrustПроект и компонентыFloraScope / VegwatchПроект и компонентыaegis-qДокументация проектаaevumdbДокументация проектаauditДокументация проектаauto-invest-managerАвтотрейдерcaine-companionДокументация проектаcertbot-cloudflareДокументация проектаClusterLocalzet Server / ClustercmdveilДокументация проектаConsolePHP CLICronБиблиотеки Localzet Serverdata-connectorДокументация проектаdevice-controlDevice Controlenn-projectДокументация проектаEventsБиблиотеки Localzet ServerflowsintДокументация проектаforgeДокументация проектаHttpClientБиблиотеки Localzet ServerinterpreterСобственный языкinvariaДокументация проектаkeynotesДокументация проектаknotrouteKnotroutelaravel-personal-analyticsДокументация проектаlocalzet-osДокументация проектаmeridianДокументация проектаMQTTБиблиотеки Localzet Servernano-kernelСобственная ОСNoterДокументация проектаpersonal-analyticsДокументация проектаProxyБиблиотеки Localzet ServerPSRБиблиотеки Localzet ServerPSR-7Библиотеки Localzet Serverrschs-monitorДокументация проектаsemsealДокументация проектаshardsealДокументация проектаSocketIOБиблиотеки Localzet ServerSOCKS5Библиотеки Localzet Serverstandalone-analyticsДокументация проектаstatic-php-cliДокументация проектаStorageБиблиотеки Localzet ServersutureДокументация проектаtempoweaveДокументация проектаttsСинтез речиTunnelБиблиотеки Localzet Serverui-kitUI KitvesperДокументация проектаWebAnalyzerWebAnalyzerzorin-access-brokerДокументация проектаzorin-authority-brokerДокументация проектаzorin-authority-sdk-phpДокументация проектаzorin-authority-sdk-pythonДокументация проектаzorin-authority-sdk-tsДокументация проектаzorin-client-intelДокументация проектаzorin-device-core-aospДокументация проектаzorin-host-agentДокументация проектаzorin-native-labДокументация проектаzorin-nodeДокументация проектаzorin-opsДокументация проектаdonstu-python-sdkДокументация проектаfloortraceFloortraceserver-rsLocalzet Server / Cluster
Catalog
Documentation/Мультипарадигмальная БД

Архитектура NexusDB

NexusDB состоит из нескольких слоёв, каждый отвечает за определённые функции:

Приложение ↓┌──────────────────────────────┐│ Query Processing Layer ││ (Parser, Executor, Optimizer)│└──────────────────────────────┘ ↓┌──────────────────────────────┐│ Storage & Index Layer ││ (MVCC, Transactions, Cache) │└──────────────────────────────┘ ↓┌──────────────────────────────┐│ Distribution & HA Layer ││ (Raft, Sharding, Replication│└──────────────────────────────┘ ↓ Хранилище (In-Memory / Disk)
SVG ↗
  • Парсирует SQL согласно диалекту PostgreSQL
  • Поддерживает SELECT, INSERT, UPDATE, DELETE, CREATE TABLE
  • Обрабатывает сложные выражения и операторы

Основной компонент выполнения запросов:

WHERE Evaluation

// Вычисление условий с типизацией
pub fn evaluate_where(&self, row: &Row, condition: &Expr) -> Result<bool>

JOINs

  • INNER JOIN: только совпадающие строки
  • LEFT JOIN: все из левой таблицы
  • RIGHT JOIN: все из правой таблицы
  • FULL JOIN: все из обеих таблиц
  • CROSS JOIN: декартово произведение

Aggregates

  • COUNT, SUM, AVG, MIN, MAX
  • Работает с GROUP BY и HAVING

Аналитические функции для расширенного анализа:

ROW_NUMBER() -- Порядковый номер в партиции
RANK() -- Ранг с пропусками
DENSE_RANK() -- Плотный ранг
LAG() -- Предыдущая строка
LEAD() -- Следующая строка
FIRST_VALUE() -- Первое значение в окне
LAST_VALUE() -- Последнее значение в окне
  • Простые CTEs с материализацией
  • Рекурсивные CTEs с обнаружением циклов
  • Оптимизированное кеширование результатов

Основан на статистике и селективности:

Сбор статистики
↓
Построение гистограмм
↓
Оценка селективности
↓
Переупорядочение предикатов
↓
Рекомендации индексов

2.1 MVCC (Multi-Version Concurrency Control)

Section titled “2.1 MVCC (Multi-Version Concurrency Control)”

Механизм для конкурентного доступа без глобальных блокировок:

Row ID 1 → [Version 1] → [Version 2] → [Version 3]
(TxID 100) (TxID 150) (TxID 200)

Версионные цепочки:

  • Каждая строка имеет цепочку версий
  • Каждая версия помечена ID транзакции
  • Используется для определения видимости данных
pub enum IsolationLevel {
ReadUncommitted, // Грязное чтение разрешено
ReadCommitted, // Видны только коммитенные данные
RepeatableRead, // Снимок изолирован от других
Serializable, // Полная изоляция
}

Lock Manager:

  • Shared Lock (чтение): несколько читателей
  • Exclusive Lock (запись): один автор, никого больше

Conflict Detection:

  • Граф конфликтов через DFS
  • Обнаружение циклов = deadlock
  • Все изменения логируются перед применением
  • Гарантирует durability при сбого
  • Позволяет восстановление после сбоя

B-Tree Index

  • Сбалансированные деревья поиска
  • Эффективен для диапазонных запросов
  • Используется для PRIMARY KEY

Hash Index

  • Быстрый поиск по точному значению
  • Оптимален для JOIN условий

Bloom Filter

  • Вероятностная структура данных
  • Быстро исключает неправильные значения

LRU Cache

Самые свежие ← → Самые старые
↑ ↓
Новые данные Удаляются первыми

Buffer Pool

  • Управление страницами памяти
  • Pin/Unpin механизм
  • Вытеснение LRU политикой

Query Result Cache

  • Кеширование результатов запросов
  • Потокобезопасное хранилище
  • TTL-based invalidation

Алгоритм для распределённого согласия:

Follower ──(election timeout)──> Candidate ↑ ↓ └─────(win election)─────────> Leader └───(lost)─────────────────> Follower
SVG ↗

Состояния:

  • Follower: слушает leader
  • Candidate: претендует на лозунство
  • Leader: управляет кластером

Log Replication:

Leader → [Log Entry 1] ✓
→ [Log Entry 2] ✓
→ [Log Entry 3] ✓
(кворум = большинство)

Распределение данных по узлам:

Consistent Hashing

Node 1 (0°)
↗ ↖
Node 4 Node 2 (120°)
↖ ↗
Node 3 (240°)
Key hash → ближайший по часовой узел

Range Partitioning

Shard 1: Keys [A-L]
Shard 2: Keys [M-Z]
Shard 3: Keys [0-9]

List Partitioning

Shard 1: Country IN ('US', 'CA')
Shard 2: Country IN ('UK', 'FR')
Shard 3: Country IN (остальные)

Node Health Monitoring:

  • Проверка heartbeat
  • Отслеживание last_heartbeat
  • Автоматическое понижение при сбое

Failover Process:

1. Leader не отвечает
2. Followers видят timeout
3. Кандидат запрашивает голоса
4. Большинство голосует
5. Новый leader становится active

Обратный индекс от термина к документам:

"database" → [Doc1: [pos 1, 5], Doc2: [pos 3]]
"query" → [Doc1: [pos 10], Doc3: [pos 2, 8]]
  • Приведение к нижнему регистру
  • Удаление стоп-слов
  • Porter stemmer для нормализации
"Running" → "run"
"databases" → "databas"
"the" → REMOVED

Алгоритм релевантности:

Score = Σ IDF(term) * ((k1+1) * TF) / (TF + k1*(1-b+b*length_norm))
где:
IDF = log(total_docs / docs_with_term)
TF = term frequency in doc
k1 = term frequency saturation (1.5)
b = length normalization (0.75)
pub struct QueryMetrics {
query_id: String,
query_text: String,
execution_time_ms: u64,
rows_scanned: u64,
rows_returned: u64,
index_used: Option<String>,
full_scan: bool,
}
  • Порог срабатывания (ms)
  • Скользящее окно истории
  • Анализ проблемных запросов
CPU Usage: 45%
Memory: 1.2 GB / 8 GB
Connections: 42/100
Cache Hit Ratio: 94.2%
Response Time (avg): 12ms
SQL: INSERT INTO users VALUES (...)
↓
Parser → Executor → MVCC Manager
↓
Version Chain (add new version)
↓
WAL (write entry to log)
↓
Replication (send to followers)
↓
Commit (mark version as committed)
SQL: SELECT * FROM users WHERE id > 10
↓
Parser → Executor
↓
Index Lookup (if available)
↓
MVCC Visibility Check (find right version)
↓
WHERE Evaluation
↓
Aggregation/Window Functions (if needed)
↓
Result Caching
↓
Return Results
Raw Query
↓
Statistics Collection
↓
Selectivity Estimation
↓
Predicate Ordering
↓
Join Order
↓
Index Selection
↓
Optimized Execution Plan
ОперацияСложностьПримечания
SELECT точное значениеO(1)С индексом Hash
SELECT диапазонO(log n)С индексом B-Tree
JOINс индексомO(n)Nested loop + index
GROUP BYO(n log n)Сортировка
Window FunctionO(n²)В худшем случае
MVCC ReadO(1)Быстрая версионная цепь

Дополнительные детали см. в API Reference

Source