Следует ли использовать избыточность или простой запрос к большому набору данных с помощью Firebase Cloud Firestore database?



У меня есть коллекция, itemsCollection, который содержит очень большое количество мелких itemDocs. Каждый itemDoc имеет подколлекцию, статистику. Каждый itemDoc также имеет поле "Владелец", которое указывает, какой пользователь владеет itemDoc.



itemsCollection
itemDoc1
statistics
itemDoc2
statistics
itemDoc3
statistics
itemDoc4
statistics
...


У меня также есть коллекция usersCollection, которая содержит основную информацию о пользователе.



usersCollection
user1
user2
user3
...


Поскольку каждый itemDoc принадлежит определенному пользователю, необходимо показать каждому пользователю, какими itemdoc они владеют. Я использую запрос:



db.collection("itemsCollection").where("owner", "==", "user1")


Мне интересно, будет ли это эффективно масштабироваться, т. е. всякий раз, когда itemsCollection становится миллионами записей? Если нет, то является ли лучшим решением дублировать каждый itemDoc и его подколлекцию статистики как подколлекцию в пользовательском документе, или я должен делать что-то еще?
711   1  

1 ответ:

Как объяснил Алекс Дафтер, менеджер по продуктам из Firebase, в один из дней в Firebase Dev Summit 2017, Firestore во многом вдохновлялся обратной связью, которую они имели в базе данных Firebase в реальном времени на протяжении многих лет. Они столкнулись с двумя типами проблем:

  1. Моделирование и запрос данных. Firebase Realtime Database не может запрашивать несколько свойств, потому что это обычно включает дублирование данных или фильтрацию на стороне клиента, что мы все уже знаем, что это своего рода беспорядочный.

  2. База данных реального времени не масштабируется автоматически.

С помощью этого нового продукта, говорят они, теперь вы можете построить приложение и вырастить его до планетарного масштаба, не меняя ни одной строки кода. Cloud Firestore также является NoSQL database, который был построен специально для разработки мобильных и веб-приложений. Он гибок для создания всех видов приложений и масштабируется, чтобы вырасти до любого размера.

, так как новая база данных была построена зная этой проблемы, duplication data is not nedeed anymore. Так вы вам не придется беспокоиться об использовании этой строки кода, даже если ваши данные вырастут до миллионов записей, это will scale automatically. Но одну вещь вы должны помнить, если вы будете использовать несколько условий, не забудьте использовать индексы, просто добавив их в консоль Firebase. Вот два простых примера из официальной документации:

citiesRef.whereEqualTo("state", "CO").whereEqualTo("name", "Denver");
citiesRef.whereEqualTo("state", "CA").whereLessThan("population", 1000000);

Comments

    Ничего не найдено.