Просмотров: 84932
Дата последнего изменения: 22.05.2024
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
3
4
5
Недоступно в лицензиях:
Ограничений нет
Поскольку модуль Информационные блоки считается очень "тяжелым" для создания легких справочников или хранения большого количества данных (когда модуль может вести себя не очень оптимально), то появилась потребность в создании аналога инфоблоков (модуль Highload-блоки), но гораздо проще и "полегче". Новый модуль доступен с версии 14.0 продукта и написан на новом ядре D7. Структура данных этого модуля предполагает возможность использования в нагруженных проектах.
Примечание: Highload-блоки и традиционные инфоблоки - это разные вещи. Поэтому нет возможности конвертации традиционных инфоблоков в Highload-блоки. Это все равно как конвертировать форум в wiki. Технически можно создать какую-то аналогичную структуру и перенести данные. Но это имеет смысл только для конкретного проекта при определенной необходимости.
Highload-блоки
Highload-блоки - это быстрые справочники, без поддержки иерархии, с ограниченной поддержкой свойств. Они могут обращаться к БД в том числе и через HandlerSocket и работать с большими объёмами данных. Highload-блоки хранят элементы в своих таблицах и используют свои индексы.
Примечание: Кроме модуля Highload-блоки, в ядре D7 реализована возможность обращения к БД через HandlerSocket для всех сущностей ORM.
Раньше данные хранились с использованием модуля, который закрывал таблицы - паттерн Table Module. В Highload-блоках дополнительно создан слой, который называется Table Data Gateway, который поддерживает всю технику работы с таблицами, а бизнес-логика находится в расширяющем классе.
Highload-блоки - это логика для работы с данными, не более. Для конкретного применения данных нужно предусмотреть реализацию бизнес-логики самим приложением. Чтобы реализовать эту бизнес-логику надо расширить класс Highloadblock.
Преимущества Highload-блоков
- Низкие накладные расходы (PHP, меньше запросов SQL).
- Низкий риск блокировок в БД: так как данные хранятся в своих таблицах, нет единой, глобальной таблицы, которая может заблокироваться при больших нагрузках (выборка и одновременно импорт).
- Тысячи, миллионы сущностей, справочники.
- Снижение нагрузки на БД, хостинг.
О производительности и ресурсах
Highloadblock - это прослойка между пользователем и ORM. ООП само по себе ведет к бо́льшему потреблению памяти и CPU, предлагая взамен более удобную и эффективную разработку. Highloadblock предназначены для высоких нагрузок. Их преимущества лежат в области архитектуры, то есть на них проще достичь масштабируемости, проще управлять разработкой, проще учитывать риски.
Выигрыш будет именно при работе с БД. Разработчик получает:
- отдельные таблицы для сущностей (что может стать заметным на больших объемах),
- возможность легко расставлять индексы для нужных вам выборок,
- возможность прозрачно использовать handlersocket, который может заметно снизить нагрузку на СУБД.