CMS на SQL. Создание веб-приложений на SQL
Создание учетной системы в виде личных кабинетов на базе SQL Server с полным управлением через SQL
В этой статье рассмотрим как создается веб-оболочка базы данных SQL Server на примере нашей платформы Falcon Space и посмотрим основные отличия от классической разработки системы по полному стеку технологий.
Это не оболочка базы данных для управления СУБД SQL Server. Это система личных кабинетов для учета информации, хранящейся в SQL Server. Все управление системой осуществляет настройка SQL (по сути, это SQL фреймворк). Если вы знаете SQL, то вы сможете сопровождать подобную систему.
Разработка учетной системы на полном стеке (fullstack)
Самописные системы разрабатываются на базе полного стека разработки с N слоями:
- проектируется база данных
- создается слой доступа к данным
- создается слой бизнес-логики
- разрабатывается API или слой контроллеров
- делается верстка
- к ней подключается динамика за счет front end программирования.
Это довольно трудоемко, сложно. Зачем тогда использовать это, если есть коробочные решения?
Коробочные решения не дают гибкости, а для дальнейшего развития системы очень важно иметь возможность легко развивать систему без серьезных ограничений.
Fullstack разработка - это долго, дорого и много ошибок
Когда-то давно мы создали модуль метрик, который генерировал некие отчеты в виде вложенных показателей. Каждый отчет — это данные в таблицах + некая хранимая процедура для извлечения данных.
Движок модуля подхватывал эти данные и хранимку и выводил все, что нужно пользователю.
Если вас заинтересовала возможность разработки на MS SQL у нас открыта вакансия для SQL программистов.
SQL настройка для полного управления - новая парадигма. SQL фреймворк
Это привело нас к идее, а почему бы и другие все модули не попробовать сделать по подобному принципу — формы, таблицы, графики, дашборды и прочее.
Что дает в итоге такой подход:
- можно менять бизнес-логику на лету (просто поменяв хранимую процедуру). В случае обычного N-слойного приложения необходима перекомпиляция и обновление программы.
- скорость внесения изменений. Очень важно иметь возможность быстро вносить изменения, а не ждать разработчиков по 2 недели, когда они внедрят изменения в систему.
- основная сложность ложится на один слой и локация ошибки с высокой степенью вероятности находится только в одном слое — SQL процедурах. Это упрощает поиск ошибок и минимизирует количество сбоев на front end.
Как это выглядит изнутри
Возьмем к примеру вывод таблицы.
На входе — это сниппет.
<div class="as-table" data-code="table1" data-itemid="1"></div>
Ваш JS движок обрабатывает подобные компоненты и запрашивает у базы описание по компонентам и данные для них (все через значимые процедуры).
Полученные данные JS движок выводит в виде таблицы.
Данные удовлетворяют неким правилам/стандартам. Например, для таблиц у нас правила примерно выглядят так:
процедура GetItems выдает в SELECT 1 данные таблицы, в SELECT 2 — данные о пагинации, в SELECT 3 — настройки вывода таблицы.
К примеру, если в SELECT 3 передать select 1 Compact — то таблица будет выведена в компактном режиме.
Редактирование SQL для таблицы вывода страниц
Если необходимо реализовать какие-то действия с данными таблицы, то это также вызов некой хранимой процедуры с заданными параметрами и заданным выводом.
Процедуры делятся на системные (обслуживают компоненты и внутренние потребности системы) и пользовательские (задают вывод данных).
Редактирование процедур происходит через интерфейс панели управления, т.е. нет необходимости искать каждый раз хранимую процедуру в SQL Server Management Studio.
Идея Falcon Space - Сниппеты в разметке+ управление бизнес-логикой через SQL + гибкие компоненты ядра
Управление через SQL: плюсы и минусы
Какие дополнительные плюсы дает интерфейс для SQL Server?
1. Быстродействие. Вы работаете с чистым SQL без лишних прослоек в виде ORM. Это дает хорошее быстродействие, и оно ограничивается, по сути, быстродействием вашего написанного SQL запроса.
2. Созданный функционал — это веб-оболочка SQL и данные в таблицах (что также можно представить в виде SQL скрипта). Вы можете легко переносить между разными системами SQL для отдельных компонентов. Это возможность быстро наращивать кодовую базу и адаптировать ее в других подобных приложениях.
3. Не нужна компиляция. Поменяли процедуру — получили сразу в системе другой результат. По сути разработка идет в realtime, параллельно с использованием.
4. Локализация ошибок — большинство ошибок лежат в вашем SQL, а не разбросаны по всему стеку. Есть проблема? Проверяем работы процедуры в SQL Management Studio и анализируем вход и выход.
5. Поняв общий подход, систему можно развивать, добавляя новые блоки и модули без необходимости менять исходный код программы.
6. Уменьшение требуемых компетенций для поддержки системы. В нашем случае мы сводим все к двум компетенциям — знание SQL для бизнес-логики и Bootstrap для стилизации и вывода данных.
7. Уменьшение количества велосипедов. Программисты не могут больше делать в системе три вида по-разному сделанных таблиц. Все унифицируется и разработка идет быстрее.
Конечно, не все так просто, и есть свои сложности. Например, некоторые функции не так просто реализовать в SQL (вычисление хеша для кириллицы) или передача вызова из хранимой процедуры в код веб-приложения. Где-то приходится идти на компромиссы (например, есть ограничения верстки отдельных элементов).
Однако, в целом такой подход позволяет решать ключевые задачи — быстро создавать необходимый функционал, иметь гибкие возможности по дальнейшему развитию и снижать стоимость сопровождения системы.
Почему Falcon Space - это SQL фреймворк
Все управляющие конструкции в системе задаются через процедуры SQL. Разработчик не выводит таблицу - он задает нужные параметры через хранимые процедуры (выходные SELECT в нужном формате), а фреймворк обрабатывает его данные и выводит в виде таблицы.
Фреймворк Falcon Space определяет формат множества различных типовых ответов от процедур. Задача программиста - просто верно выдать отклик от процедур.
Более подробное описание как изнутри работает система можно найти в вводной статье документации Falcon Space.
В статье На пути к созданию продукта. История создания Falcon Space можно более глубоко погрузиться в предпосылки создания системы и ее особенности.
P.S. Мы реализовали несколько типовых решений на базе нашей платформы. Вы можете посмотреть их демо здесь - demo.web-automation.ru
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта