Могут ли несколько экземпляров RocksDB совместно использовать и считывать данные из одного и того же диапазона ключей?

#rocksdb #okvs

Вопрос:

Прошлые ответы на переполнение стека предполагают, что однопоточный характер RocksDB означает, что ответ отрицательный, но в официальной документации FB есть страницы, подобные этой http://rocksdb.org/blog/2021/05/27/rocksdb-secondary-cache.html где несколько экземпляров, похоже, совместно используют кэш.

1)Используют ли эти экземпляры один и тот же диапазон ключей?

  1. Если да, то как передаются обновления от одного экземпляра БД к другому? Насколько я знаю, у RocksDB нет никакой связи между СУБД?

Комментарии:

1. Ваш вопрос неясен. У вас есть экземпляр rocksdb или несколько? Находятся ли они все в одном и том же процессе или потоке POSIX. Используете ли вы несколько экземпляров rocksdb (один и тот же env) внутри одного и того же процесса POSIX? Пожалуйста, дайте больше контекста.

2. @amirouche Я пытаюсь понять, как связаны несколько экземпляров RocksDB, которые совместно используют вторичный кэш? Находятся ли они в одном и том же процессе POSIX? И работают ли они логически с одним и тем же набором файлов во вторичном кэше или он разделен между каждым экземпляром.

3. Что вы имеете в виду под «однопоточной природой RocksDB»?

Ответ №1:

  1. Экземпляры БД не имеют общего диапазона ключей.

Просто К ТВОЕМУ сведению. один процесс может иметь несколько экземпляров RocksDB, каждый экземпляр может иметь несколько семейств столбцов. Они не обмениваются пользовательскими данными. Внутренне семейства столбцов в одном экземпляре совместно используют WAL (журнал предварительной записи), манифест (информация о базе данных отслеживания), файл опций. Экземпляры БД в одном процессе используют один и тот же Env, пул потоков, таймер, кэш.