NoSQL数据库中哪些(如果有的话)可以为查询结果集提供*更改*流?

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)

注意:我不是在谈论流式传输大型结果集.我正在寻找一种软实时的变化流.

此外,如果可能,还需要扩展.

谢谢,

克里斯.

Max*_*den 12

CouchDB有一个更改Feed.基本上它是一个块链,或者自成立以来数据库中每个变化的历史记录.您可以通过JSON,JSONP,长轮询或连续流获取Feed,并编写响应数据库更改的应用程序.

以下是我博客的更改Feed

要了解更多信息,请查看CouchDB指南的这一部分


Jon*_*ver 5

虽然答案已被接受,但还有另一个答案可以解决问题中的假设.

与获取数据更改列表相关的业务问题是什么?如果您不仅仅获取数据更改列表,而是收到一组事件,告诉您数据更改的原因和方式,该怎么办?

这个概念是"CQRS"作为架构背后的根本原因之一.基本上,您存储了导致数据更改的所有事件,例如FundsDeposited,FundsWithdrawn等,您可以"重放"这些事件,不仅发现数据如何随时间变化,还会发现原因.

沿着这条路走下去,您就可以将事件存储为流,并且您不再局限于少数几个存储引擎.相反,你可以使用任何存储引擎,它可以完成工作.