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

Firebase:在NoSQL中使用维度/事实表设计是一个好主意吗,firebase,google-cloud-firestore,nosql,fact-table,Firebase,Google Cloud Firestore,Nosql,Fact Table,所以我想知道,NoSQL的一个缺点是:如果我的前端应用程序发生了巨大的变化,那么我将很难重塑我的数据库。这是因为NoSQL的设计首先考虑前端。因此,如果前端发生变化,后端也会发生变化(至少这是一般的想法) 因此,我的想法是,将我的所有原始/纯文档副本存储在多个根集合中是否明智。然后创建“视图”集合,这些集合是我的应用程序将调用的集合。我喜欢的是,如果需要更改前端,我的数据在根目录下总是“SQL”。但我的“视图”实际上是我的应用程序将使用的 这与人们使用的维度/参考表和事实表设计非常相似 这个想法

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

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

这与人们使用的维度/参考表和事实表设计非常相似

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


我说得通吗?:)我还没有用过NoSQL(但我现在正在用它构建一些东西,所以我的大脑仍然在与SQL到NoSQL进行斗争哈哈)。因此,如果这是一个“哥们,别担心它的情况”,那么你也可以给出一个答案哈哈

是的,这确实是一个相当常见的方法。我最近回答了关于NoSQL数据建模的问题,我开始明确指出:

  • 确保每个实体/值都有一个定义点
  • 确保该值的所有其他匹配项均源自#1
  • 考虑到这两个因素,扇出/复制数据是一个相当简单的过程(字面意思是:因为它是单向的),并且可以通过擦除派生数据并重新运行扇出过程来轻松地重做

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

    以及前面的这些问题:


    弗兰克,你太棒了:)谢谢!对不起,我看的时候太忙了,所以我没有想到这一点或其他原因