什么是Firebase Cloud Firestore中的反规范化?

12 浏览
0 Comments

什么是Firebase Cloud Firestore中的反规范化?

当谈到Firebase云Firestore时,什么是“去规范化”?我在互联网上阅读了一些文章和一些stackoverflow上的答案,大部分答案都推荐这种方法。这种去规范化真的有帮助吗?它是否总是必要的?

数据库扁平化和去规范化是一样的吗?

这是我的第一个问题,希望能找到一个可以帮助我理解这个概念的答案。我知道它们是不同的,但我在MySQL中有两年的经验。

0
0 Comments

在Firebase Cloud Firestore中,反规范化是一种用于优化NoSQL数据库性能的技术。具体而言,反规范化是通过在数据库的其他不同位置添加冗余数据来实现的。这意味着我们将已经存在于一个位置的相同数据复制到另一个位置,以适应可能无法以其他方式实现的查询。因此,反规范化有助于弥补关系型数据库固有的低效性。

反规范化确实有帮助,并且在Firebase中是一种常见的实践,因为数据复制是实现更快速读取的关键。我们只有在确实需要时才会使用反规范化。

数据库的扁平化和反规范化是相同的概念。通过将一个集合移动到一个独立的顶级集合,我们可以使数据库扁平化。通过这种方式,我们可以通过查询具有所需问题id的“tags”集合来获取与特定问题对应的所有标签。

此外,我们还可以同时进行数据库的扁平化和反规范化。这意味着我们在“tags”集合中创建与“users -> uid -> tags -> tagId”相同的标签对象。通过这种方式,我们将现有数据进行分组。

在NoSQL数据库中,我们无法像关系型数据库那样使用“JOIN”子句。因此,我们需要采用不同的方法来实现相同的行为。

要查询具有特定标签的所有问题,您不能直接执行这样的查询。在Firebase中,我们通常根据要执行的查询来设计数据库结构。如果您有特定的用例,请在StackOverflow上发布一个新问题,使用自己的MCVE,这样我和其他Firebase开发者就可以帮助您。

0