Какую структуру данных использует Google Firebase Firestore для индекса по умолчанию

Мне любопытно, если кто-нибудь знает или может догадаться, какую структуру данных использует Google Firestore для индексации произвольных документов NoSQL по каждому полю. Я ищу что-то подобное, чтобы сделать его максимально эффективным.

Некоторая информация о том, как работает их индекс по умолчанию:

  • все поля индексируются по умолчанию, но работает только для поиска на равенство, а не в диапазоне (<,>)
  • любой поиск диапазона требует дополнительных индексов
  • Источник: https://firebase.google.com/docs/firestore/query-data/indexing

Маловероятно, что это стандартный индекс btree для каждого поля, потому что поиск диапазона будет работать без добавления требования для другого индекса. Кроме того, если вы добавите новое поле (легко с хранением документов), потребуется время для создания индекса и коллекций с миллиардами элементов.

Одна теория: 1 большой индекс на документ. Индекс "field_name:value" для каждого поля в каждом документе. Индекс сопоставляется с идентификаторами документов отсортированного списка, которые содержат эту пару поле / значение. Было бы возможно поиск равенства (мое объединение отсортированных документов для каждого требования равенства), но не поиск диапазона. В основном инвертированный индекс.

Любое предложение для лучших способов реализации шаблона, как это?

1 ответ

Решение

Пояснение: индексы с одним полем поддерживают запросы диапазона / неравенства, составные индексы - это объединение нескольких фильтров полей в одном запросе. См. Эту страницу для получения дополнительной информации о типах индексов: https://firebase.google.com/docs/firestore/query-data/index-overview

Каждый индекс поля хранится в своем собственном ключевом диапазоне с непрерывными областями, назначенными серверу с вычислением и масштабированием хранилища независимо друг от друга. Cloud Firestore обрабатывает индексы, довольно похожие на Cloud Datastore (но не на 100% те же).

Вы можете увидеть общий обзор моей конференции Cloud Next с прошлого года.

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