Upload files to "/"
This commit is contained in:
403
config.toml
Normal file
403
config.toml
Normal file
@@ -0,0 +1,403 @@
|
||||
#
|
||||
# Copyright 2026 Grigorii Safronov
|
||||
#
|
||||
# Licensed under the CDDL, Version 1.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
#
|
||||
# You may obtain a copy of the License at
|
||||
# https://opensource.org/licenses/CDDL-1.0
|
||||
#
|
||||
|
||||
# ============================================================================
|
||||
# КОНФИГУРАЦИОННЫЙ ФАЙЛ СУБД futriiX
|
||||
# ============================================================================
|
||||
# Данный файл содержит все настройки для работы кластерной СУБД futriiX.
|
||||
# Формат: TOML (Tom's Obvious, Minimal Language)
|
||||
# ============================================================================
|
||||
|
||||
# ============================================================================
|
||||
# [cluster] - НАСТРОЙКИ КЛАСТЕРА
|
||||
# ============================================================================
|
||||
# Определяет конфигурацию узла в распределённом кластере.
|
||||
# Все узлы должны иметь одинаковое имя кластера для взаимодействия.
|
||||
# ============================================================================
|
||||
[cluster]
|
||||
name = "test_cluster" # Имя кластера (должно совпадать на всех узлах)
|
||||
node_ip = "192.168.0.103" # IP-адрес узла (0.0.0.0 - все интерфейсы)
|
||||
node_port = 9876 # Порт для коммуникации между узлами
|
||||
raft_port = 9878 # Порт для Raft консенсус-протокола
|
||||
raft_data_dir = "raft_data" # Директория для данных Raft (логи, снапшоты)
|
||||
bootstrap = true # Первый узел в кластере (только для инициализации)
|
||||
nodes = [ # Список всех узлов кластера
|
||||
"192.168.0.103:9878", # Формат: "IP:RaftPort"
|
||||
]
|
||||
|
||||
# ---------- Таймауты Raft ----------
|
||||
heartbeat_timeout_ms = 1000 # Интервал heartbeat от лидера (мс)
|
||||
election_timeout_ms = 1000 # Таймаут до начала выборов (мс)
|
||||
commit_timeout_ms = 500 # Таймаут коммита (мс)
|
||||
|
||||
# ---------- Snapshot настройки ----------
|
||||
snapshot_interval_min = 30 # Интервал создания снапшотов (минут)
|
||||
snapshot_threshold = 1000 # Количество логов до создания снапшота
|
||||
|
||||
# ---------- Split-brain защита ----------
|
||||
split_brain_prevention = true # Включить защиту от split-brain
|
||||
recovery_timeout_sec = 30 # Таймаут восстановления (сек)
|
||||
|
||||
# ---------- Региональные настройки ----------
|
||||
region = "default" # Регион узла (для географического распределения)
|
||||
priority_zone = 0 # Приоритетная зона (0-9, меньше = выше приоритет)
|
||||
|
||||
# ============================================================================
|
||||
# [storage] - НАСТРОЙКИ ХРАНИЛИЩА
|
||||
# ============================================================================
|
||||
# Определяет параметры физического хранения данных.
|
||||
# ============================================================================
|
||||
[storage]
|
||||
page_size_mb = 64 # Размер страницы памяти (МБ)
|
||||
max_collections = 100 # Максимальное количество коллекций в БД
|
||||
max_documents_per_collection = 1000000 # Максимум документов в коллекции
|
||||
default_engine = "row" # Движок хранения по умолчанию
|
||||
enable_custom_engines = true # Включить поддержку кастомных движков
|
||||
|
||||
# ============================================================================
|
||||
# [repl] - НАСТРОЙКИ REPL (Read-Eval-Print Loop)
|
||||
# ============================================================================
|
||||
# Настройки интерактивной командной строки для управления СУБД.
|
||||
# ============================================================================
|
||||
[repl]
|
||||
prompt_color = "#00bfff" # Цвет приглашения (HEX)
|
||||
history_size = 1000 # Размер истории команд
|
||||
|
||||
# ============================================================================
|
||||
# [log] - НАСТРОЙКИ ЛОГИРОВАНИЯ
|
||||
# ============================================================================
|
||||
# Определяет, куда и с какой детализацией сохранять логи.
|
||||
# ============================================================================
|
||||
[log]
|
||||
log_file = "futriix.log" # Путь к файлу логов
|
||||
log_level = "debug" # Уровень: debug, info, warn, error, fatal
|
||||
|
||||
# ============================================================================
|
||||
# [api] - НАСТРОЙКИ HTTP API
|
||||
# ============================================================================
|
||||
# Порт для REST API сервера.
|
||||
# ============================================================================
|
||||
[api]
|
||||
port = 8080 # Порт HTTP API
|
||||
|
||||
# ============================================================================
|
||||
# [replication] - НАСТРОЙКИ РЕПЛИКАЦИИ
|
||||
# ============================================================================
|
||||
# Управляет репликацией данных между узлами кластера.
|
||||
# Мастер-мастер репликация НЕ ИСПОЛЬЗУЕТСЯ (удалена из архитектуры).
|
||||
# ============================================================================
|
||||
[replication]
|
||||
enabled = false # Включить репликацию
|
||||
sync_replication = false # Синхронная репликация (ждёт подтверждения)
|
||||
replication_timeout_ms = 5000 # Таймаут репликации (мс)
|
||||
max_replica_lag_ms = 5000 # Максимальная задержка для чтения с реплик
|
||||
|
||||
# ============================================================================
|
||||
# [compression] - НАСТРОЙКИ СЖАТИЯ
|
||||
# ============================================================================
|
||||
# Алгоритмы и параметры сжатия данных для экономии места.
|
||||
# ============================================================================
|
||||
[compression]
|
||||
enabled = true # Включить сжатие данных
|
||||
algorithm = "snappy" # Алгоритм: snappy, lz4, zstd
|
||||
level = 3 # Уровень сжатия (1-9)
|
||||
min_size = 1024 # Минимальный размер документа для сжатия (байт)
|
||||
|
||||
# ============================================================================
|
||||
# [webui] - НАСТРОЙКИ ВЕБ-ИНТЕРФЕЙСА
|
||||
# ============================================================================
|
||||
# Встроенный веб-интерфейс для мониторинга и управления.
|
||||
# ============================================================================
|
||||
[webui]
|
||||
enabled = true # Включить веб-интерфейс
|
||||
port = 9080 # Порт веб-интерфейса
|
||||
theme = "dark" # Тема: dark, light
|
||||
|
||||
# ============================================================================
|
||||
# [performance] - НАСТРОЙКИ ПРОИЗВОДИТЕЛЬНОСТИ
|
||||
# ============================================================================
|
||||
# Оптимизация производительности системы.
|
||||
# ============================================================================
|
||||
[performance]
|
||||
enable_pipeline = true # Pipeline репликация (группировка команд)
|
||||
batch_size = 100 # Размер батча операций
|
||||
read_from_follower = true # Чтение из реплик (асинхронная репликация)
|
||||
max_connections = 1000 # Максимум соединений
|
||||
read_replica_delay_ms = 100 # Максимальная задержка для чтения с реплик
|
||||
|
||||
# ============================================================================
|
||||
# [security] - НАСТРОЙКИ БЕЗОПАСНОСТИ
|
||||
# ============================================================================
|
||||
# TLS шифрование и аутентификация клиентов.
|
||||
# ============================================================================
|
||||
[security]
|
||||
enable_tls = false # Включить TLS
|
||||
cert_file = "" # Путь к сертификату (.crt)
|
||||
key_file = "" # Путь к ключу (.key)
|
||||
ca_file = "" # Путь к CA (.crt)
|
||||
min_version = "1.2" # Минимальная версия TLS
|
||||
|
||||
# ============================================================================
|
||||
# [monitoring] - НАСТРОЙКИ МОНИТОРИНГА
|
||||
# ============================================================================
|
||||
# Сбор метрик и распределённый трейсинг.
|
||||
# ============================================================================
|
||||
[monitoring]
|
||||
enable_metrics = true # Включить Prometheus метрики
|
||||
metrics_port = 9090 # Порт для метрик
|
||||
enable_tracing = false # Включить распределённый трейсинг
|
||||
trace_sample_rate = 0.01 # Частота сэмплирования (0-1)
|
||||
|
||||
# ============================================================================
|
||||
# [recovery] - НАСТРОЙКИ ВОССТАНОВЛЕНИЯ
|
||||
# ============================================================================
|
||||
# Автоматическое восстановление после сбоев.
|
||||
# ============================================================================
|
||||
[recovery]
|
||||
auto_rejoin = true # Автоматическое переподключение к кластеру
|
||||
max_retry_sec = 300 # Максимальное время повторов (сек)
|
||||
data_replication_timeout_sec = 60 # Таймаут репликации данных (сек)
|
||||
stale_read_timeout_sec = 30 # Таймаут для устаревших чтений (сек)
|
||||
|
||||
# ============================================================================
|
||||
# [wal] - НАСТРОЙКИ WAL (Write-Ahead Log)
|
||||
# ============================================================================
|
||||
# Журнал предзаписи для обеспечения целостности данных.
|
||||
# Поддерживает сегментирование и асинхронное восстановление.
|
||||
# ============================================================================
|
||||
[wal]
|
||||
segment_size_mb = 64 # Размер сегмента WAL (МБ)
|
||||
sync_interval_sec = 5 # Интервал синхронизации с диском (сек)
|
||||
batch_size = 100 # Размер пакета записи
|
||||
recovery_workers = 4 # Количество воркеров для восстановления
|
||||
enabled = true # Включить WAL
|
||||
async_recovery = true # Асинхронное восстановление
|
||||
async_recovery_workers = 4 # Количество воркеров для асинхронного восстановления
|
||||
async_recovery_buffer = 10000 # Размер буфера для асинхронного восстановления
|
||||
|
||||
# ============================================================================
|
||||
# [mvcc] - НАСТРОЙКИ MVCC
|
||||
# ============================================================================
|
||||
# Multi-Version Concurrency Control для управления версиями документов.
|
||||
# ============================================================================
|
||||
[mvcc]
|
||||
max_versions_per_doc = 10 # Максимум версий документа (0 = отключено)
|
||||
visibility_map_size = 1048576 # Размер карты видимости (1M)
|
||||
prune_interval_min = 5 # Интервал очистки версий (минут)
|
||||
retention_days = 7 # Дни хранения старых версий
|
||||
read_cache_size = 10000 # Размер кэша чтения
|
||||
read_cache_ttl_sec = 300 # TTL кэша (сек)
|
||||
|
||||
# ============================================================================
|
||||
# [transactions] - НАСТРОЙКИ ТРАНЗАКЦИЙ
|
||||
# ============================================================================
|
||||
# Управление транзакциями с поддержкой Saga и TCC.
|
||||
# 2PC (Two-Phase Commit) НЕ ИСПОЛЬЗУЕТСЯ (удалён из архитектуры).
|
||||
# ============================================================================
|
||||
[transactions]
|
||||
default_timeout_sec = 30 # Таймаут транзакции по умолчанию (сек)
|
||||
deadlock_check_interval_sec = 1 # Интервал проверки дедлоков (сек)
|
||||
max_savepoints_per_tx = 100 # Максимум точек сохранения в транзакции
|
||||
enabled = true # Включить поддержку транзакций
|
||||
checkpoint_interval_sec = 300 # Интервал чекпоинтов (сек)
|
||||
|
||||
# ============================================================================
|
||||
# [saga] - НАСТРОЙКИ SAGA ОРКЕСТРАТОРА
|
||||
# ============================================================================
|
||||
# Отказоустойчивый оркестратор распределённых транзакций по протоколу SAGA.
|
||||
# Обеспечивает выполнение длительных транзакций с компенсацией шагов.
|
||||
# ============================================================================
|
||||
[saga]
|
||||
# Основные настройки
|
||||
enabled = true # Включить SAGA оркестратор
|
||||
coordinator_count = 3 # Количество координаторов (>= 3 для отказоустойчивости)
|
||||
state_dir = "saga_states" # Директория для хранения состояний SAGA
|
||||
|
||||
# Настройки выполнения
|
||||
max_retries = 5 # Максимальное количество попыток выполнения шага
|
||||
retry_backoff_ms = 100 # Базовая задержка между повторными попытками (мс)
|
||||
saga_timeout_sec = 300 # Таймаут выполнения SAGA (сек)
|
||||
stuck_check_interval_sec = 10 # Интервал проверки зависших SAGA (сек)
|
||||
|
||||
# Настройки оркестрации
|
||||
leader_election_interval_sec = 5 # Интервал выбора лидера (сек)
|
||||
recovery_interval_sec = 30 # Интервал восстановления незавершённых SAGA (сек)
|
||||
metrics_interval_sec = 60 # Интервал сбора метрик (сек)
|
||||
|
||||
# Настройки очистки и кэширования
|
||||
cleanup_period_hours = 24 # Период очистки старых SAGA (часы)
|
||||
max_cache_size = 10000 # Максимальное количество состояний в кэше
|
||||
operation_retention_days = 7 # Время жизни выполненных операций (дни)
|
||||
|
||||
# Настройки производительности
|
||||
channel_buffer_size = 10000 # Размер буфера каналов
|
||||
async_recovery_workers = 4 # Количество воркеров для асинхронного восстановления
|
||||
async_recovery_timeout_sec = 30 # Таймаут асинхронного восстановления (сек)
|
||||
|
||||
# Настройки синхронизации с диском
|
||||
fsync_enabled = true # Принудительная синхронизация с диском
|
||||
fsync_max_retries = 3 # Количество повторных попыток синхронизации
|
||||
fsync_retry_delay_ms = 100 # Задержка между повторными попытками (мс)
|
||||
|
||||
# ============================================================================
|
||||
# [acl] - НАСТРОЙКИ ACL (Access Control List)
|
||||
# ============================================================================
|
||||
# Управление доступом и ролями пользователей.
|
||||
# ============================================================================
|
||||
[acl]
|
||||
max_denied_log_size = 10000 # Максимум записей в логе отказов
|
||||
temporary_grant_ttl_hours = 24 # TTL временных разрешений (часы)
|
||||
enable_role_hierarchy = true # Включить иерархию ролей
|
||||
cache_ttl_sec = 60 # TTL кэша ACL (сек)
|
||||
|
||||
# ============================================================================
|
||||
# [plugins] - НАСТРОЙКИ ПЛАГИНОВ
|
||||
# ============================================================================
|
||||
# Поддержка Lua скриптов и кастомных движков хранения.
|
||||
# ============================================================================
|
||||
[plugins]
|
||||
enabled = true # Включить плагины
|
||||
script_dir = "plugins" # Директория плагинов
|
||||
allow_list = ["print", "math", "string", "table", "engine"] # Разрешённые Lua-библиотеки
|
||||
max_lua_states = 100 # Максимум Lua-состояний
|
||||
lua_state_ttl_sec = 600 # TTL неиспользуемого состояния (сек)
|
||||
max_cpu_time_ms = 100 # Лимит CPU на плагин (мс)
|
||||
max_memory_mb = 50 # Лимит памяти на плагин (МБ)
|
||||
max_execution_time_sec = 5 # Лимит времени выполнения (сек)
|
||||
max_instructions = 1000000 # Лимит инструкций Lua
|
||||
hot_reload_interval_sec = 30 # Интервал проверки изменений (сек)
|
||||
max_event_log_size = 1000 # Максимум записей в логе плагина
|
||||
load_timeout_sec = 10 # Таймаут загрузки плагина (сек)
|
||||
engine_plugin_dir = "engines" # Директория с движками-плагинами
|
||||
|
||||
# ============================================================================
|
||||
# [engines] - НАСТРОЙКИ КАСТОМНЫХ ДВИЖКОВ
|
||||
# ============================================================================
|
||||
# Конфигурация различных движков хранения данных.
|
||||
# ============================================================================
|
||||
[engines]
|
||||
# Встроенный row-based движок (всегда доступен)
|
||||
[engines.row]
|
||||
enabled = true
|
||||
description = "Row-based storage engine (default)"
|
||||
|
||||
# Колоночный движок для аналитических нагрузок
|
||||
[engines.columnar]
|
||||
enabled = false
|
||||
description = "Columnar storage engine for analytics"
|
||||
config = { compression = "zstd", block_size = 65536 }
|
||||
|
||||
# Document-ориентированный движок (JSON-подобный)
|
||||
[engines.document]
|
||||
enabled = false
|
||||
description = "Document-oriented storage engine"
|
||||
config = { auto_index = true, max_nesting = 32 }
|
||||
|
||||
# Key-Value движок для простых операций
|
||||
[engines.kv]
|
||||
enabled = false
|
||||
description = "Key-Value storage engine"
|
||||
config = { ttl_enabled = true, ttl_default_seconds = 86400 }
|
||||
|
||||
# Time-series движок для временных рядов
|
||||
[engines.ts]
|
||||
enabled = false
|
||||
description = "Time-series storage engine"
|
||||
config = { chunk_interval_seconds = 3600, retention_days = 30 }
|
||||
|
||||
# Графовый движок для связей
|
||||
[engines.graph]
|
||||
enabled = false
|
||||
description = "Graph storage engine"
|
||||
config = { vertex_label = "node", edge_label = "relationship" }
|
||||
|
||||
# ============================================================================
|
||||
# [cluster_tls] - TLS ДЛЯ МЕЖУЗЛОВОГО ОБЩЕНИЯ
|
||||
# ============================================================================
|
||||
# Шифрование трафика между узлами кластера.
|
||||
# ============================================================================
|
||||
[cluster_tls]
|
||||
enabled = false # Включить TLS для межузлового общения
|
||||
cert_file = "certs/node.crt" # Путь к сертификату узла
|
||||
key_file = "certs/node.key" # Путь к ключу узла
|
||||
ca_file = "certs/ca.crt" # Путь к CA (для взаимной аутентификации)
|
||||
min_version = "1.2" # Минимальная версия TLS
|
||||
mutual_auth = false # Взаимная аутентификация (mTLS)
|
||||
key_rotation_days = 30 # Дни до ротации ключей
|
||||
auto_generate = false # Автогенерация сертификатов при отсутствии
|
||||
|
||||
# ============================================================================
|
||||
# [backpressure] - НАСТРОЙКИ BACKPRESSURE
|
||||
# ============================================================================
|
||||
# Защита системы от перегрузки.
|
||||
# При достижении порогов начинает отклонять запросы или добавлять задержки.
|
||||
# ============================================================================
|
||||
[backpressure]
|
||||
enabled = true # Включить backpressure
|
||||
cpu_threshold = 0.80 # Порог CPU для срабатывания (0-1)
|
||||
memory_threshold = 0.85 # Порог памяти для срабатывания (0-1)
|
||||
queue_size_threshold = 10000 # Порог размера очереди
|
||||
connection_threshold = 5000 # Порог количества соединений
|
||||
check_interval_ms = 1000 # Интервал проверки (мс)
|
||||
low_delay_ms = 100 # Задержка при низкой нагрузке (мс)
|
||||
medium_reject_prob = 30 # Вероятность отклонения при средней (%%)
|
||||
high_reject_prob = 70 # Вероятность отклонения при высокой (%%)
|
||||
|
||||
# ============================================================================
|
||||
# [runtime_limits] - ОГРАНИЧЕНИЯ НА УРОВНЕ ВЫПОЛНЕНИЯ
|
||||
# ============================================================================
|
||||
# Жёсткие ограничения на размеры документов и коллекций.
|
||||
# ============================================================================
|
||||
[runtime_limits]
|
||||
enabled = true # Включить ограничения
|
||||
global_max_doc_size_mb = 16 # Макс. размер документа (МБ)
|
||||
global_max_coll_size_mb = 10240 # Макс. размер коллекции (МБ) (10 GB)
|
||||
global_max_docs_per_coll = 10000000 # Макс. документов в коллекции
|
||||
|
||||
# ============================================================================
|
||||
# [autoscaling] - НАСТРОЙКИ АВТОМАСШТАБИРОВАНИЯ
|
||||
# ============================================================================
|
||||
# Автоматическое добавление/удаление узлов в зависимости от нагрузки.
|
||||
# ============================================================================
|
||||
[autoscaling]
|
||||
enabled = false # Включить автомасштабирование
|
||||
min_nodes = 1 # Минимум узлов
|
||||
max_nodes = 10 # Максимум узлов
|
||||
scale_up_threshold = 0.75 # Порог для увеличения (0-1)
|
||||
scale_down_threshold = 0.30 # Порог для уменьшения (0-1)
|
||||
scale_up_cooldown_sec = 300 # Cooldown после увеличения (сек)
|
||||
scale_down_cooldown_sec = 600 # Cooldown после уменьшения (сек)
|
||||
evaluation_interval_sec = 30 # Интервал оценки (сек)
|
||||
predictive_enabled = true # Прогнозирование нагрузки
|
||||
max_scale_up_nodes = 3 # Макс. узлов за одно увеличение
|
||||
max_scale_down_nodes = 2 # Макс. узлов за одно уменьшение
|
||||
|
||||
# ============================================================================
|
||||
# [schema_migration] - НАСТРОЙКИ МИГРАЦИИ СХЕМЫ
|
||||
# ============================================================================
|
||||
# Автоматическое обновление схемы данных при обновлении версии.
|
||||
# ============================================================================
|
||||
[schema_migration]
|
||||
enabled = true # Включить миграции
|
||||
migration_dir = "migrations" # Директория с миграциями
|
||||
auto_migrate = true # Автоматическая миграция при старте
|
||||
target_version = "2.1.0" # Целевая версия схемы
|
||||
|
||||
# ============================================================================
|
||||
# [backup] - НАСТРОЙКИ БЭКАПОВ
|
||||
# ============================================================================
|
||||
# Планировщик резервного копирования данных.
|
||||
# ============================================================================
|
||||
[backup]
|
||||
enabled = true # Включить планировщик бэкапов
|
||||
backup_dir = "backups" # Директория для бэкапов
|
||||
max_concurrent = 1 # Макс. одновременных бэкапов
|
||||
compress_enabled = true # Сжатие бэкапов
|
||||
retention_days = 7 # Дни хранения бэкапов
|
||||
Reference in New Issue
Block a user