Контент Web сайта хранится в базе данных и повезло, если это Oracle Database. Повезло дважды, поскольку в состав Oracle Database входит Oracle Application Express (APEX). Oracle APEX - это полностью оснащенная фабрика для производства, публикации и сопровождения Web сайтов с опорой на базу данных.
Как это работает
Сначала создаются таблицы базы данных, в которых хранятся сущности и отношения между ними. Например, каталог товаров, журнал продаж. Этот этап ничем не отличается от классического производства Web объекта над базой данных. А дальше вступает в действие APEX, предлагающий готовые компоненты:
- Если нам на Web странице нужно дерево каталога товаров, мы выбираем готовый компонент Tree, пишем стандартный иерархический SQL запрос к таблице каталога - и дерево готово.
- Если нужен отчет о продажах, выбираем готовый компонент Classic Report, пишем запрос к таблице продаж - и отчет готов.
- Если нужен редактор каталога товаров, выбираем компонент Interactive Grid, пишем выбирающий запрос к таблице каталога, а всю автоматику по модификации данных система берет на себя.
И так для всего, что может понадобиться: списки, графики, поиски, выборы, загрузки/выгрузки, авторизация, сессии, логирование и т.д. и т.п.
Как это устроено
Собственный Web сервер, таблицы метаданных в базе и среда разработки/поддержки, сама являющаяся Web приложением:
Получив запрос клиента, Web сервер запрашивает у базы пользовательские данные и метаданные, описывающие устройство страницы, и динамически строит Web страницу, которую возвращает клиенту:
Эта же страница для разработчика представляется в виде конструктора:
Что это дает
Это дает экономию ресурсов, причем значительную.
Классический подход предполагает три слоя Web сайта:
- Web сервер (например, Apache);
- Web программы (например, PHP);
- База данных (MySQL, PostgreSQL, MS SQL, Oracle DB)
Если в качестве базы данных выбрана Oracle DB, то два верхних слоя - и специалисты, их обслуживающие, - для большинства деловых задач становятся не нужны, а компонентная сборка ведется быстрее прямого кодирования.