использовать только один $ dbh для нескольких баз данных? - PullRequest
1 голос
/ 04 августа 2011

Если у вас есть две базы данных на одном хосте, одна с именем blog и одна с именем forum , кажется, что вы можете получить доступ к обеим, используя только один дескриптор базы данных?(в PDO)

$ dbh = новый PDO ("mysql: host = $ dbHost; dbname = blog ", $ dbUser, $ dbPassword);

Этот дескрипторпредназначен для базы данных blog , хотя вы также можете выполнять операции на forum , используя $ dbh, если вы напишите что-то вроде

SELECT website .tableName.fieldName

Мои вопросы:

  1. Это единственная причина, по которой вам нужно указать dbname в $ dbh, чтобы позволить опустить blog .tableName.fieldName part?

  2. Поскольку мой веб-сайт имеет две базы данных, будут ли какие-либо плюсы или минусы использования только одного дескриптора базы данных, а не создания двух дескрипторов (очевидно один для блога и один для форума )?Возможная разница в производительности?

  3. Использует ли создание дескриптора базы данных какие-либо ресурсы сервера?

Ответы [ 2 ]

1 голос
/ 04 августа 2011
  1. Обычно хорошей практикой является сохранение конкретного пользователя базы данных в любом приложении, которое вы создаете.Я бы пошел так далеко, что назвал это необходимостью.Это является причиной сохранения имени базы данных, необходимой для соединения.(Намек на причину этого: что, если кто-то получил ваш пароль dbms для одной таблицы как-нибудь?)
  2. Я не очень хорош в этом, но я не думаю, что будет хорошей идеей хранить две отдельные базы данных, когда можноделать.Как и в вашем случае, вы не используете master-slave или что-то еще.Поэтому, если у вас нет физического ограничения, которое вы пытаетесь компенсировать, превратите его в 1 базу данных (используйте префиксы для имен таблиц, чтобы избежать конфликтов имен)
  3. Причина предыдущего пункта связана с этим.Сохранение одного пользователя для базы данных или нескольких человек даже для двух по странным и в некоторой степени оправданным причинам - это мера безопасности, которой вы должны следовать.Для нескольких пользователей вам нужно сделать несколько подключений, что означает, что при каждой загрузке страницы вы будете подключаться к базе данных дважды!простая математическая нагрузка в 2 раза (да, он ест ресурсы, каждая строка кода) Упрощая его, подумайте о человеке, которому нужно ходить в продуктовый магазин за всем, о чем вы просите, получая только 1 вещь за раз.если вы дадите ему 2 разных продуктовых магазина, мужчине потребуется 2 раза времени и энергии, чтобы выполнить ту же работу.
0 голосов
/ 04 августа 2011
  1. Да, вы можете опустить его.Или переключитесь с работы USE databasename;.
  2. Используйте одну ручку, кажется ненужным делать двойные соединения.
  3. Да, следовательно (2).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...