Подтвердить что ты не робот

Oracle Database Link - эквивалент MySQL?

Oracle позволяет пользователю запрашивать несколько физических баз данных.

Есть ли какой-либо эквивалент MySQL? Обход проблемы?

Я хочу запустить запрос соединения на две таблицы, которые находятся в двух физических базах данных. Возможно ли это в MySQL?

4b9b3361

Ответ 1

Я могу представить четыре возможных обходных пути для вашего сценария:

  • при запросе внешней таблицы используйте имена полностью квалифицированных таблиц. MySQL поддерживает dbname.tablename -syntax для доступа к таблицам за пределами текущей области базы данных. Это требует, чтобы пользователь, подключенный в настоящий момент, имел соответствующие права на чтение из запрошенной таблицы в другом физическом db.
  • Если ваша внешняя база данных запущена на другом сервере MySQL (либо на том же компьютере, либо через сетевое соединение), вы можете использовать репликацию для постоянного обновления копии удаленной таблицы только для чтения. Репликация возможна только в том случае, если вы используете два отдельных экземпляра MySQL.
  • используйте FEDERATED механизм хранения MySQL, чтобы фактически импортировать таблицу в текущую базу данных. Это снимает требование предоставления прав доступа к текущему пользователю во вторую базу данных, поскольку при использовании механизма хранения FEDERATED учетные данные задаются с помощью CREATE TABLE -statement. Это также работает с базами данных, запущенными на разных физических серверах или разных экземплярах MySQL. Я думаю, что это будет самый плохой вариант исполнения и имеет некоторые ограничения - более или менее важные в зависимости от вашего сценария использования и ваших требований.
  • Это расширение метода 1. Вместо того, чтобы указывать имена полностью квалифицированных таблиц каждый раз, когда вы запрашиваете информацию из своей внешней таблицы, вы просто можете создать view в вашей текущей базе данных на основе простого SELECT <<columns>> FROM <<database>>.<<table>>. Это похоже на то, как работает FEDERATED -метод, но ограничивается таблицами в том же экземпляре MySQL.

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

Ответ 2

В настоящий момент нет равных методов MySQL, см. этот пост. Однако, поскольку плакат подсказывает, что вы можете обойти , если, базы данных находятся на одной машине, просто добавив имя базы данных перед именем таблицы.

Также см. этот, ему 6 лет, но он еще не разрешен. Он закрыт и, вероятно, не находится в списке дел.