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 中使用维度/事实表设计是个好主意吗的主要内容,如果未能解决你的问题,请参考以下文章