@Konst57

Как организовать php приложение работающее с двумя базами данных?

Здравствуйте. Я работаю над приложением для поиска товаров. Товары беру с интернет магазинов. Храню их следующим образом:
1. На первом сервере хранятся товары с магазинов как есть. Их свойства (категория, цены, название) такие же как в магазинах, откуда они были взяты.
2. На втором сервере я храню уже системные данные для приложения по поиску, а именно категории, свойства и атрибуты по которым можно искать
Возник вопрос, как грамотно организовать работу приложения для решения следующих задач?
1. Поиска товаров по названию и общая выборка
2. Фильтрация товаров по цене (хранится на первом сервере) и системным атрибутам (хранится на втором сервере)
  • Вопрос задан
  • 185 просмотров
Пригласить эксперта
Ответы на вопрос 6
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
1. В чём проблема? Вы разве не можете установить два соединения?
2. Можно узнать почему была выбрана именно такая схема хранения, а не в одной БД?
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Вопрос из серии "дурная голова ногам покою не даёт".
Сначала делаем абсолютно бессмысленное разбиение по серверам, а потом мечемся в поисках решения проблемы, как с двумя серверами работать как будто это один.

Предлагаю включить логику.
Ответ написан
@RuComMarket
Битрикс FullStack разработчик
грамотнее будет сложить в одну бд по разным таблицам
Ответ написан
Комментировать
profesor08
@profesor08 Куратор тега PHP
Если твои mysql сервера позволяют, то можно прям в самом sql обращаться к удаленным серверам.
https://dev.mysql.com/doc/refman/8.0/en/federated-...
https://dev.mysql.com/doc/refman/8.0/en/federated-...

Так что дерзай. Если по какой-то причине ничего не получается, то на пхп делай выборку из одной бд, и на основе нее делай выборку из другой.
Ответ написан
Комментировать
@tester12
Но из-за некоторых ограничений (не технических), эти сервисы не могут быть расположены на одном сервере.

При таком ограничении это единственный рабочий вариант:

можно сделать один запрос, получить id всех товаров, а потом делать второй запрос через where in, но это тяжелый запрос будет.


Т.е. либо снимайте ограничение, либо миритесь с более сложными (и долгими) запросами к двум серверам.
Ответ написан
Комментировать
zabudkin
@zabudkin
Инженер-системотехник, программист, админ, ТПУ!!!!
Писец, FEDERATED ENGINE.
Боже мой. Зачем??????????????
Но чтобы это задействовать, на удаленном сервере должно быть у базы ENGINE=FEDERATED

Читайте мануал.
Но Вы зря так.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы