Запись в Firestore занимает слишком много - PullRequest
1 голос
/ 10 июля 2019

Я создаю систему уведомлений и использую Google Cloud Firestore для хранения уведомлений. Идея заключалась в том, чтобы иметь следующую схему. Коллекция уведомлений с документами, представляющими роль «пользователя» во вложенной коллекции с идентификаторами этих пользователей, а внутри документа идентификатора - коллекция с уведомлениями для этих пользователей, например: Notification-> customer-> 88 имеет коллекцию сообщения для клиента 88, идентификаторы сообщений случайным образом создаются Firestore.

В некоторых случаях я отправляю сообщение 800 пользователям, поэтому я делаю в bach на 500 (BATCH_LIMIT), что это предел записи в firestore в запросе. Для этого я использую этот код.

  def self.save(entities, message)
    entities.each_slice(BATCH_LIMIT) do |entities_chunk|
      firestore.batch do |batch|
        entities_chunk.each do |entity|
          collection_reference = firestore.col(BASE_COLLECTION).doc(entity.account_type).col(entity.account_id).doc
          batch.set(collection_reference, message)
        end
      end
    end
  end

Эта операция занимает до 180 секунд (800 записей приблизительно) в Google Cloud Firestore. Это нормально ? Это не масштабируется. Есть еще один способ сделать это?

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