Files
futriix/config.toml

256 lines
13 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#
# 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
[cluster]
name = "test_cluster"
node_ip = "192.168.0.103" # Укажите ваш реальный IP
node_port = 9876
raft_port = 9878
raft_data_dir = "raft_data"
bootstrap = true # Флаг для первого узла в кластере
nodes = [ # Список узлов кластера
"192.168.0.103:9878", # Текущий узел
# "192.168.0.104:9878", # Другие узлы кластера
# "192.168.0.105:9878",
]
# Таймауты 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]
page_size_mb = 64
max_collections = 100
max_documents_per_collection = 1000000
default_engine = "row" # Движок хранения по умолчанию: row, columnar, document, kv, ts, graph
enable_custom_engines = true # Включить поддержку кастомных движков
[repl]
prompt_color = "#00bfff"
history_size = 1000
[log]
log_file = "futriix.log"
log_level = "debug"
[api]
port = 8080 # Порт для HTTP API сервера
[replication]
enabled = false
master_master = false
sync_replication = false
replication_timeout_ms = 5000
[compression]
enabled = true # Включить сжатие данных
algorithm = "snappy" # Алгоритм: snappy, lz4, zstd
level = 3 # Уровень сжатия (1-9, зависит от алгоритма)
min_size = 1024 # Минимальный размер документа для сжатия (байт)
[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 # Максимум соединений
# ========== ПАРАМЕТРЫ БЕЗОПАСНОСТИ ==========
[security]
enable_tls = false # Включить TLS
cert_file = "" # Путь к сертификату
key_file = "" # Путь к ключу
ca_file = "" # Путь к CA
min_version = "1.2" # Минимальная версия TLS
# ========== ПАРАМЕТРЫ МОНИТОРИНГА ==========
[monitoring]
enable_metrics = true # Включить Prometheus метрики
metrics_port = 9090 # Порт для метрик
enable_tracing = false # Включить распределённый трейсинг
trace_sample_rate = 0.01 # Частота сэмплирования (0-1)
# ========== ПАРАМЕТРЫ ВОССТАНОВЛЕНИЯ ==========
[recovery]
auto_rejoin = true # Автоматическое переподключение
max_retry_sec = 300 # Максимальное время повторов
data_replication_timeout_sec = 60 # Таймаут репликации данных
stale_read_timeout_sec = 30 # Таймаут для устаревших чтений
# ========== НАСТРОЙКИ WAL ==========
[wal]
segment_size_mb = 64 # Размер сегмента WAL (MB)
sync_interval_sec = 5 # Интервал синхронизации с диском
batch_size = 100 # Размер пакета записи
recovery_workers = 4 # Количество воркеров для parallel recovery
enabled = true # Включить WAL
async_recovery = true # Асинхронное восстановление
async_recovery_workers = 4 # Количество воркеров
async_recovery_buffer = 10000 # Размер буфера
# ========== НАСТРОЙКИ MVCC ==========
[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 кэша (5 минут)
# ========== НАСТРОЙКИ ТРАНЗАКЦИЙ ==========
[transactions]
default_timeout_sec = 30 # Таймаут транзакции по умолчанию
deadlock_check_interval_sec = 1 # Интервал проверки дедлоков
max_savepoints_per_tx = 100 # Максимум точек сохранения
two_phase_commit_timeout_sec = 10 # Таймаут 2-phase commit
enabled = true # Включить поддержку транзакций
checkpoint_interval_sec = 300 # Интервал чекпоинтов (сек)
# ========== НАСТРОЙКИ ACL ==========
[acl]
max_denied_log_size = 10000 # Максимум записей в логе отказов
temporary_grant_ttl_hours = 24 # TTL временных разрешений
enable_role_hierarchy = true # Включить иерархию ролей
cache_ttl_sec = 60 # TTL кэша ACL
# ========== НАСТРОЙКИ ПЛАГИНОВ (расширенные) ==========
[plugins]
enabled = true # Включить плагины (включено для движков)
script_dir = "plugins" # Директория плагинов
allow_list = ["print", "math", "string", "table", "engine"]
max_lua_states = 100 # Максимум Lua-состояний
lua_state_ttl_sec = 600 # TTL неиспользуемого состояния (сек)
max_cpu_time_ms = 100 # Лимит CPU на плагин (ms)
max_memory_mb = 50 # Лимит памяти на плагин (MB)
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]
# Встроенный 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" }
# ========== НОВЫЕ СЕКЦИИ КОНФИГУРАЦИИ ==========
# Настройки 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 # Взаимная аутентификация
key_rotation_days = 30 # Дни до ротации ключей
auto_generate = false # Автогенерация сертификатов
# Настройки 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-ограничений
[runtime_limits]
enabled = true # Включить ограничения
global_max_doc_size_mb = 16 # Макс. размер документа (MB)
global_max_coll_size_mb = 10240 # Макс. размер коллекции (MB) (10 GB)
global_max_docs_per_coll = 10000000 # Макс. документов в коллекции
# Настройки автомасштабирования
[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]
enabled = true # Включить миграции
migration_dir = "migrations" # Директория с миграциями
auto_migrate = true # Автоматическая миграция при старте
target_version = "2.1.0" # Целевая версия схемы
# Настройки бэкапов
[backup]
enabled = true # Включить планировщик бэкапов
backup_dir = "backups" # Директория для бэкапов
max_concurrent = 1 # Макс. одновременных бэкапов
compress_enabled = true # Сжатие бэкапов
retention_days = 7 # Дни хранения бэкапов