如果一个节点有1亿个孩子,那么如果我:
会对性能产生影响a)查询,但限制为10个结果
b)只观看其中一个孩子
我可以将数据分成多个父母,但在我的情况下,我会有一个对孩子的引用,所以可以直接查找(这降低了复杂性)。如果存在影响,在性能下降之前每个方案的最大数量是多少?
答案 0 :(得分:15)
如果一个节点有那么多孩子,那么以任何方式访问该节点都是一个问题的处方。访问一个孩子永远不是问题。
查询节点的子集子集仍然要求数据库考虑每个子节点。如果您要求1亿个项目中的最后10个,那么您要求数据库考虑您显然不感兴趣的999,999,990个项目。
如果不对数据大小,订购标准等进行更具体的描述,就不可能说出最大值是什么。但说实话,即使这样,你可能得到的最好的是具有巨大差异的价值。这可能会随着时间而改变。
您在Firebase(以及大多数NoSQL解决方案)中的最佳方法是以适合您的应用使用该数据的方式对数据进行建模。例如:如果您需要向用户显示最新的10个项目,请将这些最新的10个项目的(密钥)存储在单独的列表中。
items
-K........0
title: "Firebase Performance: How many children per node?"
body: "If a node has 100 million children, will there be a performance impact if I:..."
-K........1
title: "Firebase 3x method won't working in real device but worked in simulator swift 3.0"
body: "Hi we are working with google firebase 3x version and we faced..."
.
.
.
-K999999998
-K999999999
recent
-K999999990: true
-K999999991: true
-K999999992: true
-K999999993: true
-K999999994: true
-K999999995: true
-K999999996: true
-K999999997: true
-K999999998: true
-K999999999: true
我不确定我是否在那里得到了正确数量的9,但我希望你明白这一点。