Шаблоны оптимизации затрат для Firebase Cloud Firestore: выбор документов по коллекциям - PullRequest
0 голосов
/ 02 октября 2018

Моя цель - оптимизировать архитектуру моего приложения по стоимости при использовании Firebase Cloud Firestore.Я понимаю, что модель ценообразования Cloud Firestore основана на чтении / записи.Поэтому я рассматриваю следующую схему для оптимизации затрат.Я хочу знать, является ли это «наилучшей практикой» или анти-шаблоном.

Идея состоит в том, что всякий раз, когда я создаю новый документ для добавления в коллекцию, пользователь будет обновлять второй «главный документ».который содержит некоторое подмножество содержимого документа, а также то же самое из многих похожих документов от разных пользователей.

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

В коде это будет выглядеть следующим образом.

Вместо этого:
db.collection("reviews")
  .get()
  .then(querySnapshot => {
    querySnapshot.forEach(doc => {
      // doc.data() is never undefined for query doc snapshots
      console.log(doc.id, " => ", doc.data());
    });
  })
Я делаю это:
const docRef = db.collection("reviews").doc("MasterList");

docRef.get().then(doc => {
  if (doc.exists) {
    console.log("Document data:", doc.data());
  } else {
    // doc.data() will be undefined in this case
    console.log("No such document!");
  }
})

Является ли это оптимальной с точки зрения затрат практикой?Или это анти-паттерн?

1 Ответ

0 голосов
/ 02 октября 2018

Идея иметь «главный документ» хороша, потому что вы сможете выполнить одну операцию записи, даже если вы измените несколько свойств внутри нее , но есть проблема, связанная с ограничением, документы имеют ограничения .Таким образом, существуют некоторые ограничения в отношении объема данных, которые вы можете поместить в документ.Согласно официальной документации, касающейся использования и ограничений :

Максимальный размер документа: 1 МБ (1 048 576 байт)

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

Cloud Firestore оптимизирован для хранения больших коллекций небольших документов.Так что вы должны воспользоваться этой функцией.Даже если вам нужно продублировать и обновить несколько документов в отдельных коллекциях, я рекомендую вам действовать таким образом.

PS Если вы беспокоитесь о затратах, взгляните также на базу данных Firebase в реальном времени и попробуйте использовать их вместе.,Работают довольно хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...