Работа с БД в Drupal 7 - урок 2 - Кофигурация БД

db drupal

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

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

Ключ соединения это уникальный идентификатор даваемый соединению с БД. Ключ соединения должен быть уникальный для сайта и должен быть задан по умолчанию для первичной БД. На большинстве сайтов это будет одно соединение.

Цель соединения

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

В первую очередь цели используются для мастер/slave replication. По умолчанию цель это главный SQL сервер. Одна или больше "slave" целей могут быть также определены. Запросы которые помечены будут пытаться использовать дополнительный SQL сервер, если это возможно. Если это получится, то будет работать slave сервер, если нет, то будет использован сервер по умолчанию, то есть основной.

$databases синтаксис

Массив $databases это вложенный массив из 3 уровней. Первый уровень определяет ключ соединения. Второй определяет цель соединения. Значение для каждой цели это информация соединения для пары ключ/цель. А теперь пример для пояснения.

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

Массив $databases определяет одиночное соединение с ключом ("default") и целью ("default"). Это соединение использует MySQL БД ("driver" - mysql) на сервере localhost, для базы данных drupaldb, с пользователем username и паролем secret. Обычно это конфигурация большинства сайтов.

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

<?php
$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" сервер и 2 "slave" сервера. Заметьте что slave ключ это массив. Если любая цель определена как массив информации о соединение, то один определенный сервер будет выбран случайным образом для каждого запроса страницы. Это значит, на одной странице все запросы могут быть отосланы как к dbserver2, так и к dbserver3.

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

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

Друпал 7 требует PDO

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

Комментарии

Добавить комментарий

Войти, используя Loginza Google Account Yandex Mail.ru Vkontakte Facebook

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.