Files
futriix/config.toml
2026-06-10 23:16:57 +03:00

160 lines
7.5 KiB
TOML
Raw 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
[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 # Таймаут загрузки плагина