Передовая практика работы с базами данных


Я изучаю Drupal, и я хочу разработать веб-сайт, где главное - его база данных.

У меня уже есть Расширенная модель отношений сущности с базой данных (довольно сложная).

Какое правильное направление следует выбрать при создании базы данных, которая будет использоваться Drupal, создайте ее вручную и выполняйте запросы в Drupal с использованием PHP, как если бы это был сайт PHP+MySQL с нуля? Предоставляет ли Drupal более простой способ сделать это это?

Редактировать:
Я не являюсь опытным разработчиком Drupal. Что я хочу знать, так это:

  • При работе с базами данных, есть ли лучший способ сделать это, чем запрашивать базу данных с использованием синтаксиса SQL, например, если бы я разрабатывал одну страницу PHP+MySQL?

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

 5
Author: kiamlaluno, 2011-03-03

4 answers

Ваша модель отношений сущностей, скорее всего, будет соответствовать тому, что мы называем "Типами контента" в Drupal.

Типы контента определяются с помощью модуля конструктора контента, обычно называемого CCK.

С помощью CCK вы указываете и щелкаете, чтобы определить, какие поля должны быть у типа контента - текстовые поля, числа, ссылки, ссылки на другие типы контента, ссылки на пользователей на вашем сайте Drupal.

Определив типы контента, вы можете выяснить, какого рода списки для нужного вам контента - табличные, в стиле блога и т. Д., И используйте модуль "Представления" для создания этого списка. Представления - это конструктор запросов "наведи и щелкни" с сортировкой, фильтрацией, контролем доступа, динамическими аргументами URL-адресов и связями (например, соединениями) с другими типами контента.

Обычно так делаются "базы данных" в Drupal - но на самом деле вам вообще ничего не нужно делать с базой данных.

Если у вас есть действительно конкретный вариант использования, который не может быть решен с помощью некоторых сочетание 7000 или около того модулей Drupal, внесенных в проект, тогда, возможно, пришло время взять копию "Pro Разработка Drupal" и изучить разработку модулей, чтобы интегрировать ваш пользовательский модуль в остальную часть Drupal для удовлетворения ваших конкретных потребностей.

 10
Author: Darren Petersen, 2011-03-03 03:55:28

Моя первая реакция заключается в том, что это, возможно, слишком простой вопрос, но, поразмыслив, на него стоит ответить, потому что он настолько важен для мышления при работе с Drupal, что вы склонны использовать отличную работу других, доступную через модули для большинства вещей, и вам нужно только немного написать PHP/SQL.

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

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

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

 4
Author: Richard Harrison, 2011-03-03 03:43:03

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не разработчик Drupal

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

Исходя из личного опыта в качестве администратора базы данных MySQL, я очистил установки Drupal и оптимизировал запросы с учетом нескольких основных принципов.

Главное, что я делаю для любого клиента Drupal, - это ПРЕОБРАЗОВАТЬ ВСЕ ДАННЫЕ MySQL В INNODB. Это устранит блокировку таблиц, особенно на сайте с высоким трафиком . Вы должно быть, все средства используют опцию innodb_file_per_table.

Вы должны убедиться, что можете кэшировать все свои данные InnoDB. Поэтому имейте достаточно памяти, чтобы вместить это. Не забудьте настроить sort_buffer_size, join_buffer_size, read_buffer_size, read_rnd_buffer_size и умножить их сумму на max_connections. Убедитесь, что общая память, потребляемая MySQL (innodb_buffer_pool_size + key_buffer_size + (sort_buffer_size + join_buffer_size + read_buffer_size+ read_rnd_buffer_size) X max_connections) не превышает 90% установленной оперативной памяти.

Всегда рекомендуется проверять уровень БД. Как только вы реализуете эти предложения, следует рассмотреть возможность обслуживания уровня БД, когда у вас наблюдается значительный рост объема данных или подключений. В противном случае это должно быть редким явлением.

 2
Author: RolandoMySQLDBA, 2017-04-13 12:47:05

Если вы являетесь обычным пользователем, все, что вам нужно сделать, это установить сайт через install.php , и единственное, что вам нужно знать о базе данных, - это имя, пользователь и пароль, об остальном позаботится Drupal.

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

Если вы разработчик, пишущий пользовательский код или модуль contrib, и вам нужно было хранить информация в базе данных, возможно, вам потребуется написать некоторые запросы, а о других могут позаботиться некоторые функции Drupal.

  • Настройка базы данных в первую очередь вы бы использовали hook_schema(), где вам просто нужно вернуть вашу схему в требуемом формате.

  • Наилучший практический подход к написанию/обновлению записей в одной таблице заключается в использовании drupal_write_record().

Есть еще много чего почитать можно найти по адресу: http://api.drupal.org/api/drupal/includes--database--database.inc/group/database/7

Также обратите внимание, что документация относится к конкретной версии.

Надеюсь, это в какой-то мере ответит на ваш вопрос.

 1
Author: Decipher, 2011-03-03 03:54:30