Использование базы данных для хранения конфигурации, а не файла конфигурации - PullRequest
3 голосов
/ 14 декабря 2010

К сожалению, поиск такого рода материала вызывает у меня много шума, поэтому мне было интересно, знает ли кто-нибудь здесь хороший ресурс для тех, кто хочет научиться использовать базу данных для хранения информации о конфигурации сайта, а не файла.

Думаю, некоторые моменты меня интересуют: 1) Как хранить данные.Один массив, как E107?Отдельная строка для каждого настраиваемого?2) Как получить данные конфигурации.Глобальный массив?

Ответы [ 5 ]

7 голосов
/ 14 декабря 2010

Рассмотрим следующее:

  • НЕКОТОРЫЕ настройки должны быть сохранены в файле конфигурации, если вы не жестко запрограммируете их, в частности, как подключиться к базе данных
  • Базы данных плохо хранят некоторые типы данных конфигурации - высокоструктурированные вещи или вещи с непредсказуемой или переменной структурой - и вы можете получить схему, которая не имеет большого смысла
  • Гораздо проще хранить файлы конфигурации в системе SCM
  • Вы можете просто заменить конфигурационный файл при обновлении, вы можете откатить его, если вам нужно вернуться. Попробуйте сделать это с таблицами базы данных? Даже в лучшем случае это сложнее.

Я бы вообще пошел за конфигурационный файл, для небольших веб-приложений.

Как только вы доберетесь до инфраструктуры, включающей веб- и не-веб-серверы, размещение конфигурации в централизованно доступном месте станет преимуществом. Это не должна быть база данных SQL, некоторые люди используют LDAP или даже DNS.

2 голосов
/ 14 декабря 2010

Я клянусь в церкви и смиренно отмечу, что можно сделать и то, и другое:)

Вы можете сохранить параметры конфигурации в базе данных, а затем создать любой файл конфигурации, который вам нужен, когда параметры сохранены.

Это форма избыточности, но она также дает следующие преимущества:

  1. Теперь вы можете комбинировать параметры конфигурации с обычными запросами.
  2. Для каждого параметра вDB, вы можете добавить значение по умолчанию, что означает, что вы можете легко «сбросить» его
  3. Вы можете выбрать более простой вариант обработки конфигурации (даже отслеживать изменения).
  4. Вы можете даже построитьвеб-форма для изменения конфигурации (и теперь вам не нужен прямой доступ к веб-серверу).
  5. Конфиденциальные данные больше не отображаются в файловой системе веб-сервера.
0 голосов
/ 14 декабря 2010

Что-то вроде этого должно работать для вас:

CREATE TABLE `config` (
  `prop` varchar(100) DEFAULT NULL,
  `value` mediumtext,
  UNIQUE KEY `lookup` (`lookup`)
) ENGINE=InnoDB

Положите ваши ключи в опору, а значения конфигурации в значение.

0 голосов
/ 14 декабря 2010

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

Вы можете посмотреть, как WordPress хранит конфигурацию в базе данных.

0 голосов
/ 14 декабря 2010
  1. Одна строка на каждый, аналогично EAV.

  2. Конечно, глобальный массив или объект звучат хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...