哪个嵌入式数据库是用 Java 编写的,用于简单的键/值存储?[已关闭]

我最近问了一个关于Neo4j的问题,我得到了工作,这似乎很好。它是可嵌入的,它是用Java编写的,并且没有(太多)依赖项。

然而,它是一个图形数据库,我不知道它是否是一个好主意,或者不把它用作一个简单的键/值存储。

基本上我有一个大地图,在Java中看起来像这样:

Map<Integer,Map<String,String>>

我在主地图中有几个数千万个条目,每个条目都包含属性/值的地图。“内部”地图相对较小:大约20个条目。

我需要一种方法来持久保存从 Web 应用程序运行时到另一个映射的映射。

使用Neo4j,我所做的是为每个ID(整数)创建一个节点,然后在内部映射中为每个条目放置一个属性。从我的早期测试来看,它似乎有效,但我不确定这是一种很好的方式。

你会使用哪个用Java编写的嵌入式数据库?

要求是:

  • 用Java编写

  • 可嵌入(所以没有太大)

  • SQL (*)

  • 开源

  • 易于备份(我需要能够在服务器运行时进行“实时”备份)

我的术语也可能有点错误,所以请随时帮助我/纠正我。对于我的“地图地图”,最合适的是键/值对DB对吧?

我有点迷失了,因为键/值对DB,文档DB,大表,图形DB等之间的差异。

我还希望使用像Neo4J这样的图形数据库来满足我的需求是个好主意(我认为性能真的不会成为一个问题,因为我将拥有相对较少的条目)。

当然,我可以简单地自己保留我的地图地图,但我真的不想在这里重新发明任何轮子。我想重用一个久经考验的数据库...

(*)我不想要SQL的原因是我总是有这个“地图地图”,并且内部地图会不断发展,所以我不想要一些太结构化的东西。


答案 1

Google的LevelDB似乎有几个移植到Java中:

然后这里有一个完整的嵌入式Java数据库列表:


答案 2

对于您的用例,我会推荐MapDBhttp://www.mapdb.org)

它符合您的要求:

  • 用Java编写
  • 可嵌入 - 没有依赖关系的单个jar
  • 不是 SQL - 为您提供持久保存到磁盘的映射
  • 开源(Apache 2 许可证)
  • 易于备份(文件很少)

并具有其他不错的功能,如事务,并发性和性能。


推荐