Firebase:如何有效跟踪用户/记录更改历史记录

Bra*_*don 8 database database-schema firebase

[ 很多关于SO的讨论,但是几乎所有关于SQL的讨论都是如此,所以根据我的判断,我的问题很多都是N/A ]

我正在用react/ redux,firebase后端和AWS lambda必要的函数编写CRUD应用程序.

我的用户将有兴趣了解已更改的内容以及何时记录,但我正在努力寻找一种有效的方法.

我目前的计划是保持"记录更新"记录的集合与像场previousVal,changeDateuserMakingChange. Redux有一些很棒的中间件可以在客户端使这个相当简单.

img是我想到的数据库模式.Firebase强调非常扁平的数据结构,我希望修订历史按需加载,与用户/记录分开,因此中间表revision histories.

所以,我的问题:

  1. 修订历史记录系统如何处理膨胀的存储要求?
  2. 是否有一种不太复杂的方法来做到这一点?我认为必须有一个行业'最佳实践'这样的事情.

我正在考虑的架构草图

Dan*_*nce 5

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

至于能够恢复到以前的版本,我会说Datomic可能是行业标准解决方案.但是,这些技术并非特定于Datomic,而且通过一些工作,您也可以使用Firebase实现它们.

然而,对于它的价值,我认为除非你发现你的Firebase实例超出了规模限制,否则不值得去解决问题.相反,我建议采用绝对最简单的方法.

保持数据平稳,并将每个实体视为值列表.每次要添加新修订时,请将其推送到最后.要还原,请从堆栈中弹出所需数量的值.编写一些处理所有这样的引用的Firebase包装器并不算太多.

或者,如果你感觉超级野心勃勃,你可以尝试将datascript与ClojureScript的持久数据结构相结合,然后将它们序列化为JSON,然后将它们存储在Firebase中,然后像使用Datomic那样使用它.