Производительность Firebase: Сколько детей за node?

Если node имеет 100 миллионов детей, будет ли эффект производительности, если я:

a) Запрос, но ограничивается 10 результатами

b) Наблюдайте только за одним из детей

Я мог бы разделить данные на несколько родителей, но в моем случае у меня будет ссылка на ребенка, поэтому вы можете напрямую просмотреть его (что уменьшает сложность). Если есть влияние, каково максимальное количество для каждого сценария до ухудшения производительности?

Ответ 1

Если node имеет много детей, доступ к node каким-либо образом является рецептом проблем. Доступ к отдельному ребенку никогда не является проблемой.

Запрос node для подмножества его дочерних объектов по-прежнему требует, чтобы база данных рассматривала каждого из этих детей. Если вы запрашиваете последние 10 из 100 миллионов предметов, вы просите базу данных рассмотреть 999999999 пунктов, которые вам, по-видимому, не интересуют.

Невозможно сказать, что такое максимум без более конкретного описания размера данных, критериев упорядочения и т.д. Но, честно говоря, даже тогда лучшее, что вы, вероятно, получите, - это ценность с огромной дисперсией который со временем может измениться.

Лучший подход в 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

Я не уверен, что я получил нужное количество девяток, но надеюсь, что вы поняли эту идею.