无架构的财务数据和NoSQL?

Luk*_*uke 5 mysql financial mongodb schemaless mariadb

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

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

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

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

所以我似乎有三个选择:

  1. 使用两个MySQL数据库:一个用于存储数据(blob),另一个用于用户定义报告(许多表).
  2. 使用MongoDB,它支持大型数据库,但具有全局写锁定并且"最终是一致的".
  3. 使用MySQL存储数据(blob),然后将其复制到MongoDB进行报告.鉴于唯一的索引可能是商家ID,这有多好用?

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

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

Kyl*_*ker 3

仅几点:

仅当您从辅助节点读取数据时,MongoDB 才会最终保持一致。否则,它是一致的。

如果您需要多对象 ACID 事务,那么 MongoDB 将无法工作。如果您需要原子性、一致性和持久性,那么只要您启用日志功能并明智地使用 write-concern,您就可以获得 MongoDB。