# # 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 # Таймаут загрузки плагина