Конфигурация базы данных в Drupal

Основным средством определения соединения с базой данных является массив $databases в файле settings.php. Как следует из названия, $databases позволяет определить несколько соединений с базой данных. Он также поддерживает определение нескольких целей(targets). Соединение с базой данных не открыто (объект подключения не создается) до того момента пока в первый раз какой-либо участок кода попытается выполнить запрос к базе данных.

Ключ соединения

Ключ соединения является уникальным идентификатором для данного соединения с базой данных. Ключ соединения должен быть уникальным для данного сайта, and there must always be a connection of "default" that will be the primary Drupal database. На большинстве сайтов определено лишь одно подключение .

Цель(target)

Данный ключ соединения должен иметь одну или несколько целей. Целью является дополнительная альтернативная базы данных, которая может быть использована, если доступна. Если запрашиваемая цель не определена, система будет тихо падать обратно к цели "по умолчанию", которая всегда должны быть определена.

Основное применение целей это master/slave репликации."По умолчанию" цель это master SQL-сервера . Одна или несколько целей «slave» могут быть определены. Запросы, которые помечены для попытки использования slave-сервера при его доступности будут пытаться получить доступ к "slave" цели. Если таковой имеется, то соединение будет открыто (если это еще не сделано), и запрос опять опросит "slave"-сервер. Если нет, то запрос отправится опять на сервер "по умолчанию"(master) . Это предоставляет возможность для прозрачного запасного варианта, так что код может быть записан для использования подчиненного сервера, если он имеется, но будет по-прежнему работать без изменений.

$databases синтаксис

Массив $databases это вложенный массив, по крайней мере, трех уровней. Первый уровень определяет ключи базы данных . Второй определяет цели(target) базы данных. Значение каждой цели это информация о соединении в виде ключа/цель(target). Некоторые примеры должны все прояснить.

		$databases['default']['default'] = array(
		  'driver' => 'mysql',
		  'database' => 'drupaldb',
		  'username' => 'username',
		  'password' => 'secret',
		  'host' => 'localhost',
		);

Выше массив $databases определяет единственный ключ соединения ("default"), с одной единственной целью(target) («default»). Это соединение использует база данных MySQL ( ключ "driver") с локальным названием "drupaldb" с именем пользователя "username" и пароль "secret". Приведенный выше пример является типичным случаем для одного SQL сервера установленного Drupal, и будет достаточно для подавляющего большинства сайтов.

Для конфигурации master/slave можно было бы определить следующее:

		$databases['default']['default'] = array(
		  'driver' => 'mysql',
		  'database' => 'drupaldb1',
		  'username' => 'username',
		  'password' => 'secret',
		  'host' => 'dbserver1',
		);
		$databases['default']['slave'][] = array(
		  'driver' => 'mysql',
		  'database' => 'drupaldb2',
		  'username' => 'username',
		  'password' => 'secret',
		  'host' => 'dbserver2',
		);
		$databases['default']['slave'][] = array(
		  'driver' => 'mysql',
		  'database' => 'drupaldb3',
		  'username' => 'username',
		  'password' => 'secret',
		  'host' => 'dbserver3',
		);

Это определение предоставляет один "default" сервер и два "slave" сервера. Обратите внимание, что ключ "slave" это массив. Если цель определена как массив информации о соединении, один из определенных серверов будет выбран случайным образом для этой цели для каждого запроса страницы. То есть, на одной странице запроса все подчиненные(slave) запросы будут отправлены на dbserver2, а на следующей все они могут быть отправлены на dbserver3.

		$databases['default']['default'] = array(
		  'driver' => 'mysql',
		  'database' => 'drupaldb1',
		  'username' => 'username',
		  'password' => 'secret',
		  'host' => 'dbserver1',
		);
		$databases['extra']['default'] = array(
		  'driver' => 'sqlite',
		  'database' => 'files/extradb.sqlite',
		);

Since PHP's PDO library is now required by the Drupal database layer, you will need a hosting plan that includes it to run Drupal.

Эта конфигурация определяет единственную основную базу данных Drupal и одной дополнительную базы данных с меткой "extra", которая использует SQLite. Отметим, что информация о соединении SQLite структурирована иначе, чем у MySQL. Каждый драйвер может иметь различные конфигурации в зависимости от того, что подходит для него.

Помните, что независимо от того, сколько соединений вы определите, Drupal не будет открывать соединение с этой базой данных пока она фактически используется.(Remember that no matter how many connections you define, Drupal will not open a connection to that database until it is actually used.)

Требование PDO

Так как библиотека PHP PDO используется слоем базы данных Drupal, вам нужен хостинг который включает в себя данную библиотеку, чтобы запустить Drupal.

оригинал , перевод от 14 ноября 2012

Тэги:

Тэг в списке: