无模式财务数据和NoSQL



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

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

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

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

所以我似乎有三个选择:

  1. 使用两个MySQL数据库:一个用于存储数据(blob),另一个用于用户定义报告(许多表)。
  2. 使用MongoDB,它支持大型数据库,但有全局写锁,并且"最终一致"。
  3. 使用MySQL存储数据(blob),然后将其复制到MongoDB进行报告。考虑到唯一的索引可能是merchantID,这种方法的效果如何?

那么这三个中哪一个是我最好的选择(最灵活和耐用)?是否还有其他选项我没有考虑过,因为我无法改变数据的动态程度?有人在生产中使用MongoDB报告吗?

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

有几点需要说明:

MongoDB最终是一致的,只有当你从次要节点读取。否则,是一致的。

如果你需要多对象ACID事务,那么MongoDB将无法工作。如果您需要原子性、一致性和持久性,如果您启用日志记录并明智地使用写关注点,您可以获得MongoDB。

我刚刚看到了一些对Oracle新的NoSQL产品的积极评价,它似乎比其他NoSQL产品更关注可靠性。显然它有社区版(开源许可证,不知道是哪个)和企业版(惊喜…)

http://www.infoworld.com/d/data - explosion/first -看- oracle - nosql数据库- 179107

这不是一个面向文档的解决方案,而是一个键/值对解决方案

请注意,我没有使用过这个,但我认为你可能想看看它:

http://www.oracle.com/us/products/database/nosql/overview/index.html

最新更新