Ограничения использования последовательных идентификаторов в Cloud Firestore - PullRequest
0 голосов
/ 22 декабря 2018

Я прочитал в сообщении stackoverflow, что (ссылка здесь )

Используя предсказуемые (например, последовательные) идентификаторы для документов, вы увеличиваете вероятность попадания в горячие точки вбэкэнд-инфраструктура.Это уменьшает масштабируемость операций записи.

Хотелось бы, чтобы кто-нибудь мог лучше объяснить ограничения, которые могут возникнуть при использовании последовательного или предоставленного пользователем идентификатора.

1 Ответ

0 голосов
/ 23 декабря 2018

Cloud Firestore масштабируется горизонтально по выделенным ключевым диапазонам для машин.Когда нагрузка на определенный компьютер превышает определенный порог, он разделяет обслуживаемый им диапазон и назначает его двум компьютерам.

Допустим, вы только начинаете запись в Cloud Firestore, что означает, что один серверна данный момент обрабатывает весь ассортимент.

Когда вы пишете новые документы со случайными идентификаторами, когда мы разделяем диапазон на 2, на каждой машине будет примерно одинаковая нагрузка.По мере увеличения нагрузки мы продолжаем разделяться на большее количество машин, причем каждая из них получает примерно одинаковую нагрузку.Это хорошо масштабируется.

Когда вы пишете новые документы с последовательными идентификаторами, если вы превышаете скорость записи, которую может обрабатывать один компьютер, система попытается разделить диапазон на 2. К сожалению, половина не получитзагрузить, а другая половина - полная загрузка!Это плохо масштабируется, так как вы никогда не сможете получить более одной машины для обработки вашей нагрузки записи.

В случае, когда одна машина работает с большей нагрузкой, чем она может оптимально обработать, мы называем это «горячим»пятнистость».Последовательные идентификаторы означают, что мы не можем масштабировать, чтобы справиться с большей нагрузкой.Между прочим, эта же концепция применима и к элементам индекса, поэтому мы предупреждаем значения последовательных индексов, такие как отметки времени now.

Итак, какова слишком большая нагрузка?Обычно мы говорим, что 500 операций записи в секунду - это то, что будет обрабатывать одна машина, хотя это, естественно, будет варьироваться в зависимости от множества факторов, таких как размер документа, который вы пишете, количество транзакций и т. Д.

СИсходя из этого, вы можете видеть, что меньшие, более согласованные рабочие нагрузки не являются проблемой, но если вы хотите что-то масштабируемое на основе трафика, последовательные идентификаторы документов или значения индекса естественно ограничат вас тем, что может поддерживать одна машина в базе данных.с.

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