Облачное хранилище: приведет ли получение ссылок на документы к дополнительным «чтениям» базы данных? - PullRequest
1 голос
/ 02 апреля 2019

Я хотел бы получить некоторые разъяснения о ценах чтения Cloud Firestore относительно типов Reference.В моем текущем сценарии у меня есть комната чата, которая отображает список сообщений в разговоре.Сообщение выглядит следующим образом ...

{
  "id": "...",
  "text": "Hello World",
  "createdBy": Reference(/users/userID)
}

При рендеринге сообщения у меня есть доступ к text, но мне также нужен доступ к пользователю createdBy.В настоящее время я передаю ссылку createdBy на другой компонент (в React), а затем извлекаю этот документ для отображения аватара и имени пользователя.

Это работает достаточно хорошо, но я обеспокоен тем, что этоприводит к чтению в базу данных для каждого сообщения в беседе, которое может сложиться очень быстро.Я почти уверен, что это приведет к дополнительным операциям чтения на сообщение, но достаточно ли Firebase достаточно интеллектуален для кэширования пользователей?

Другими словами, если у меня есть 5 сообщений, созданных /users/userA, будет ли каждое сообщение считатьсячтение в базу данных, или это будет просто одно чтение для каждого пользователя в разговоре?

Если Firebase не может кешировать это, может показаться, что мне нужно денормализовать данные и продублировать имя пользователя иАватара в документе сообщения, а не просто полагаться на саму ссылку.Похоже, что это как бы ограничивает пользу References.

1 Ответ

0 голосов
/ 02 апреля 2019

Кэшированные документы будут использоваться повторно и не будут считываться при обращении. Не имеет значения, создаете ли вы DocumentReference самостоятельно или получаете его из поля другого документа. Чтение документа с DocumentReference не вызывает дополнительного чтения. Клиент должен быть откровенным о прочтении.

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