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

Posted

技术标签:

【中文标题】Firebase:在 NoSQL 中使用维度/事实表设计是个好主意吗【英文标题】:Firebase: Is it a good idea to use dimension / fact table design in NoSQL 【发布时间】:2019-07-06 09:03:41 【问题描述】:

所以我想知道,我必须使用 NoSQL 的一个缺点是:如果我的前端应用程序发生巨大变化,那么我将很难重新构建我的数据库。这是因为 NoSQL 在设计时首先考虑到了前端。所以前端变了,后端就变了(至少大意是这样)

所以我的想法是,将我所有的原始/纯文档副本存储在多个根集合中是否明智。然后创建“视图”集合,这些集合是我的应用程序将调用的集合。我喜欢的是,如果我需要更改前端,我的数据始终是根目录下的“SQL”。但我的“视图”实际上是我的应用程序将使用的。

这很像人们使用的维度/参考表和事实表设计。

再次提出这个想法的主要原因是:如果我的前端发生巨大变化,那么我需要认真地将这些“视图”转换为其他“视图”。根据我的想法,您只需删除旧的“视图”并使用“sql”/“root”引用表创建新的“视图”。

我说得有道理吗? :) 我没有使用过 NoSQL(但我现在正在用它构建一些东西,所以我的大脑仍在与 SQL 到 NoSQL 作斗争哈哈)。所以如果这是一个“老兄不要担心的情​​况”,那么你也可以给出这个答案哈哈

【问题讨论】:

【参考方案1】:

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

    确保每个实体/值都有一个定义点。 确保所有其他出现的相同值均源自 #1。

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

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

NoSQL data modeling Getting to know Cloud Firestore

还有这些之前的问题:

Maxing out document storage in Firestore How to write denormalized data in Firebase Understanding NoSQL CRUD calls

【讨论】:

弗兰克,你太棒了 :) 谢谢! 抱歉,我看的时候太忙了,所以我没有想到这个或什么原因

以上是关于Firebase:在 NoSQL 中使用维度/事实表设计是个好主意吗的主要内容,如果未能解决你的问题,请参考以下文章

星型模式中作为事实表的客户维度

事实和维度:动态维度 [关闭]

在星型模式中,事实和维度之间的外键约束是不是必要?

七大维度谈NoSQL数据库安全风险

如何在维度表中查找未使用的行

事实表与维度表