[很多关于SO的讨论,但几乎所有关于SQL的讨论都是如此,所以我的问题很多都是N / A ]
我正在使用react
/ redux
,firebase
后端和&编写CRUD应用。 AWS lambda
在必要时发挥作用。
我的用户会有兴趣了解已更改的内容以及更改记录的时间,但我正在努力寻找有效的方法。
我目前的计划是保留一系列记录更新"包含previousVal
,changeDate
和userMakingChange
等字段的记录。 Redux
有一些很棒的中间件,可以在客户端使这一点相当简单。
img是我想到的数据库架构。 Firebase强调非常扁平的数据结构,我希望修订历史按需加载,与用户/记录分开,因此revision histories
的中间表。
所以,我的问题:
答案 0 :(得分:5)
如果您愿意放弃Firebase,那么Datomic将非常适合您要做的事情。它使用Clojure持久性数据结构中的结构共享技术来创建有效的数据副本,这些数据与原始版本共享尽可能多的结构。
至于能够恢复到过去的版本,我会说Datomic可能是行业标准的解决方案。但是,这些技术并非特定于Datomic,有些工作,您也可以使用Firebase实现它们。
然而,对于它的价值,我认为除非你发现你的Firebase实例超出了规模限制,否则不值得去解决问题。相反,我建议采用绝对最简单的方法。
保持数据平稳,并将每个实体视为值列表。每次要添加新修订时,请将其推送到最后。要还原,请从堆栈中弹出所需数量的值。编写一些处理所有引用的Firebase包装器并不算太多工作。
或者,如果您感觉超级雄心勃勃,可以尝试将datascript与ClojureScript的持久数据结构相结合,然后将它们序列化为JSON,然后将它们存储在Firebase中,然后像使用Datomic那样使用它。