Spark / Samza / Storm可以解除过去的提交并重新生成视图吗?

时间:2016-08-02 20:16:22

标签: mysql database apache-spark apache-storm apache-samza

我刚看了Turning the database inside-out并注意到Samza和Redux之间的相似之处:所有状态都由一组不可变对象组成。

这让我意识到,如果您事后编辑了流,理论上您可以根据新的事务列表重新生成所有物化视图,并且实际上"撤消"过去对数据库的更改。

举个例子,假设我有以下一系列差异:

1. Add user "tom"
2. Add user "bob"
3. Delete user "bob"
4. Change user "tom"s name to "joe"
5. Add user "fred"

在这一系列更改之后,我们的数据库看起来像:

+-------+
| users |
+-------+
| joe   |
| fred  |
+-------+

现在如果我想撤消数字" 3"?我们的新差异将是:

1. Add user "tom"
2. Add user "bob"
4. Change user "tom"s name to "joe"
5. Add user "fred"

我们的数据库:

+-------+
| users |
+-------+
| joe   |
| bob   |
| fred  |
+-------+

虽然这在理论上听起来不错,但实际上这可以使用Samza,Storm还是Spark来完成?任何事务流数据库都可以这样做吗?我出于管理目的对此类功能感兴趣。我有一些网站,客户不小心删除了一个员工或修改了他们并不意味着的记录。在过去,我通过创建一个记录了数据库所有更改的单独表来解决这个问题,然后当出现问题时我可以(手动)查看此表,找出他们做错了什么,以及( 手动)修复数据。

如果我只是查看一个事务流,删除坏事,然后说'#34;重新生成数据库"

,那就太好了。

0 个答案:

没有答案