#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 просит меня создать для него индекс, я это сделал, и, похоже, все работает правильно без каких-либо заметных замедлений или проблем. Однако у меня есть пара вопросов, на которые я хотел бы получить ответы:
- Эти индексы отображаются в реальном времени? Как обновляется каждый раз при создании нового пользовательского документа?
- Сколько индексов я могу иметь в одной базе данных Firestore? Процесс индексации звучит интенсивно, поэтому я предполагаю, что есть недостатки.
- Это то, как это должно быть сделано в первую очередь? Такое чувство, что я делаю что-то не так…
Это индексы, которые я в настоящее время включил в свою базу данных Firestore дополнительно :.
Это мой первый пост на платформе, поэтому не стесняйтесь запрашивать дополнительную информацию, если это необходимо, также приветствуются любые советы о том, как более эффективно достичь цели.
Ответ №1:
Эти индексы отображаются в реальном времени? Как обновляется каждый раз при создании нового пользовательского документа?
ДА
Сколько индексов я могу иметь в одной базе данных Firestore?
В документации по ограничениям индекса говорится:
Максимальное количество составных индексов для базы данных: 200
Максимальное количество исключений для индекса с одним полем для базы данных: 200
Вы должны прочитать всю документацию, чтобы понять все ограничения.
Это то, как это должно быть сделано в первую очередь?
Это вопрос мнения. Вы можете делать все, что хотите, в пределах документированных ограничений. Если ваши индексы и запросы работают для ваших вариантов использования, тогда все в порядке.