2010-11-22 18 views
18

短い質問: sqliteとして利用できるnosqlフラットファイルデータベースはありますか?nosqlフラットファイルデータベースはsqliteと同じですか?

説明: フラットファイルデータベースを別のプロセスで開くと、読み込みが行われ、1つのプロセスに書き込むことができます。私は厳密な一貫性の必要がない場合は、読み取りキャッシュに最適だと思います。ファイルやメモリブロックに1〜2秒で書き込むと、それ以降は更新されたデータが読み込まれます。

私はほとんど私のpythonサーバーの読み取りキャッシュとして、sqliteを使用することを選択します。しかし、まだ1つの問題があります。私は別の場所で再度sqlsを書き直して、バックエンドデータベースとして使用したPostgreSQLで行ったのと同じように、sqliteで自分のデータテーブルの別のコピーを構築するのは嫌いです。

他の選択肢がありますか?ありがとうございます!

答えて

9

shelve?基本的には、Pythonオブジェクトを格納できるキーバリューストアです。 http://docs.python.org/library/shelve.html

多分ファイルシステムを使用できますか?

+0

私は間違いなく棚に行くでしょう。実際にロード/ダンプをpickleから個別のファイルで使用しているため、すばやくアクセスできますが、shelveは実行可能なオプションです。 – vonPetrushev

+0

....私はちょうどそれを忘れる! Pythonに同梱されたこの素晴らしいソリューションを私に思い出させてくれてありがとう! – davyzhang

+1

同時読み込み/書き込みの場合、 'shelve'はsqliteの実行可能な代替手段ではないことに注意してください。 Pythonのdocsから: "shelveモジュールはshelvedオブジェクトへの同時読み込み/書き込みアクセスをサポートしていません(同時に複数の読み込みアクセスは安全です)。書き込みのためにシェルフが開いているときは、これを解決するためにUnixファイルロックを使用することができますが、これはUnixのバージョンによって異なり、使用されるデータベース実装に関する知識が必要です。一方、sqliteは、サポートされているすべてのOSでACIDに準拠しており、ロックが機能します。 – chadrik

6

BerkeleyDBは、もともとBSDに含まれているデータベースライブラリ由来の永遠に使用されていて、多くのユースケースで優れたパフォーマンス特性を備えています(キャッシングはよく使用されるものです) )が、いくつかの重要な制限があります。

Pythonで使用したい場合は、おそらくdeprecated bsddb libraryがPython 2.xに含まれていない(そして3.xではなく)externally-maintained pybsddb/bsddb3 libraryがほしいでしょう。

これは現在Oracleが所有していますが、オープンソースのライセンスで利用できます。ライセンス条項を慎重に注意してください。現在のバージョンはGPLish(およびGPL互換)ですので、あなたが行う予定のものと互換性があることを確認してください。

詳細情報:

+3

お世話になりました。しかし、私がmysqlにしたことを見た後、私はOracleから離れます。しかし、私は実際にsqliteと比較してbsdbを考慮しました。彼らがそれを売っていないならば、私は間違いなくそれと一緒に行くでしょう。あなたが提供した情報をありがとう。それは貴重です。 – davyzhang

+0

BerkelyDBはシンプルなiPhoneアプリでさえ、ライセンス料が$ 15,000以上です。もしあなたの名前とスタートアップがもっと有望であればもっと多くのことがあります。 – Lothar

+0

@Lothar BDBはフリーソフトウェアです。あなたはライセンス料なしで、より多くのフリーソフトウェアを開発することができます。 – bugmenot123

0

何か些細しかし、実行可能な、あなたは、キー値のデータ構造を使用漬け辞書バックアップストレージを探している場合。必要に応じて、より良いパフォーマンスを得るためにcPickleを使用してください。

+0

SqliteまたはFirebirdを1つのテーブルで使用します。 またはOpenLDAPプロジェクトのデータベースコンポーネント。これは超高速です。 http://symas.com/mdb/ – Lothar

関連する問題