【问题标题】:Embedded nosql open source java database嵌入式nosql开源java数据库
【发布时间】:2011-07-09 23:47:57
【问题描述】:

我正在开发一个开源产品,需要一个嵌入式 dbms。 你能推荐一个嵌入式开源数据库吗...

  • 每个可以处理超过 10 GB 的对象
  • 拥有对嵌入友好的许可证(LGPL,而非 GPL)。
  • 是纯Java
  • 是(最好是)nosql。 Sql 可能会工作,但更喜欢 nosql

我查看了一些文档 DBMS,例如 mongodb, 但它们似乎仅限于 4 或 16 mb 的文档。

Berkeley DB 看起来很有吸引力,但拥有类似 GPL 的许可证。

Sqlite3 很吸引人:好的许可证,可以编译 使用您喜欢的任何最大 blob 大小。但是,它不是 Java。 我知道 JDBC 驱动程序存在,但我们需要一个纯 Java 系统。

有什么建议吗?

谢谢

史蒂夫

【问题讨论】:

    标签: rdbms embedded-database javadb object-oriented-database


    【解决方案1】:

    虽然这是一个老问题,但我最近一直在研究这个问题,并且遇到了以下问题(其中至少有两个是在提出这个问题之后写的)。我不确定这些中的任何一个如何处理非常大的对象 - 在 10GB 时,您可能需要进行一些认真的测试,因为我认为很少有数据库开发人员会为他们的产品考虑这种大小的对象(只是猜测)。我肯定会考虑将它们直接存储到磁盘,只需参考数据库中的文件位置。

    (顺便说一下,下面的观点都很肤浅,因为我还没有认真使用它们。


    OrientDB 看起来是我找到的三个中最成熟的一个。它似乎是一个文档和/或图形数据库,并声称非常快(利用“RB+Tree”数据结构——B+ 和红黑树的组合)。它声称超级快速和轻便,没有外部依赖。似乎有一个活跃的社区正在开发它,例如,在过去的几天里有很多提交。它还符合TinkerPop 图形数据库标准,增加了另一层功能(例如Gremlin 图形查询语言)。它符合 ACID 标准,具有 REST 和其他外部 API,甚至还有一个基于 Web 的管理应用程序(大概可以与您的嵌入式数据库一起部署,但我不确定)。

    接下来的两个更属于 N(ot)O(nly)SQL 世界的简单键值存储阵营。

    JDBM3 是一个极小的数据存储:它有一个哈希映射、树映射、树集和链表,它们通过内存映射文件写入磁盘。它声称非常轻量和快速,是完全事务性的,并且正在积极开发中。

    HawtDB 看起来非常简单和快速 - 基于 BTree 或 Hash 的索引通过内存映射文件持久保存到磁盘。它(可选)是完全事务性的。过去 7 个月(到 2012 年 3 月结束)没有提交,邮件列表上也没有太多活动。这并不是说它不是一个好的库,但值得一提。

    JDBM3 和 HawtDB 非常小,所以你不会得到任何花哨的 GUI。但我认为它们的速度和简单性都非常吸引人。


    这些都是我找到的符合您要求的所有内容。此外,Neo4J 很棒——一个图形数据库,现在已经相当成熟,并且在嵌入式模式下工作得很好。不过,它是 GPL/AGPL 许可的,因此可能需要付费许可,除非您也可以开源代码: http://neotechnology.com/products/price-list/

    当然,您也可以将H2 SQL database 用于一张大表而没有索引!

    【讨论】:

    • 一直在尝试使用 OrientDB 作为文档数据库。文档已过时,几乎所有示例都使用不推荐使用的类...阅读最新版本的 javadocs 几乎没有帮助...我期待着尝试一下,但是在这个令人沮丧的开始之后我不是当然,这是一个不错的选择。
    猜你喜欢
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    相关资源
    最近更新 更多