Firebase性能:每个节点有多少个子节点?

Firebase性能:每个节点有多少个子节点?,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,如果一个节点有1亿个子节点,如果我: a) 查询,但限制为10个结果 b) 只看一个孩子 我可以将数据拆分为多个父项,但在我的情况下,我将有一个对该子项的引用,以便可以直接查找它(这降低了复杂性)。如果有影响,在性能降级之前,每个场景的最大数量是多少?如果节点有那么多子节点,以任何方式访问节点都会导致问题。访问单个孩子从来都不是问题 查询其子集的子集仍然需要数据库考虑这些子代中的每个。如果你要求1亿项中的最后10项,你就要求数据库考虑你显然不感兴趣的99999999项0项。 如果没有对数据大小、

如果一个节点有1亿个子节点,如果我:

a) 查询,但限制为10个结果

b) 只看一个孩子


我可以将数据拆分为多个父项,但在我的情况下,我将有一个对该子项的引用,以便可以直接查找它(这降低了复杂性)。如果有影响,在性能降级之前,每个场景的最大数量是多少?

如果节点有那么多子节点,以任何方式访问节点都会导致问题。访问单个孩子从来都不是问题

查询其子集的子集仍然需要数据库考虑这些子代中的每个。如果你要求1亿项中的最后10项,你就要求数据库考虑你显然不感兴趣的99999999项0项。 如果没有对数据大小、排序标准等更具体的描述,就不可能说出最大值是多少。但老实说,即使这样,您可能得到的最佳值也是一个具有巨大差异的值,该值可能会随时间而变化

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

我不确定我的答案是否正确,但我希望你能理解。

你应该读一下这篇文章,我也有一个类似的问题(在回收视图中显示了一个大列表),请看这里:你可以在这里找到我的解决方案:“只看一个孩子”就像
ref.child(childId)一样简单。('value',…)
谢谢!如果您通过一个特定的索引字段进行查询,我希望能够实现O(log(N))。你就是这样表演的吗?(对于一个100 mil的数据集,这需要26次尝试)在上面的示例中,不断增长的
项目列表
是否是一个问题,即使我没有直接读取
项目
节点?您是否实施了某种归档机制?比如2017年6月27日的项目、2017年8月的项目,。。。。等或者,当项目未被有效使用时,可能会将项目一起移动到新节点。事实上:将活动数据与历史数据分开。如果您主要保留历史数据进行报告,请考虑将其存储在更适合于大型数据集(例如BigQuy)的自组织查询的系统中。