В этой статье рассмотрим как создается веб-оболочка базы данных SQL Server на примере нашей платформы Falcon Space и посмотрим основные отличия от классической разработки системы по полному стеку технологий.
Это не оболочка базы данных для управления СУБД SQL Server. Это система личных кабинетов для учета информации, хранящейся в SQL Server. Все управление системой осуществляет настройка SQL (по сути, это SQL фреймворк). Если вы знаете SQL, то вы сможете сопровождать подобную систему.
Самописные системы разрабатываются на базе полного стека разработки с N слоями:
Это довольно трудоемко, сложно. Зачем тогда использовать это, если есть коробочные решения?
Коробочные решения не дают гибкости, а для дальнейшего развития системы очень важно иметь возможность легко развивать систему без серьезных ограничений.
Fullstack разработка - это долго, дорого и много ошибок
Когда-то давно мы создали модуль метрик, который генерировал некие отчеты в виде вложенных показателей. Каждый отчет — это данные в таблицах + некая хранимая процедура для извлечения данных.
Движок модуля подхватывал эти данные и хранимку и выводил все, что нужно пользователю.
Если вас заинтересовала возможность разработки на MS SQL у нас открыта вакансия для SQL программистов.
Это привело нас к идее, а почему бы и другие все модули не попробовать сделать по подобному принципу — формы, таблицы, графики, дашборды и прочее.
Что дает в итоге такой подход:
Как это выглядит изнутри
Возьмем к примеру вывод таблицы.
На входе — это сниппет.
Ваш JS движок обрабатывает подобные компоненты и запрашивает у базы описание по компонентам и данные для них (все через значимые процедуры).
Полученные данные JS движок выводит в виде таблицы.
Данные удовлетворяют неким правилам/стандартам. Например, для таблиц у нас правила примерно выглядят так:
процедура GetItems выдает в SELECT 1 данные таблицы, в SELECT 2 — данные о пагинации, в SELECT 3 — настройки вывода таблицы.
К примеру, если в SELECT 3 передать select 1 Compact — то таблица будет выведена в компактном режиме.
Если необходимо реализовать какие-то действия с данными таблицы, то это также вызов некой хранимой процедуры с заданными параметрами и заданным выводом.
Процедуры делятся на системные (обслуживают компоненты и внутренние потребности системы) и пользовательские (задают вывод данных).
Наша система сама подберет вам исполнителей на услуги, связанные с разработкой сайта или приложения, поисковой оптимизацией, контекстной рекламой, маркетингом, SMM и PR.
Заполнить заявку
12335 тендеров
проведено за восемь лет работы нашего сайта.
Редактирование процедур происходит через интерфейс панели управления, т.е. нет необходимости искать каждый раз хранимую процедуру в SQL Server Management Studio.
Идея Falcon Space - Сниппеты в разметке+ управление бизнес-логикой через SQL + гибкие компоненты ядра
Какие дополнительные плюсы дает интерфейс для SQL Server?
1. Быстродействие. Вы работаете с чистым SQL без лишних прослоек в виде ORM. Это дает хорошее быстродействие, и оно ограничивается, по сути, быстродействием вашего написанного SQL запроса.
2. Созданный функционал — это веб-оболочка SQL и данные в таблицах (что также можно представить в виде SQL скрипта). Вы можете легко переносить между разными системами SQL для отдельных компонентов. Это возможность быстро наращивать кодовую базу и адаптировать ее в других подобных приложениях.
3. Не нужна компиляция. Поменяли процедуру — получили сразу в системе другой результат. По сути разработка идет в realtime, параллельно с использованием.
4. Локализация ошибок — большинство ошибок лежат в вашем SQL, а не разбросаны по всему стеку. Есть проблема? Проверяем работы процедуры в SQL Management Studio и анализируем вход и выход.
5. Поняв общий подход, систему можно развивать, добавляя новые блоки и модули без необходимости менять исходный код программы.
6. Уменьшение требуемых компетенций для поддержки системы. В нашем случае мы сводим все к двум компетенциям — знание SQL для бизнес-логики и Bootstrap для стилизации и вывода данных.
7. Уменьшение количества велосипедов. Программисты не могут больше делать в системе три вида по-разному сделанных таблиц. Все унифицируется и разработка идет быстрее.
Конечно, не все так просто, и есть свои сложности. Например, некоторые функции не так просто реализовать в SQL (вычисление хеша для кириллицы) или передача вызова из хранимой процедуры в код веб-приложения. Где-то приходится идти на компромиссы (например, есть ограничения верстки отдельных элементов).
Однако, в целом такой подход позволяет решать ключевые задачи — быстро создавать необходимый функционал, иметь гибкие возможности по дальнейшему развитию и снижать стоимость сопровождения системы.
Все управляющие конструкции в системе задаются через процедуры SQL. Разработчик не выводит таблицу - он задает нужные параметры через хранимые процедуры (выходные SELECT в нужном формате), а фреймворк обрабатывает его данные и выводит в виде таблицы.
Фреймворк Falcon Space определяет формат множества различных типовых ответов от процедур. Задача программиста - просто верно выдать отклик от процедур.
Более подробное описание как изнутри работает система можно найти в вводной статье документации Falcon Space.
В статье На пути к созданию продукта. История создания Falcon Space можно более глубоко погрузиться в предпосылки создания системы и ее особенности.
P.S. Мы реализовали несколько типовых решений на базе нашей платформы. Вы можете посмотреть их демо здесь - demo.web-automation.ru
Источник: https://falconspace.ru/blog/cms-na-sql--kak-sdelat-veb-obolochku-dlya-bazy-sql-server