Максимальное количество полей для документа Firestore? - PullRequest
1 голос
/ 03 июня 2019

Прямо сейчас у меня есть коллекция products, где я храню свои продукты в виде документов, таких как:

documentID:

title: STRING,
price: NUMBER,
images: ARRAY OF OBJECTS,
userImages: ARRAY OF OBJECTS,
thumbnail: STRING,
category: STRING

ПРИМЕЧАНИЕ: В моем веб-приложении насчитывается около 1000 продуктов.

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

Я бы создал коллекцию allProducts с одним документом с1000 полей.Возможно ли это?

allProducts: collection

Содержит один документ со следующими полями:

Каждое поле будет содержать MAP (объект) ссведения о продукте.

document_1_ID: {  // Same ID as the 'products' collection
  title: STRING,
  price: NUMBER,
  category: STRING,
  thumbnail
},
document_2_ID: {
  title: STRING,
  price: NUMBER,
  category: STRING,
  thumbnail
},
// AND SO ON...

ПРИМЕЧАНИЕ: Я бы все равно сохранил коллекцию products.

ВОПРОС

Можно ли иметь один документ с 1000 полями?Какой лимит?

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

ПРИМЕЧАНИЕ2: Я знаю, что максимумразмер документа 1 МБ.

Ответы [ 2 ]

2 голосов
/ 03 июня 2019

Я бы создал коллекцию allProducts с одним документом на 1000 полей. Возможно ли это?

Вы можете добавлять в документ столько данных, сколько хотите, но только до тех пор, пока вы находитесь в пределах лимита. Таким образом, проблема заключается не в том, что вы дублируете данные, а в том, что документы имеют ограничения. Таким образом, существуют некоторые ограничения в отношении объема данных, которые вы можете поместить в документ. В соответствии с официальной документацией относительно использования и ограничений :

Максимальный размер документа: 1 МБ (1 048 576 байт)

Как вы можете видеть, вы ограничены суммой в 1 МБ данных в одном документе. Когда мы говорим о хранении текста, вы можете хранить довольно много, но по мере увеличения ваших документов будьте осторожны с этим ограничением.

Если вы храните большой объем данных в своих документах, и эти документы должны обновляться многими администраторами, есть еще одно ограничение, о котором вам нужно позаботиться. Таким образом, вы ограничены 1 записью в секунду на каждый документ. Таким образом, если у вас возникла ситуация, когда администраторы пытаются писать / обновлять продукты в одном и том же документе одновременно, вы можете увидеть, что некоторые из этих записей завершаются неудачно. Так что будьте осторожны с этим ограничением.

Можно ли иметь один документ с 1000 полями?

Возможно до 40 000 объектов недвижимости, но в вашем случае без каких-либо преимуществ. Я говорю, что, поскольку каждый раз, когда вы выполняете запрос (получаете документ), будет возвращен только один документ. Таким образом, невозможно реализовать алгоритм поиска в отдельных документах и ​​рассчитывать на получение Product объектов взамен.

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

Загрузка всей коллекции для поиска полей на стороне клиента вообще не практична, а также очень дорога. Вот почему официальная документация рекомендует сторонний поисковый сервис, такой как Algolia .

Для Android, пожалуйста, смотрите мой ответ из следующего поста:

2 голосов
/ 03 июня 2019

В соответствии с документацией не существует установленного ограничения на количество полей в документе.Однако в документе может быть только до 40 000 записей индекса, который будет увеличиваться по мере того, как в документах будет больше полей, которые проиндексированы по умолчанию.

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