Я использую Golang с Firestore для чтения / записи / обновления информации при пакетной записи. Мой код следующий:
t0 := time.Now()
iter := client.Collection("subs").Where("some key", "==", lookup).Limit(499).Documents(ctx)
defer iter.Stop()
batch := client.Batch()
i := 0
for {
sub, err := iter.Next()
if err == iterator.Done {
break
}
i++
sfRef := client.Collection("subs").Doc(sub.Ref.ID)
batch.Set(sfRef, map[string]interface{}{
"some key": update_value,
}, firestore.MergeAll)
}
commit, err := batch.Commit(ctx)
Это пакетное обновление требует около 1/2 se c, что не подходит, если нам нужно обновить 500 000 записей. Мне интересно, является ли это 1/2 se c нормальным временем отклика для Firestore и как я могу оптимизировать этот запрос?