最近、Neo4j について質問しました。Neo4j は動作していて、良さそうです。埋め込み可能で、Java で書かれており、依存関係が (あまり) 多くありません。
しかし、これはグラフ DB であり、単純なキー/値ストアとして使用するのが良いアイデアかどうかはわかりません。
基本的に大きなマップがあり、Java では次のようになります。
Map<Integer,Map<String,String>>
メイン マップには数千万のエントリがあり、各エントリにはプロパティ/値のマップが含まれています。「内部」マップは比較的小さく、エントリは約 20 個です。
Web アプリケーションの実行時にそのマップを他のアプリケーションに永続化する方法が必要です。
Neo4j を使用して、ID (整数) ごとに 1 つのノードを作成し、内部マップ内のエントリごとに 1 つのプロパティを配置しました。初期のテストでは機能しているように見えますが、これが適切な方法であるかどうかはわかりません。
Java で記述された埋め込み可能な DB のうち、どれを使用しますか?
要件は次のとおりです。
Javaで書かれた
埋め込み可能(大きすぎない)
ない(*)
オープンソース
バックアップが簡単 (サーバーが稼働している間に「ライブ」バックアップを作成できる必要があります)
私の用語も少し間違っているかもしれませんので、遠慮なく助けていただいたり、訂正していただいたりしてください。私の「マップのマップ」には、キー/値のペア DB が最適ですね。
キー/値ペア DB、ドキュメント DB、大きなテーブル、グラフ DB などの違いが少しわかりません。
また、私のニーズに合わせて Neo4J のようなグラフ DB を使用するのが良いアイデアかどうかも知りたいです (エントリの数が比較的少ないため、パフォーマンスは実際には問題にならないと思います)。
もちろん、私できた単純にマップのマップを自分で永続化しますが、ここで車輪を再発明したくはありません。試行錯誤された DB を再利用したいのです...
(*) SQL を望まない理由は、この「マップのマップ」が常に存在し、内部マップが絶えず進化するため、あまり構造化されたものは望まないからです。
ベストアンサー1
Googleの移植版がいくつかあるようですレベルDBJava に:
組み込み Java データベースの全リストはここにあります: