Гарантирует ли Firestore FieldValue.serverTimestamp() уникальную строгую согласованность?

У меня есть несколько вопросов относительно поведения FieldValue.serverTimestamp() в Firestore:

  1. Индексирование и коллизии: Я хочу ранжировать документы, сортируя их с помощью FieldValue.serverTimestamp(). Если я создам соответствующие индексы, гарантирует ли строгая модель согласованности Firestore, что эти временные метки сервера не будут конфликтовать?

  2. Запросы большого объема без индексов: В сценарии, где нет индексов, даже при строгой согласованности, если одновременно выполняется большой объем запросов FieldValue.serverTimestamp() для разных документов, могут ли временные метки сервера точно совпадать и, таким образом, конфликтовать?

Я прочитал документацию Firestore и поискал в Интернете подробную информацию о гарантиях точности и согласованности FieldValue.serverTimestamp().

Я ожидал выяснить, всегда ли наносекунды заканчиваются на «0000» и предотвращает ли строгая согласованность коллизии временных меток. Однако однозначных ответов я не нашел.

Будем очень признательны за любые идеи или ссылки на официальную документацию. Спасибо!

Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

TL;DR: Вы не должны зависеть от уникальности значений временных меток на стороне сервера.

  1. ... Если я создам соответствующие индексы, гарантирует ли строгая модель согласованности Firestore, что эти временные метки сервера не будут конфликтовать?

Нет.

  1. ... возможно ли, чтобы временные метки сервера точно совпадали и, таким образом, конфликтовали?

Да.

Вполне возможно, что несколько документов будут созданы с одной и той же меткой времени, и это не имеет ничего общего с надежностью модели согласованности, которую использует Firestore.

МММ спасибо!! Означает ли это, что Firestore не подходит для крупномасштабных систем очередей или нумерации? Стоит ли мне рассмотреть Kafka или другие системы?

KKimJ 25.06.2024 04:08

Я не уверен, что вы подразумеваете под этим типом системы, и у меня такое ощущение, что мы начали с проблемы XY здесь. Если вы хотите генерировать уникальные идентификаторы, используйте встроенные операции add() Firestore, если вы хотите, чтобы временные метки создания использовали для этого временные метки на стороне сервера, но не смешивайте эти два варианта использования. --- См. также Что мне делать, если кто-то отвечает на мой вопрос?

Frank van Puffelen 25.06.2024 05:01

Является ли тот факт, что наносекундная часть временной метки сервера всегда заканчивается на «0000», просто совпадением, или Firestore на самом деле обеспечивает разрешение только на уровне микросекунд? Спасибо!

KKimJ 18.07.2024 07:54

Я ответил на два вопроса из трёх в вашем посте. Пожалуйста, в дальнейшем включайте только один вопрос в каждое сообщение. Также смотрите Что мне делать, если кто-то отвечает на мой вопрос?

Frank van Puffelen 18.07.2024 09:51

Другие вопросы по теме