Мне нужна база данных с ключом, например redis или memcached, но не в памяти, а скорее на диске. После заполнения базы данных (что мы делаем регулярно и с нуля), мне действительно нужна операция get
, но из многих разных процессов (так что Kyoto Cabinet и LevelDB не работают для меня).Can RocksDB обрабатывает несколько клиентов только для чтения?
Мне нужны 5 миллионов ключей и ~10-30gb
данных, поэтому некоторые другие простые базы данных также не работают.
Я не могу найти информацию о том, может ли RocksDB обрабатывать несколько клиентов только для чтения; это не прямолинейно, чтобы основываться на моей ОС, поэтому я хотел спросить, прежде чем делать это. Если он не может, есть ли какая-нибудь база данных, которая будет работать? Предпочтительно с пакетом Ubuntu и привязками к Python ;-).
Сейчас мы используем много мелких файлов, но это действительно отстой, поскольку мы хотим легко создавать резервные копии, копировать и т. Д. Я также подозреваю, что это может привести к замедлению, но это не имеет большого значения.
Вы рассматривали SQLite? –
Собственно, нет. Это действительно хорошо для такого прецедента? –
Да, просто создайте единую таблицу с столбцами «ключ/значение». Вы бы использовали обычный SQL для доступа к таблице. Не уверен, что ключи могут быть чисто бинарными. С появлением WAL (Write-ahead-logging) вы можете даже поддерживать запись параллельно с несколькими считывателями. Однако SQLite поддерживает только один параллельный сценарий. Также обратите внимание, что, хотя вы говорите «процессы», если вы имеете в виду разные компьютеры, я бы проигнорировал SQLite. SQLite хорош для локальных баз данных, но не настолько хорош для сетевых баз данных. –