Мне нужно написать приложение на C++, которое читает и записывает большие объемы данных (больше, чем доступная оперативная память), но всегда в последовательном порядке.Ищите удобное встроенное хранилище ключей для C++
Чтобы сохранить данные в будущем и легко документировать, я использую протокол протоколов. Однако протокол протокола не обрабатывает большие объемы данных.
Мое предыдущее решение состояло в создании одного файла на единицу данных (и хранения их всех в одном каталоге), но это, по-видимому, не особенно масштабируемо.
На этот раз я хотел бы попробовать использовать встроенную базу данных. Чтобы иметь аналогичную функциональность, мне нужно только сохранить ассоциации key-> values (поэтому sqlite кажется излишним). Значения будут бинарной сериализацией, выводимой из буфера протокола.
Я ожидаю, что база данных будет управлять «тем, что нужно хранить в памяти, что перемещать на диск asp», «как эффективно хранить большой объем данных на диске», и в идеале, для оптимизации моего последовательного чтения шаблонов (прочитав перед собой следующие записи).
Поиск альтернатив Я был удивлен отсутствием альтернатив. Я не хочу держать базу данных в отдельном процессе, потому что мне не нужно это разделение (это исключает redis).
Единственный вариант, который я нашел, это Berkeley DB, но он имеет неприятный низкий уровень C api. Тогда лучший вариант, который я нашел, был stldb4 поверх Berkeley DB. API кажется довольно приятным и соответствует моим потребностям.
Однако я беспокоюсь. stldb4 кажется странным (он имеет зависимости от материала libferris), неподдерживаемое решение (последний релиз год назад), для проблемы я бы, хотя и довольно распространен.
У кого-нибудь из вас есть лучшее предложение о том, как справиться с этой проблемой?
Спасибо за ваши ответы.