Я делаю некоторые запросы в Python на большой базе данных для вытаскивания некоторой статистики из базы данных. Я хочу, чтобы эта статистика была в оперативной памяти, таким образом, другие программы могут использовать их, не идя в базу данных.
Я думал, как структурировать их, и после попытки настроить некоторые сложные вложенные словари, я понял, что хорошее представление будет таблицей SQL. Я не хочу хранить данные назад в персистентную базу данных, все же. Есть ли какие-либо реализации в оперативной памяти базы данных SQL, которая поддерживает запросы данных с синтаксисом SQL?
SQLite3 может работать. Интерфейс Python действительно поддерживает реализацию in-memory, которую предлагает SQLite3 C API.
Из спецификации:
Вы также можете использовать специальное имя :memory: для создания базы данных в оперативной памяти.
Она также относительно дешева при работе с транзакциями, в зависимости от того, что вы делаете. Чтобы начать работу, просто:
import sqlite3
conn = sqlite3.connect(':memory:')
Затем вы можете действовать так, как будто используете обычную базу данных.
В зависимости от ваших данных - если вы можете обойтись ключом/значением (строки, хэши, списки, наборы, сортированные наборы и т.д.) - Redis может быть другим вариантом для изучения (поскольку вы упомянули, что хотите поделиться с другими программами).
Возможно, вы можете использовать базу данных типа SQLite. Она, строго говоря, не находится в памяти, но она довольно легкая и будет полностью отделена от вашей основной базы данных.
Думаю, тогда лучшим вариантом будет SQLite3.
Если возможно, взгляните на memcached . (для пары ключ-значение, молниеносно!)
ОБНОВЛЕНИЕ 1:
HSQLDB для таблиц типа SQL. (без поддержки Python)