Сначала уточните тип поиска: точное имя, префикс, подстрока или опечатки. Для небольшого справочника начните с обычной БД; B-Tree и триграммный индекс решают разные варианты поиска.
Спроектируй систему индексирования для таблицы, где хранятся все города России, с учётом того, что поиск будет вестись по названию города.
Сначала уточните тип поиска: точное имя, префикс, подстрока или опечатки. Для небольшого справочника начните с обычной БД; B-Tree и триграммный индекс решают разные варианты поиска.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сначала уточните тип поиска: точное имя, префикс, подстрока или опечатки. Для небольшого справочника начните с обычной БД; B-Tree и триграммный индекс решают разные варианты поиска.
Храните стабильный city_id, исходное название и регион: одинаковые имена не должны сливаться. Для регистронезависимого точного поиска пригоден индекс по согласованной нормализации имени. Для подстрок и нечёткого поиска PostgreSQL предлагает pg_trgm с подходящим GIN/GiST-индексом. Правила для ё/е и альтернативных названий задайте явно. Ограничьте выдачу, определите ранжирование и проверьте план на коротких запросах; отдельный поисковый кластер не обязателен для такого объёма.
Источник: www.postgresql.org.