Firestore 500+ пишет в секунду в одну коллекцию - PullRequest
1 голос
/ 23 апреля 2019

Firestore имеет ограничение 500 операций записи в секунду до

"коллекция, в которой документы содержат последовательные значения в индексированное поле "

https://cloud.google.com/firestore/quotas#writes_and_transactions

В каких случаях я могу увеличить ограничение до 10 000 операций записи в секунду в ОДНОЙ коллекции?

Предполагается, что я использую Рекомендации , чтобы идентификаторы документов распределялись относительно равномерно по всему ключевому диапазону.

A) Что если документы не содержат последовательных значений?

например. единственные поля, которые у меня есть в каждом документе, ниже.

  • Поле A: случайная строка
  • Поле B: случайная строка

B) Что если документ содержит последовательное поле, но я никогда не запрашиваю по этому полю?

  • Поле A: случайная строка
  • Поле B (последовательное): дата

C) Что если документ содержит последовательное поле, , но я отключаю индексирование до даты в поле B?

  • Поле A: случайная строка
  • Поле B (последовательное): дата (автоматическое индексирование отключено)

C) Часть 2. Если я отключаю индексирование для этого поля даты (и это снимает ограничение 500 в секунду), что произойдет, если я случайно добавлю поле C к ОДНОМУ документу в коллекции? Разрушает ли этот один документ с полем C ограничение записи 10 000 в секунду для коллекции? Потому что теперь Firestore нужно беспокоиться об автоматической индексации любого нового поля C?

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

1 Ответ

1 голос
/ 24 апреля 2019

500 операций записи в секунду - это консервативная оценка того, что может обрабатывать один сервер. Так как Cloud Firestore выполняет горизонтальное разбиение строк для хранения документов и индексов; это означает, что документы, написанные с последовательными идентификаторами, или записи индекса, добавляемые последовательно, будут обрабатываться одним сервером. Объединение их (500 записей на сервер + последовательные обновления, обрабатываемые 1 сервером) - вот что дает вам этот предел.

Если у вас есть хорошо распределенные данные, наш горизонтальный разделение строк может разделить рабочую нагрузку на множество серверов. Для Cloud Firestore в основном режиме это будет работать до тех пор, пока вы не достигнете верхнего предела нашей системы реального времени, который составляет около 10K операций записи в секунду. Для Cloud Firestore в режиме Datastore практического ограничения нет, если вы предупредите нас (клиенты могут превысить 1 млн записей в секунду)

Короче говоря, A) и C) будут ограничены верхней границей режима (10 КБ или доступная емкость). B) будет ограничено нагрузкой, которую может обрабатывать один сервер.

Для C2), это не повлияет, если вы просто добавите его в один документ. Ограничение основывается исключительно на входящей нагрузке и назначаемых серверах.

...