Files
futriix/config.toml

160 lines
7.5 KiB
TOML
Raw Normal View History

2026-06-10 23:16:57 +03:00
#
# 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
[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 = false # Включить плагины
script_dir = "plugins" # Директория плагинов
allow_list = ["print", "math", "string"]
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 # Таймаут загрузки плагина