在Firestore中进行写作会花费太多

时间:2019-07-10 17:25:25

标签: ruby firebase google-cloud-firestore

我正在构建一个通知系统,并且正在使用Google Cloud Firestore存储通知消息。这个想法是要有一个如下的模式。具有代表“用户”角色的文档的集合通知,具有该用户ID的嵌套集合,并且在ID的文档内部,具有针对该用户的通知的集合,例如:notification-> customer-> 88具有以下集合:对于客户88的消息,消息ID是由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次写入aprox)在Google Cloud Firestore中。这正常吗?这不会扩展。还有另一种方法吗?

0 个答案:

没有答案