web-dev-qa-db-ja.com

Pythonのインメモリデータベース

大規模なデータベースでPythonでいくつかのクエリを実行して、データベースからいくつかの統計情報を取得しています。これらの統計情報をメモリ内に配置して、他のプログラムがデータベースにアクセスせずに使用できるようにします。 。

それらを構造化する方法を考えていたところ、複雑なネストされた辞書を設定しようとした後、適切な表現はSQLテーブルであることに気付きました。ただし、データを永続データベースに保存し直したくありません。 SQL構文を使用したデータのクエリをサポートするSQLデータベースのメモリ内実装はありますか?

24
Claudiu

SQLite3が機能する可能性があります。 Pythonインターフェイス サポートします SQLite3 CAPIが提供するインメモリ実装。

仕様から:

特別な名前:memory:を指定して、RAMにデータベースを作成することもできます。

また、何をしているのかにもよりますが、トランザクションは比較的安価です。始めるには、次のようにします。

import sqlite3
conn = sqlite3.connect(':memory:')

その後、通常のデータベースを使用していたように続行できます。

データに応じて-キー/値(文字列、ハッシュ、リスト、セット、ソートされたセットなど)でうまくいくことができる場合 Redis (あなたが望んでいたように)探索する別のオプションかもしれません他のプログラムと共有するため)。

42
Tim Post

その場合、SQLite3が最良のオプションになると思います。

可能であれば、 memcached を見てください。 (キーと値のペアの場合、高速に点灯します!)

更新1:

[〜#〜] hsqldb [〜#〜] SQLLikeテーブルの場合。 (pythonサポートなし)

1
zengr

SQLite のようなデータベースを使用できる可能性があります。厳密に言えばメモリ内ではありませんが、かなり軽量で、メインデータベースから完全に分離されています。

0
Matthew Vines

パーティーに非常に遅れていますが、pyfilesystem2(私は提携していません)は完璧に合っているようです:

https://pyfilesystem2.readthedocs.io

pip install fs
from fs import open_fs
mem_fs = open_fs(u'mem://')
...
0
jtlz2