2015-07-31 2 views
0

У меня есть таблица, скажем orders, в которой есть столбец, например, буквенно-цифровой символ длиной 15 символов itemId и куча других столбцов. Тот же самый itemId может быть повторен до 900 раз для очень популярных предметов, что означает, что данные будут повторяться примерно 900 раз. Очевидно, нам нужно отделить это. Однако нам нужен поиск, чтобы список элементов был очень быстрым и эффективным. Я немного прочитал и подумал, что обратное индексирование было бы хорошим способом добиться этого. Тем не менее, я немного запутался в реальной реализации. Я не мог найти ни одного примера в Интернете, кроме http://blog.frankel.ch/tag/spring-data, но он использует solr. Я подумывал создать таблицу items-orders, добавив класс репозитория, который будет иметь метод. Однако, поскольку существует много отношений между элементами и заказами, для этого потребуется таблица соединений. Это заставляет меня думать, что я нахожусь на неправильном пути, поскольку я намеревался составить таблицу как своего рода таблицу соединений, так как она только itemId и orderId в ней.Реверсивная реализация индекса с пружинными данными и postgres

Я уверен, что я делаю что-то неправильно. Любые указатели приветствуются. Извините за основной вопрос, но я не смог найти много информации с образцами в Интернете.

спасибо,

Алиса

ответ

0

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

Главное, чтобы начать с того, чтобы убедиться, что ваш дизайн базы данных прав, посмотрите основные правила нормализации о том, что вы не дублируете информацию. Также при создании таблиц убедитесь, что вы явно сообщаете базе данных о взаимоотношениях между таблицами, используя ограничения FOREIGN KEY и PRIMARY KEY.

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

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

Вы упомянули solr, это универсальная текстовая поисковая система (вроде Google). Для ваших требований вы хотите придерживаться чистой реляционной базы данных. Вам нужна база, которая дает точные результаты на основе точных критериев, точно, какие продукты были включены в заказ и т. Д. Вы не хотите, чтобы какое-либо нечеткое соответствие или искусственный интеллект предполагали, что было заказано.

Вы также можете сохранить каталог продукции в solr, чтобы пользователь мог выбрать продукты, которые указывают на розовый, синий или фиолетовый цвет в описании и поставляется в размере 4 и т. Д., После того как продукт был выбран, используйте itemId в реляционная база данных.

Смежные вопросы