Я пытаюсь использовать Berkeley DB для хранения таблицы частот (т.е. хэш-таблицы со строковыми ключами и целочисленными значениями). Таблица будет записана, обновлена и прочитана из Python; поэтому я сейчас экспериментирую с bsddb3. Похоже, он будет делать большую часть того, что я хочу, за исключением того, что он поддерживает только строковые значения?
Если я правильно понимаю, Berkeley DB поддерживает любые двоичные ключи и значения. Есть ли способ эффективно передавать необработанные длинные целые числа в/из Berkeley DB с помощью bsddb3? Я знаю, что могу преобразовать значения в/из строк, и, вероятно, это то, что я в конечном итоге сделаю, но есть ли более эффективный способ? т.е. путем хранения «сырых» целых чисел?
Предыстория: В настоящее время я работаю с большой (потенциально десятками, если не сотнями миллионов ключей) таблицей частот. В настоящее время это реализовано с использованием словаря Python, но я прерываю сценарий, когда он начинает переключаться в виртуальную память. Да, я посмотрел на Redis, но он хранит всю базу данных в памяти. Итак, я собираюсь попробовать Berkeley DB. Я должен иметь возможность повысить эффективность создания с помощью краткосрочного кэширования в памяти. т.е. создайте словарь Python в памяти, а затем периодически добавляйте его в основную таблицу частот Berkeley DB.