TGViewer
Женя Янченко Женя Янченко @jane_yanchenko · 5.51K subscribers
Post #79 1.77K
Вторичные индексы при шардировании

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

Ситуация осложняется в случае применения вторичных индексов, которые нужны для сценариев: «найти все действия пользователя 123», «найти все сообщения, содержащие слово поездка», «найти всех собак определенной породы» и т. д.

Есть два подхода:

✅ Document-based partitioning

Создать отдельный внешний индекс для каждого шарда — локальный индекс. Он хранится в одном шарде с первичным ключом и значением. При операции записи нужно обновлять только один шард, но при чтении придется выполнить
запросы ко всем шардам и объединить полученные результаты.

Этот подход используют MongoDB, Riak, Cassandra, Elasticsearch, SolrCloud, VoltDB.

✅ Term-based partitioning

Вместо отдельного для каждого шарда вторичного индекса создается глобальный индекс, охватывающий данные из всех шардов. При этом такой индекс хранится не в одном месте, а тоже делится на шарды. Но делиться он может не так, как индекс по первичному ключу.
➕ Преимущество глобальных (term-based) индексов состоит в повышении производительности чтения: вместо фрагментированного чтения по всем шардам достаточно выполнить запрос одному шарду, содержащему индекс по нужному полю.
➖ Недостаток заключается в замедлении и усложнении операций записи, поскольку запись в отдельный документ может затронуть разные шарды, если глобальные индексы по разным полям оказались в разных шардах и даже узлах.

Пример на картинке к посту.

Глобальные индексы используются в DynamoDB Amazon.

#шардирование #кабанчик #сисдиз
  • ❤ 6
  • 👍 2
  • 🔥 2
More from @jane_yanchenko
  1. Sep 25, 2026В прошлой жизни, когда я была менеджером проектов, одним из первых мест работы у меня был…
  2. Sep 23, 2026Куда пропало обращение - развязка В прошлом посте у нас загадочно пропало обращение 58122.…
  3. Sep 23, 2026Куда пропало обращение Однажды от руководителя техподдержки пришло письмо, суть которого с…
  4. Sep 21, 2026🔗 Подборка постов про Кафку Как обещала на стриме, собрала посты про Кафку в удобное огла…
  5. Sep 21, 2026🎞 Готова запись стрима про Кафку: https://youtu.be/2aRKsD-MWDA Большое спасибо всем, кто…
  6. Sep 16, 2026Сегодня стрим по Кафке в 19:00 Планируем не в формате доклада, а в формате вопрос-ответ, ч…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →