Если Python 3 имеет значение, я бы выбрал внешнее решение kv, например dumbdbm это не радость.
Некоторые варианты чистого Python:
semidbm — более быстрая альтернатива dumpdbm, только стандартная библиотека Python, пип и вперед. Тот, который я бы выбрал, если хочу обеспечить переносимость и доступность для пользователей.
PickleDB — использует json для сериализации данных. Только стандартная библиотека, я не проверял, но подозреваю, что она медленнее, чем semidbm, из-за накладных расходов на сериализацию.
Petite DB — мой собственный простой обходной путь с использованием модуля Python zipfile. Базовое тестирование в книгах, но оно не готово к производству.
Существуют также оболочки Python для LMDB, UnQLite и SQLite4 LSM, все из которых поддерживают Windows, хотя привязки SQLite4 не тестировались.
Два последних написаны Чарльзом Лейфером, который хорошо разбирается в kv-магазинах и активно использует Python. разработчик (см. Peewee).
Что касается LMDB, я пробовал его какое-то время. Никаких претензий, но он использует транзакционную модель, где вы не можете использовать его в стиле словаря, как с другими dbm, если вы не создаете подкласс/составляете/отправляете запрос на извлечение и т. д. Кроме того, он явно не использует сжатие (см. также), что меня интересовало.
Так что LMDB просто не совсем соответствовал моим конкретным потребностям. Кажется, что он очень эффективен, привязки работали нормально, и их установка была без проблем (у меня работал pip, мне не нужно было устанавливать LMDB отдельно или какие-либо неудобства в этом отношении).
person
Jay
schedule
15.07.2017