NoSQL 数据架构:深还是广?

问题描述 投票:0回答:1

我正准备使用 Firebase 的 Firestore,在观看了 视频 并使用它后,我有一个理论问题:

我想存储在那里的数据有一个“深层”的方面,比如:非洲象是 Gomphoterium 的后代,Gomphoterium 是古乳齿象的后代,古乳齿象是 Meoritherium 的后代。

您可以通过链接集合 -> 文档 -> 集合 -> 文档等在 Firestore 中存储深层关系,但这看起来很尴尬(事后的想法?黑客?)

或者,我想你可以保持整个动物园平坦(一层收集和文档)并将家谱祖先作为键存储在每个动物的文档中(parent-1,parent-2等),但是有些动物不会有Parent-N(树不平衡),或者某些父母将出现在不同动物的不同 Parent-N 键中。无论哪种方式,客户端都需要进行查询操作,并且使用 Firestore 的意义就消失了。

这么深的结构还是平坦的?我很感激人们对此的想法。

google-cloud-firestore database-design nosql
1个回答
0
投票

一般来说,对于NoSQL数据库,建议尽可能保持数据扁平化。然而,当谈到 Firestore 时,情况并非总是如此。您确实可以使用平面结构和深层结构。 Firestore 的速度与 1 级一样快,并且也处于 level 100,这是最高级别。

对于您的用例,我只会为每种动物的后代创建一个集合和集合。例如,我会将 Gomphoterium 设置为较低级别,将古乳齿象设置为较低级别,将非洲象设置为较高级别。因此,Gomphoterium 位于古乳齿象和非洲象之间。我希望你能明白。这很有帮助,因为您将能够知道动物在层次结构中的位置。

© www.soinside.com 2019 - 2024. All rights reserved.