Firebase:在 NoSQL 中使用维度/事实 table 设计是个好主意吗

Firebase: Is it a good idea to use dimension / fact table design in NoSQL

所以我想知道,我不得不反对的一个缺点是SQL:如果我的前端应用程序发生了巨大变化,那么我将很难重塑我的数据库.这是因为 NoSQL 的设计首先考虑了前端。所以如果前端改变,后端也会改变(至少这是一般的想法)

所以我的想法是,将我的所有 ORIGINAL/PURE 文档副本存储在多个根集合中是否明智。然后创建 "views" 集合,这是我的应用程序将调用的集合。我喜欢这个的一点是,如果我需要更改前端,我的数据总是 "SQL" 在根目录下。但我的 "views" 实际上是我的应用程序将使用的内容。

这很像 dimension/reference table 和 table 设计人员使用的事实。

再次提出这个想法的重要原因:如果我的前端发生巨大变化,那么我需要做认真的工作,将这些 "views" 转换为其他 "views"。根据我的想法,您只需删除旧的 "views" 并使用 "sql"/"root" 引用 tables.

创建新的 "views"

我说的有道理吗? :) 我没有使用过 NoSQL(但我现在正在用它构建一些东西,所以我的大脑仍在与 SQL 和 NoSQL 斗争哈哈)。因此,如果这是 "dude don't worry about it case" 那么您也可以将其作为答案哈哈

是的,这确实是一种相当普遍的方法。我最近关于 NoSQL 数据建模的回答我开始明确地指出这一点:

  1. 确保每个 entity/value.
  2. 都有一个定义点
  3. 确保同一值的所有其他出现都来自 #1。

考虑到这两点,展开 out/duplicating 数据是一个相当简单的过程(字面意思:因为它是单向的),并且可以通过擦除派生数据并重新运行 fan-out 轻松重做过程。

了解更多有关 NoSQL 数据建模的一些很好的建议:

以及之前的问题: