web-dev-qa-db-ja.com

BerkeleyDBの代わりに?

現在使用しているBerkeleyDBの代わりに使用できるdbmのようなライブラリを探しています。私が切り替える主な理由は、BDBのライセンス料がかなり高いことです(オープンソースアプリでは無料ですが、雇用主はさまざまな理由でこの特定のアプリをオープンソースにしたくありません)。

私はqdbmを簡単に調べましたが、それが私のニーズを満たすようには見えません-たくさんのキー(数百万)と大きなデータ項目(> 1-5メガバイト)。検索を続ける前に、dbmのようなライブラリがたくさんあるように思われるので質問したいと思いました。

39
John

C/C++

Java

26
Simon Schmidt

東京内閣 をご覧ください。それはqdbm/gdbmの後継であり、スケーリングすることにした場合は、Niceネットワークフロントエンドを利用できます。

編集:

別の変種は 京都内閣 ;同じ人によって開発されましたが、おそらく使いやすいです。

18

SQLite はパブリックドメインです。つまり、あらゆる目的に使用でき、広く使用され、サポートされています。

11
Greg Hewgill

単純なレベルの間接参照で、dbm(qdbmも含む)のパフォーマンスを大幅に向上させ、並列処理を向上させることができます。キーを取得してハッシュし、data_dir/H(key)/をデータベースとして使用してそれらのキーを格納します。最良の結果を得るには、ハッシュ出力を小さな値(たとえば)255に制限します。

このアプローチには、簡単に要約できる多くの利点があります。

  • 概念的にシンプル
  • 実装とテストが簡単
  • 更新のためにデータベース全体をロックしません
  • はるかに大きなデータベースをサポートできます
  • DBMコンポーネントの交換が簡単

ハッシュはおそらく暗号的に安全である必要はありません。ほぼ均一です。 DJBの cdb hash ほとんどの場合うまく機能します。

7
geocar

Windowsを使用している場合は、組み込みのesentデータベースエンジンを使用できます。 http://blogs.msdn.com/windowssdk/archive/2008/10/23/esent-extensible-storage-engine-api-in-the-windows-sdk.aspx

3
hfcs101

[〜#〜] jdbm [〜#〜] を試すことができます。これは、ディスク永続性を備えた無料の(Apache 2)Key-Valueストアです。シンプルなAPIと高性能

3
Andrejs
2
FoxyBOA

db4oはかなり安価で高速ですが、Javaまたは.netでのみ使用できます

0
pdeva

Firebird はあなたの親友です。

0
F.D.Castel