Firebase:如何高效跟踪 user/record 变更历史

Firebase: how to efficiently track user/record change history

[在 SO 上有很多关于这个的讨论,但几乎所有的交易都在 SQL,所以据我所知,其中很多是 N/A 我的问题]

我正在编写一个带有 react/reduxfirebase 后端和 AWS lambda 必要功能的 CRUD 应用程序。

我的用户将有兴趣查看已更改的内容以及在他们的记录中更改的时间,但我正在努力寻找一种有效的方法来执行此操作。

我目前的计划是维护 "record updates" 条记录的集合,其中包含 previousValchangeDateuserMakingChange 等字段。 Redux 有一些很棒的中间件可以使客户端的操作变得相当简单。

img 是我想到的数据库模式。 Firebase 强调非常扁平的数据结构,我希望修订历史按需加载,与它们的 user/record 分开,因此 revision histories.

的中间表

所以,我的问题:

  1. 修订历史系统如何处理膨胀存储要求?
  2. 有没有更简单的方法来做到这一点?我认为必须有一个行业 'best-practice' 来处理这样的事情。

如果您乐于放弃 Firebase,那么 Datomic 将非常适合您尝试做的事情。它使用 Clojure 的持久数据结构中的结构共享技术来创建高效的数据副本,这些副本与原始版本共享尽可能多的结构。

就能够恢复到过去的版本而言,我想说 Datomic 可能是行业标准解决方案。但是,这些技术并不特定于 Datomic,通过一些工作,您也可以使用 Firebase 实现它们。

但是,就其价值而言,我认为在您发现您的 Firebase 实例超出大小限制之前,不值得麻烦。相反,我建议采用绝对最简单的方法。

保持数据平坦并将每个实体视为值列表。每次你想添加一个新修订时,把它推到最后。要恢复,请从堆栈中弹出所需数量的值。编写一些像这样处理所有引用的 Firebase 包装器不会有太多工作。

或者,如果您感觉超级雄心勃勃,您可以尝试将 datascript 与 ClojureScript 的持久数据结构结合起来,然后将它们序列化为 JSON,然后将它们存储在 Firebase 中,然后将其用作虽然它就像 Datomic。