我刚看了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;重新生成数据库"
,那就太好了。