我们有一个应用程序可以处理无模式的财务数据。更准确地说,无data数据是关于订单的信息,其中字段由商家定制。一致性和耐用性很重要。
由于我们的数据报告的动态性非常困难。每条记录可能略有不同,或完全不同。如果我们继续使用关系数据库,我们唯一的选择就是将“文档”序列化为blob。报告必须单独完成,可能是将数据复制到用户定义的报告定义的公共结构中(每个“报告”都有一个自定义表)。
另一种选择是面向文档的NoSQL数据库,如MongoDB。经过一些研究后,似乎大多数人都不相信具有财务数据的NoSQL数据库,因为它依赖于BASE而不是ACID。
我似乎发现自己处于两个完全不同的用例中间。我的数据非常适合面向文档的数据库(MongoDB),但我需要ACID数据库的可靠性。同时,复杂的用户定义报告是必要的。
所以我似乎有三个选择:
那三个中的哪一个是我最好的选择(最灵活和耐用)?是否还有其他选项我没有考虑过我无法改变数据的动态性?有人使用MongoDB进行生产报告吗?
(对于我们的RDMS,我们使用MySQL。考虑切换到MariaDB。选择的编程语言是PHP。考虑使用Sphinx进行全文搜索,比如搜索某人的名字。)
答案 0 :(得分:3)
只有几点:
只有从辅助节点读取时,MongoDB才最终保持一致。否则,它是一致的。
如果您需要多对象ACID事务,那么MongoDB将无法工作。如果您需要原子性,一致性和持久性,那么如果启用日记并明智地使用写入关注,则可以获取MongoDB。
答案 1 :(得分:0)
我刚刚看到几个关于Oracle新NoSQL产品的积极评论,它似乎比其他NoSQL产品更注重可靠性。显然它可以作为社区版(开源许可证,不知道哪个)和企业版(惊喜......)
http://www.infoworld.com/d/data-explosion/first-look-oracle-nosql-database-179107
这不是面向文档的解决方案,而是键/值对解决方案
请注意,我没有使用此功能,但我认为您可能需要查看它:
http://www.oracle.com/us/products/database/nosql/overview/index.html