Mongodb 哪种NoSQL DB最适合OLTP金融系统?

Mongodb 哪种NoSQL DB最适合OLTP金融系统?,mongodb,riak,oltp,database,nosql,Mongodb,Riak,Oltp,Database,Nosql,我们正在设计OLTP财务系统。它应该能够支持每秒10000个事务,并具有报告功能 因此,我们想到使用: 一个NoSQL数据库作为我们的主存储 MySQL数据库(实际上是Percona服务器)从NoSQL数据库生成一些ETL,用于存储报告数据 我们正在考虑将MongoDB和Riak用于NoSQL工作。我们已经读到Riak比MongoDB更平滑。我们想听听你的意见 您将使用哪个NoSQL DB作为 OLTP财务系统? 最近怎么样 您在MongoDB/Riak的体验? 我可以回答有关我使用sca

我们正在设计OLTP财务系统。它应该能够支持每秒10000个事务,并具有报告功能

因此,我们想到使用:

  • 一个NoSQL数据库作为我们的主存储
  • MySQL数据库(实际上是Percona服务器)从NoSQL数据库生成一些ETL,用于存储报告数据
我们正在考虑将MongoDB和Riak用于NoSQL工作。我们已经读到Riak比MongoDB更平滑。我们想听听你的意见

  • 您将使用哪个NoSQL DB作为 OLTP财务系统?
  • 最近怎么样 您在MongoDB/Riak的体验?

我可以回答有关我使用scaling Riak的经验

里亚克的规模平滑到极致。扩展与向集群添加节点一样简单,这本身就是一个非常简单的操作。您可以通过简单地添加节点来实现近似线性的可伸缩性。就扩展而言,我们在Riak方面的经验是惊人的

另一方面,它在许多方面都缺乏。一些例子:

  • 您不能在生产集群上执行类似于
    count(*)
    list key
    的操作。如果您想将Riak中的ETL转换为MySQL,那就需要解决这个问题——或者您如何知道(E)提取什么? (一种可能的解决方法是维护一个具有已知键序列的bucket,该序列映射到包含插入到其他bucket中的键的值)
  • Riak的免费版本没有任何管理控制台可以让您知道发生了什么,而企业版中包含的管理控制台也没有多少改进
  • 您需要的是企业版的,以便通过WAN复制数据(例如,用于灾难恢复/高可用性)。如果你不介意付钱,那没关系,但请记住,Basho的定价非常高

    • 在任何情况下,我都不会使用NOSQl数据库来处理与金融有关的任何事情。您根本不具备所需的数据完整性或内部控制。道琼斯使用SQL Server进行事务处理,如果他们能够正确设计高性能、高事务关系数据库,您也可以。您必须投资于一些知道自己在做什么的人。

      基于全局存储的NoSQL数据库—InterSystems的Cache和FIS的GT.M—在金融服务中被广泛使用,并且已经使用多年。缓存尤其用于核心数据库和OLTP。

      我使用Starcounter(因此我有偏见),但我想我可以放心地说,对于处理金融交易的系统,您必须担心交易的一致性。不幸的是,Facebook和Twitter的引擎不得不放弃这一点,允许它们的扩展策略提供性能。这并不是因为MongoDb或Cassandra等引擎设计拙劣;相反,它自然地遵循CAP定理(http://en.wikipedia.org/wiki/CAP_theorem). 简单地说,您在数据库中所做的更改将覆盖其他及时发生的更改。状态更新和新推特都可以,但如果你处理金钱或其他数量的问题,那将是灾难性的。当许多读写操作并行进行时,这些数量最终将出错。因此,为了获得所需的吞吐量,以内存为中心、支持ACID的NoSQL数据库可能是一条可行之路。

      人们必须以不同的方式思考这个问题。事务一致性的概念源于CRUD(创建、读取、更新、删除)中的UD(更新)。noSQL数据库是面向CRAP(创建、复制、附加、处理)的,通过增加时间戳数据来工作。有了正确的域模型,就没有理由不能实现可审核性和等效的引用完整性

      Cassandra可用于OLTP和OLAP。良好的复制和最终的数据一致性为您提供了选择。需要正确设计系统。毕竟,它是免费的,但不是免费的开发者,试一试吧

      如果您使用DDD中的事件源和概念实现应用程序,您可以使用一些NoSQL数据库(Cassandra、EventStore)作为金融服务的存储。我建议您阅读这本迷你书

      OLTP可以通过使用NoSQL和自定义实现来实现

      有两件事,, 1.您将如何实现RDBMS提供的ACID属性。 2.提供自定义阻塞或非阻塞并发和事务处理机制

      为了让您更接近解决方案,
      Apache Phoenix、Apache trafodion或Splice machine。

      trafodion对HBase提供了全面的ACID支持,您应该看看。

      感谢您与Riak、Elad分享您的经验。我在想,使用mapReduce做“计数”和“列表键”这样的事情是不可能的+1+1任何试图使用“最终一致”的财务数据库的人都没有资格实施财务软件full stop。并非所有NoSQL数据库都最终一致,许多数据库都具有必要的完整性和内部控制。最后,并非所有与财务有关的事情都需要绝对的诚信和控制。@elad,如果你这么认为的话,你显然从未与审计师合作过。我为审计机构工作,甚至考虑NoSQL数据库的财务应用是愚蠢的,这是一个定义“金融”的问题。如果我建立我自己开发的algotrading应用程序,我不关心审计员。这并不意味着它是“非金融性的”……这个答案和“最终一致”的评论都是关于什么的——这就像你相信当你从属于某家法国银行的ATM机上取款时,操作是在美国银行服务器上的一个db交易中进行的。如果您有原子修改、比较和设置,您可以构建任何您喜欢的锁定机制