无架构的财务数据和NoSQL?

时间:2011-11-23 19:01:15

标签: mysql mongodb financial mariadb schemaless

我们有一个应用程序可以处理无模式的财务数据。更准确地说,无data数据是关于订单的信息,其中字段由商家定制。一致性和耐用性很重要。

由于我们的数据报告的动态性非常困难。每条记录可能略有不同,或完全不同。如果我们继续使用关系数据库,我们唯一的选择就是将“文档”序列化为blob。报告必须单独完成,可能是将数据复制到用户定义的报告定义的公共结构中(每个“报告”都有一个自定义表)。

另一种选择是面向文档的NoSQL数据库,如MongoDB。经过一些研究后,似乎大多数人都不相信具有财务数据的NoSQL数据库,因为它依赖于BASE而不是ACID

我似乎发现自己处于两个完全不同的用例中间。我的数据非常适合面向文档的数据库(MongoDB),但我需要ACID数据库的可靠性。同时,复杂的用户定义报告是必要的。

所以我似乎有三个选择:

  1. 使用两个MySQL数据库:一个用于存储数据(blob),另一个用于用户定义报告(许多表)。
  2. 使用MongoDB,它支持大型数据库,但具有全局写锁定并且“最终是一致的”。
  3. 使用MySQL存储数据(blob),然后将其复制到MongoDB进行报告。鉴于唯一的索引可能是商家ID,这有多好用呢?
  4. 那三个中的哪一个是我最好的选择(最灵活和耐用)?是否还有其他选项我没有考虑过我无法改变数据的动态性?有人使用MongoDB进行生产报告吗?

    (对于我们的RDMS,我们使用MySQL。考虑切换到MariaDB。选择的编程语言是PHP。考虑使用Sphinx进行全文搜索,比如搜索某人的名字。)

2 个答案:

答案 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