Что такое кастомные таблицы в Drupal, для решения каких задач их стоит использовать, а для каких нет, способы создания кастомных таблиц.
-----
Сайт сибирского сообщества друпаллеров ДрупалСиб drupalsib.ru
Группа сибирского сообщества друпаллеров Вконтакте vk.com/drupalsib
Партнер Группа компаний И20 i20.biz
1. Кастомные таблицы в Drupal 7
Модули Schema, Data, Entity Construction Kit
Антон Шлома
Инженер программист
shloma.a@i20.biz
Группа компаний i20
2. Почему используют?
Кастомные таблицы в Drupal 7
● Не нравится node
● Не нравится taxonomy term
● Вообще раздражает слово
bundle и entity
● Я пишу на нативном PHP,
мне вообще не нужен Drupal
● Задумался о
производительности
3. Зачем нужно использовать?
Кастомные таблицы в Drupal 7
● Нужны быстрые запросы
● Нужно временное хранилище данных
● Денормализация данных
● Специфичный функционал
Разные задачи - разные
подходы в решении
4. Недостатки
Кастомные таблицы в Drupal 7
● Возможно уже есть специальное решение
для вашей задачи.
● Трудно дорабатывать, потеря данных.
● Нет интеграции с другими модулями.
● Больше времени на разработку
● Проблема с переносом на другие
инстансы
● Бесхозные таблицы захламляют БД.
5. Как создавать?
Кастомные таблицы в Drupal 7
CREATE [TEMPORARY] TABLE [IF
NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]
6. Как создавать?
Кастомные таблицы в Drupal 7
Модуль Schema
function hook_schema() {
$schema['node'] = array(
'description' => 'The base table for nodes.',
'fields' => array(
'nid' => array(
'description' => 'The primary identifier for a node.',
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
),
...
...
'primary key' => array('nid'),
);
return $schema;
}
7. Типы данных
Drupal 7 Schema API
type size MySQL type & size/range PostgreSQL type & size/range SQLite type
serial tiny tinyint, 1 B serial, 4 B integer
serial small smallint, 2 B serial, 4 B integer
serial medium mediumint, 3 B serial, 4 B integer
serial big bigint, 8 B bigserial, 8 B integer
serial normal int, 4 B serial, 4 B integer
int tiny tinyint, 1 B smallint, 2 B integer
int small smallint, 2 B smallint, 2 B integer
int medium mediumint, 3 B int, 4 B integer
int big bigint, 8 B bigint, 8 B integer
int normal int, 4 B int, 4 B integer
float tiny float, 4 B real, 6 digits float
https://www.drupal.org/node/159605
8. Модуль Data
Интеграция кастомных таблиц
● Управление таблицами
● Интеграция с модулем features
● Интеграция с модулем views
● Relations
● Экспорт схемы
● API
● Хуки
Reported installs: 8,970 sites currently
report using this module.
Downloads: 104,410
14. Модуль Entity Construction Kit
Кастомные entity
● Управление properties
● Управление fields
● Редактирование, добавление
● Интеграция с views
● View моды
● Интеграция с features
● Многое другое
Reported installs: 9,756 sites
currently report using this module.
View usage statistics.
Downloads: 136,785