fad*_*bee 13 couchdb mongodb nosql redis riak
NoSQL数据库中哪些(如果有的话)可以为查询结果集提供更改流?
有人能指出一些例子吗?
首先,我相信没有一个SQL数据库提供此功能 - 我是否正确?
我需要能够指定任意的,简单的查询,其SQL中的等价物可能被写入:
SELECT * FROM accounts WHERE balance < 0 and balance > -1000;
Run Code Online (Sandbox Code Playgroud)
我想要一个初始结果集:
id: 100, name: Fred, balance: -10
id: 103, name: Mary, balance: -200
Run Code Online (Sandbox Code Playgroud)
但是我希望永远跟随一系列变化,直到我阻止他们:
meta: remove, id: 100
meta: add, id: 104, name: Alice, balance: -300
meta: remove, id: 103
meta: modify, id: 104, name: Alice, balance: -400
meta: modify, id: 104, name: Alison, balance: -400
meta: add, id: 101, name: Clive, balance: -200
meta: modify, id: 104, name: Alison, balance: -100
...
Run Code Online (Sandbox Code Playgroud)
注意:我不是在谈论流式传输大型结果集.我正在寻找一种软实时的变化流.
此外,如果可能,还需要扩展.
谢谢,
克里斯.
虽然答案已被接受,但还有另一个答案可以解决问题中的假设.
与获取数据更改列表相关的业务问题是什么?如果您不仅仅获取数据更改列表,而是收到一组事件,告诉您数据更改的原因和方式,该怎么办?
这个概念是"CQRS"作为架构背后的根本原因之一.基本上,您存储了导致数据更改的所有事件,例如FundsDeposited,FundsWithdrawn等,您可以"重放"这些事件,不仅发现数据如何随时间变化,还会发现原因.
沿着这条路走下去,您就可以将事件存储为流,并且您不再局限于少数几个存储引擎.相反,你可以使用任何存储引擎,它可以完成工作.