Шли годы и многое менялось и движок становился лучше и краше и в принципе ни один из текущих коммерческих проектов и не требует ничего более SQL2005...
Но все же работа в параллельных проектах на PostGRES, системное программирование в C# привело к мысли, что T-SQL это уже довольно отсталый и неудобный язык для работы с БД, требущий много избыточного кода.
С этим не хотелось мириться, но:
- T-SQL какой есть такой есть - не расширяемый, далекий от декларативности, с достаточно строгими и избыточными конструкциями
- Очень не люблю всякие спец-утилиты для конвертации кода или что хуже всего - всякие программки, которые цепляются к базе и что-то там делают
- Подцепление всяких хитрых .NET сборок - это конечно здорово, но существенно снижает переносимость и усложняет сопровождение баз.
- Хотелось все делать просто с базой, просто из T-SQL
И так как проект не связан с каким-то коммерческим заказом и не является продуктом сам по себе, решил опубликовать его в опен-сорс. Может кому пригодится.
Зайдите на: http://code.google.com/p/macrotsql/.
Обсуждение в вейве:
Там в целом все понятно:
При использовании специальных хранимых процедур и триггеров (без какого-бы то ни было вмешательства расширений .NET) вы получаете инфраструктуру для:
- встроенного документирования функций в XML нотации - а-ля внедренной документации С#
- декларативного программирования в форме XML атрибутов (тоже навеяно С#, хотя скорре это ближе к макроатрибутам Boo так как влияют больше на компиляцию, нежели чем на работу процедуры)
- инфраструктуру для использования готовых и создания своих собственных перепроцессоров SQL для хранимых процедур и функций
- объектную модель для формирования схемы таблиц - есть возможность создавать "интерфейсы", наследовать их друг от друга , а затем применять к таблицам с формированием наборов колонок, триггеров, специальных функций
- готовый набор препроцессоров для ряда типовых задач:
- быстрое подключения трассировки на входе и выходе из процедуры
- обрамление тела процедуры в транзакцию
- явное нумерование строк (облегчает потом поиск места возникновения ошибки)
- поддержка простого в написании блока foreach в качестве макроса для работы с курсорами (которая в исходном T-SQL сделана просто ужасно)
Комментариев нет:
Отправить комментарий