RocksDbDataSource

Параметры конфигурации RocksDB (читаются из config.properties).

Формат размеров: поддерживаются байты и суффиксы K, KB, KiB, M, MB, MiB, G, GB, GiB, T, TB, TiB без учёта регистра. Примеры: "32768", "32KiB", "500MB", "16GiB".

Ключи:

  • database.rocks.lru_cache_size (size, по умолчанию: 512MiB) Объём off-heap LRU BlockCache для data/index/filter-блоков SST. Больше кэш → меньше чтений с диска. Делит память между всеми Column Family при одном экземпляре LRUCache.

  • database.rocks.tbl_block_size (size, по умолчанию: 32KiB) Размер блока таблицы (SST block size). Влияет на локальность и hit-ratio кэша. Меньше блоки → больше индексов/метаданных, больше seek’ов; больше блоки → выше пропускная, но больше лишних данных.

  • database.rocks.partition_filters (bool, по умолчанию: true) Включает Partitioned Filters. Обычно улучшает память и скорость фильтрации на крупных базах.

  • database.rocks.max_open_files (int, по умолчанию: -1) Лимит открытых файлов. -1 означает “без лимита” (RocksDB сам управляет cache’ем дескрипторов).

  • database.rocks.enable_pipelined_write (bool, по умолчанию: true) Pipelined Write. Снижает задержки при высокой конкуренции на запись.

  • database.rocks.allow_concurrent (bool, по умолчанию: true) Разрешает конкурентную запись в memtable.

  • database.rocks.max_background_jobs (int, по умолчанию: CPU * 2) Количество фоновых задач компактаций и flush. Увеличение ускоряет обработку, но ест CPU/IO.

  • database.rocks.write_buffer_size (size, по умолчанию: 64MiB) Размер одного memtable (перезаписываемого буфера). Большие буферы лучше сглатывают пики записи, но увеличивают паузы flush/compaction и потребление RAM.

  • database.rocks.max_write_buffer (int, по умолчанию: 4) Общее число memtable. Обычно 3–6. При большем значении растёт RAM-потребление и сглаживаются пики.

  • database.rocks.min_write_buffer (int, по умолчанию: 2) Сколько memtable должно накопиться перед слиянием/flush. Балансирует write amplification и память.

  • database.rocks.slowdown_writes (int, по умолчанию: 24) Порог числа файлов в L0, при котором записи начинают замедляться (setLevel0SlowdownWritesTrigger).

  • database.rocks.stop_writes (int, по умолчанию: 50) Порог числа файлов в L0, при котором записи останавливаются (setLevel0StopWritesTrigger). Используется для защиты от неуспеваемости компактаций.

  • database.rocks.flush_interval_ms (int, по умолчанию: 5) Задержка между записями данных на диск движком Чем больше время задержки, тем меньше нагружен диск, но тем больше данных может быть потеряно при неожиданном завершении процесса

  • database.rocks.max_sync_time_ms (Long, по умолчанию 50) Период синхронизации memtable и sst при отключеном WAL. Определяет максимальную задержку между записью в memtable и записью на диск.

    Внимание: Данные за этот промежуток времени могут быть утеряны при неожиданном завершении процесса RocksDB

  • database.rocks.batch_size (int, по умолчанию 10000) Размер блока для единовременной записи в RocksDB

  • database.rocks.write_parallelism (int, по умолчанию: 10) Максимальное количество параллельных задач записи в RocksDB. Ограничивает число одновременно выполняющихся db.write(), чтобы избежать блокировок на уровне движка и избыточного потребления памяти. Увеличение значения повышает пропускную способность при большом числе CPU-ядер, но может ухудшить латентность и привести к конкуренции за внутренние мьютексы RocksDB.

  • database.rocks.write_timeout_ms (long, по умолчанию: 1000) Максимальное время ожидания завершения одной операции записи батча в миллисекундах. Если таймаут превышен, корутина отменяется, и событие записывается в лог. Не гарантирует немедленное прерывание системного вызова, если RocksDB не поддерживает обработку Thread.interrupt.

  • database.rocks.max_log_size (size, по умолчанию 100MiB) Максимальный размер текущего файла логов RocksDB

  • database.max_keep_log_files (long, по умолчанию 10) Максимальное число файлов логов RocksDB

Замечания по памяти:

  • Общая RAM ≈ BlockCache + memtable’ы + метаданные + JVM + остальное.

  • Начинайте с 20–40% RAM на BlockCache и 10–30% на memtable’ы, затем калибруйте по метрикам.

Типичные метрики для контроля:

  • Block cache hit ratio, block cache usage/capacity.

  • L0 файлы, compaction pending, write stall/stop счётчики.

Types

Link copied to clipboard

Properties

Link copied to clipboard
lateinit var db: RocksDB
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Директория базы данных nosql

Link copied to clipboard
Link copied to clipboard

Имя пространства таблиц,

Link copied to clipboard
var writeOpts: WriteOptions?

Functions

Link copied to clipboard
fun catchUpTo(targetSeq: Long)
Link copied to clipboard
open override fun close()
Link copied to clipboard
fun init(mode: RocksDbDataSource.Mode, dbPath: String = "/", secondaryPath: String = nosqlSecondary)

Инициализация RocksDB базы данных

Link copied to clipboard