什么是最有价值的Java对象数据库?

时间:2010-12-29 13:30:27

标签: java database object

具有以下最佳价值的Java对象数据库是什么:

  • 易于使用:一行代码 存储任何对象。
  • 有效的内存使用:即仅 加载要求的东西, 不是每次都是整个物体(即 “透明激活”)。
  • 何时自动更改对象 操纵(即“透明 持久性“)。
  • 本机查询(不需要SQL, JDOQL等。)

任何人都有以下经验:

  • Neodatis
  • db4o的
  • JODB
  • joafip
  • MyOODB

3 个答案:

答案 0 :(得分:4)

我只能回答db4o。我对您命名的其他数据库没有足够的经验。

  • 易用性:我认为db4o在很多场景中都很容易使用。将db4o jar添加到项目中,打开数据库并start storing and querying objects
  • 高效的内存使用:是的,db4o可以做到这一点。它支持transparent activation。在该模式下,db4o仅加载您实际使用的对象。
  • 操纵时自动更改对象:还是supported
  • 原生查询:是db4o supports。原生查询非常强大。但是在实践中,复杂的本机查询通常无法优化并且运行缓慢。在这种情况下,你必须回到不那么优雅的SODA查询。
  • 根据GPL许可,它是免费的。

db4o的另一个优势是拥有一个可以帮助和分享知识的社区。

您是否有数据库的特定用例场景?我认为你应该选择最适合你应用的数据库。

答案 1 :(得分:1)

我最近使用HyperGraphDB,它满足您的所有要求。我对它印象非常深刻:“HyperGraphDB是一种通用的开源数据存储机制,基于强大的知识管理形式,称为有向超图。虽然持久性内存模型主要用于知识管理,AI和语义Web项目,但它也可以用作各种规模的Java项目的嵌入式面向对象数据库。或图形数据库。或(非SQL)关系数据库。“

答案 2 :(得分:0)

看看Redis:

http://redis.io/clients

它拥有Java客户端,根据个人经验,Java对象可以更好地映射到基于键值的数据库而不是关系数据库,但YMMV取决于您的使用模式和数据类型。

注意:它可能无法满足您上面的所有要求,但您可以自己轻松地添加此类功能。

更新: https://github.com/xetorthio/johm