Как организовать php приложение работающее с двумя базами данных?
Здравствуйте. Я работаю над приложением для поиска товаров. Товары беру с интернет магазинов. Храню их следующим образом:
1. На первом сервере хранятся товары с магазинов как есть. Их свойства (категория, цены, название) такие же как в магазинах, откуда они были взяты.
2. На втором сервере я храню уже системные данные для приложения по поиску, а именно категории, свойства и атрибуты по которым можно искать
Возник вопрос, как грамотно организовать работу приложения для решения следующих задач?
1. Поиска товаров по названию и общая выборка
2. Фильтрация товаров по цене (хранится на первом сервере) и системным атрибутам (хранится на втором сервере)
1. Конечно я могу установить два соединения. Имею ввиду то, как сделать грамотно запрос, чтобы логика поиска больше проходила на mysql чем на php. Конечно же можно сделать один запрос, получить id всех товаров, а потом делать второй запрос через where in, но это тяжелый запрос будет. В этом и проблема
2. Это два разных сервиса. Первый хранит товары, второй как агрегатор ищет по ним
Вопрос из серии "дурная голова ногам покою не даёт".
Сначала делаем абсолютно бессмысленное разбиение по серверам, а потом мечемся в поисках решения проблемы, как с двумя серверами работать как будто это один.
Конечно легче использовать всё в одной базе данных. Если бы я выбрал такой метод, то и вопросов бы никаких не было. Но из-за некоторых ограничений (не технических), эти сервисы не могут быть расположены на одном сервере.
для решения начни с начала, какое именно ограничение? в любом случае запись товаров будет происходить в обе бд, если 1-я должна содержать определенные поля по непонятным моему логическому мышлению причинам, то пусть на второй сервер падает сразу full данных, по которым и будет производится поиск.
вообщем, суть такова, что чтобы уменьшить количество запросов, тем самым ускорив отработку, надо хранить данные в одной базе, ты можешь хранить в ограниченной базе то, что нужно, а во 2-ю дублировать и добавлять так, чтобы удобнее было применять фильтра.