У меня есть две таблицы с именем user и user_posts.Эти две таблицы находятся в разных экземплярах amazone rds. Я хочу присоединиться к этим двум таблицам. Можно ли написать соединение mysql с использованием laravel framework? Спасибо заранее!различные экземпляры rds и joinig две таблицы
ответ
Это невозможно с помощью RDS.
MySQL имеет FEDERATED
storage engine, который позволяет одному серверу получать доступ к таблицам на другом сервере, но он отключен в RDS для MySQL.
В настоящее время Federated Storage Engine не поддерживается Amazon RDS для MySQL.
— http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html
Clarificarion:
При использовании двигателя FEDERATED
хранения, чтобы позволить таблицы с данными на одном сервере, чтобы по всей видимости, существует на другом сервере - тем самым позволяя данные, запрашиваемые с сервера, на котором фактически нет постоянной копии данных - только сервер, на котором нет Фактические данные должны фактически поддерживать двигатель FEDERATED
.
Это означает, что в то время как экземпляр RDS не может получить доступ к данным с другого сервера с использованием сервера FEDERATED
, не-RDS-MySQL может получить доступ к данным на экземпляре RDS, используя таблицу FEDERATED
, настроенную на сервере не-RDS, с таблицей, настроенной для извлечения данных из RDS.
Это потому, что - с точки зрения сервера с фактическими данными - соединение с сервером с использованием FEDERATED
выглядит как обычное клиентское соединение. Данные извлекаются с использованием обычных запросов, поэтому поддержка FEDERATED
не должна быть доступна на этой стороне ссылки.
Это означает, что сервер без RDS под управлением MySQL может обращаться к данным на одном или нескольких серверах RDS, используя таблицы FEDERATED
.
Я использую это для создания отчетов, которые объединяют таблицы на двух (и в одном случае, три) разных экземплярах RDS.
FEDERATED
таблицы имеют ограничения - они отображаются на сервере, который извлекает удаленные данные как очень похожие на таблицы MyISAM, в том смысле, что они не поддерживают транзакции и любой запрос, который приведет к полному сканированию таблицы на самом деле будет извлекать всю удаленную таблицу для каждого запроса, которая может обходиться без изъянов ... поэтому их нужно использовать с усердием и осмотрительностью.
Это может оказаться неприемлемым для описанного сценария, поскольку для этого потребуется добавить третий сервер, но это решение не полностью исключается, когда RDS составляет часть инфраструктуры базы данных. Указанная выше информация также верна при использовании RDS/MariaDB и RDS/Aurora для MySQL.
Спасибо большое за ваш ответ – Pillai
@RPillai мое удовольствие.Я продлил ответ, чтобы уточнить, что, хотя 'FEDERATED' не поможет вам с двумя экземплярами RDS, это не * полностью * несовместимо с RDS. –
У меня есть еще одно сомнение. Можно ли подключаться к разным экземплярам rds из одного приложения laravel? – Pillai
Я думаю, что вы хотите получить эквивалент ссылки на базу данных Oracle http://stackoverflow.com/questions/1565993/oracle-database-link-mysql-equivalent –
@DanielScott в системе хранения данных FEDERATED отключен в RDS. –