Правильно ли я использую индексы Firestore?

#firebase #flutter #dart #indexing #google-cloud-firestore

#firebase #флаттер #dart #индексирование #google-облако-firestore

Вопрос:

Недавно я использовал Flutter и Firebase для создания некоторых сетевых приложений, похожих на LinkedIn. Одной из особенностей приложения является его способность сопоставлять ваш профиль с другими пользователями, зарегистрированными в базе данных, на основе таких факторов, как местоположение и тип выполняемой вами работы. Для этого я использовал моментальные снимки Firestore с некоторыми применяемыми условиями. Два из этих условий требуют, чтобы Firebase сортировал пользователей по «Последним активным» и читал документы только тех пользователей, которые вошли в систему в течение последнего месяца. Чтобы уменьшить количество результатов и уменьшить количество одновременных операций чтения документов. Это один из примеров снимка firebase, который я использую:

 Firestore.instance
      .collection('usersIsb')
      .where('Set', isEqualTo: true)
      .where('Account Type', isEqualTo: _tempType)
      .where('Services List', arrayContainsAny: _tempServices)
      .where('Location', isEqualTo: widget.userData.location)
      .where('Last Active', isGreaterThanOrEqualTo: widget.dateLimit)
      .orderBy('Last Active', descending: true)
      .limit(10)
      .snapshots()
  

Естественно, из-за сложности запроса Firebase просит меня создать для него индекс, я это сделал, и, похоже, все работает правильно без каких-либо заметных замедлений или проблем. Однако у меня есть пара вопросов, на которые я хотел бы получить ответы:

  1. Эти индексы отображаются в реальном времени? Как обновляется каждый раз при создании нового пользовательского документа?
  2. Сколько индексов я могу иметь в одной базе данных Firestore? Процесс индексации звучит интенсивно, поэтому я предполагаю, что есть недостатки.
  3. Это то, как это должно быть сделано в первую очередь? Такое чувство, что я делаю что-то не так…

Это индексы, которые я в настоящее время включил в свою базу данных Firestore дополнительно :.

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

Ответ №1:

Эти индексы отображаются в реальном времени? Как обновляется каждый раз при создании нового пользовательского документа?

ДА

Сколько индексов я могу иметь в одной базе данных Firestore?

В документации по ограничениям индекса говорится:

Максимальное количество составных индексов для базы данных: 200

Максимальное количество исключений для индекса с одним полем для базы данных: 200

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

Это то, как это должно быть сделано в первую очередь?

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