嵌入式nosql开源java数据库
我正在开发一个开源产品,需要一个嵌入式数据库管理系统。 您能否推荐一个嵌入式开源数据库...
- 每个对象可以处理超过 10 GB
- 拥有适合嵌入的许可证(LGPL,而不是 GPL)。
- 是纯Java
- 是(最好是)nosql。 Sql 可能有效,但更喜欢 nosql
我查看了一些文档 DBMS,例如 mongodb, 但它们似乎仅限于 4 或 16 MB 的文档。
Berkeley DB 看起来很有吸引力,但拥有类似 GPL 的许可证。
Sqlite3很有吸引力:良好的许可证,并且可以编译 与您喜欢的任何最大斑点大小。但是,它不是 Java。 我知道 JDBC 驱动程序存在,但我们需要一个纯 Java 系统。
有什么建议吗?
谢谢
史蒂夫
I'm developing an open source product and need an embedded dbms.
Can you recommend an embedded open source database that ...
- Can handle objects over 10 GB each
- Has a license friendly to embedding (LGPL, not GPL).
- Is pure Java
- Is (preferably) nosql. Sql might work, but prefer nosql
I've looked over some of the document DBMSs, like mongodb,
but they seem to be limited to 4 or 16 mb documents.
Berkeley DB looked attractive but has a GPL like license.
Sqlite3 is attractive: good license, and you can compile
with whatever max blob size you like. But, it's not Java.
I know JDBC drivers exist, but we need a pure Java system.
Any suggestions?
Thanks
Steve
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
虽然这是一个老问题,但我最近一直在研究这个问题,并发现了以下内容(其中至少有两个是在提出这个问题后写的)。我不确定其中任何一个如何处理非常大的对象 - 在 10GB 时,您可能需要进行一些认真的测试,因为我认为很少有数据库开发人员会在他们的产品中考虑到这种大小的对象(只是猜测)。我肯定会考虑将它们直接存储到磁盘,仅引用数据库中的文件位置。
(顺便说一句,下面的意见都很肤浅,因为我还没有认真使用它们)。
OrientDB 看起来是我发现的三个中最成熟的。它似乎是一个文档和/或图形数据库,并声称速度非常快(利用“RB+Tree”数据结构 - B+ 和红黑树的组合)。它声称超级快且轻,没有外部依赖。似乎有一个活跃的社区正在开发它,例如,在过去几天里进行了大量的提交。它还符合 TinkerPop 图形数据库标准,该标准添加了另一层功能(例如 Gremlin 图形查询语言)。它符合 ACID 标准,具有 REST 和其他外部 API,甚至是基于 Web 的管理应用程序(大概可以与您的嵌入式数据库一起部署,但我不确定)。
接下来的两个更多地属于 N(ot)O(nly)SQL 世界的简单键值存储阵营。
JDBM3 是一个极其最小的数据存储:它有一个哈希图、树图、树集和链表,通过内存映射文件写入磁盘。它声称非常轻且快速,具有完全的事务性并且正在积极开发中。
HawtDB 看起来非常简单和快速 - 一个基于 BTree 或哈希的索引与内存映射文件一起保存到磁盘。它(可选)是完全事务性的。过去七个月(截至 2012 年 3 月)没有任何提交,邮件列表上也没有太多活动。这并不是说它不是一个好的库,但值得一提。
JDBM3 和 HawtDB 非常小,因此您不会获得任何精美的 GUI。但我认为它们都因其速度和简单性而看起来非常有吸引力。
这些都是我找到的符合您要求的。另外,Neo4J 很棒——一个图形数据库,现在已经相当成熟,并且在嵌入式模式下运行得很好。不过,它是 GPL/AGPL 许可的,因此可能需要付费许可,除非您也可以开源代码:
http://neotechnology.com/products/price-list/
当然,您也可以使用 H2 SQL 数据库 一张大表,没有索引!
Although it's an old question, I've been looking into this recently and have come across the following (at least two of which were written after this question was asked). I'm not sure how any of these handle very large objects - and at 10GB you would probably have to do some serious testing, as I presume few database developers would have objects of that size in mind for their products (just a guess). I would definitely consider storing them to disk directly, with just a reference to the file location in your database.
(Opinions below are all pretty superficial, by the way, as I haven't used them in earnest yet).
OrientDB looks like the most mature of the three I found. It appears to be a document and/or graph database and claims to be very fast (making use of and "RB+Tree" data structure - a combination of B+ and Red Black trees). It claims to be super fast and light, with no external dependencies. There seems to be an active community developing it, with lots of commits over the last few days, for example. It's also compliant with TinkerPop graph database standard, which adds another layer of features (such as the Gremlin graph querying language). It's ACID compliant, has REST and other external APIs and even a web based management app (which presumably could be deployed with your embedded DB, but I'm not sure).
The next two fall more into the simple key-value store camp of N(ot)O(nly)SQL world.
JDBM3 is an extremely minimal data store: it has a hash map, tree map, tree set and linked list which are written to disk through memory mapped files. It claims to be very light and fast, is fully transactional and is being actively developed.
HawtDB looks similary very simple and fast - a BTree or Hash based index persisted to disk with memory mapped files. It's (optionally) fully transactional. There has been no commit in the past seven months (to end March 2012) and there's not much activity on the mailing list. That's not to say it's not a good library, but worth mentioning.
JDBM3 and HawtDB are pretty minimal, so you're not going to get any fancy GUIs. But I think they both look very attractive for their speed and simplicity.
Those are all I've found matching your requirements. In addition, Neo4J is great - a graph database, which is now a pretty mature and works very well in embedded mode. It's GPL/AGPL licensed, though, so may require a paid license, unless you can open source your code too:
http://neotechnology.com/products/price-list/
Of course, you could also use the H2 SQL database with one big table and no indices!