0

我刚刚看了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 来完成吗?任何事务流数据库都可以做到这一点吗?我对用于管理目的的此类功能感兴趣。我有一些网站,客户不小心删除了员工或修改了他们无意修改的记录。过去,我通过创建一个单独的表来解决这个问题,该表记录了对数据库的所有更改,然后当出现问题时,我可以(手动)查看该表,找出他们做错了什么,并(手动)修复数据。

如果我可以只看一个事务流,删除坏的,然后说“重新生成数据库”,那就更酷了

4

0 回答 0