# # 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 # Таймаут загрузки плагина # ========== НОВЫЕ СЕКЦИИ КОНФИГУРАЦИИ ========== # Настройки TLS для межузлового общения [cluster_tls] enabled = true # Включить TLS cert_file = "certs/node.crt" # Путь к сертификату key_file = "certs/node.key" # Путь к ключу ca_file = "certs/ca.crt" # Путь к CA (для взаимной аутентификации) min_version = "1.2" # Минимальная версия TLS mutual_auth = true # Взаимная аутентификация key_rotation_days = 30 # Дни до ротации ключей auto_generate = true # Автогенерация сертификатов # Настройки 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 # Дни хранения бэкапов