понедельник, 12 июля 2010 г.

Проект Macro TSQL запущен (ru)

Более 10 лет работы с MS SQL не могли пройти даром.

Шли годы и многое менялось и движок становился лучше и краше и в принципе ни один из текущих коммерческих проектов и не требует ничего более SQL2005...

Но все же работа в параллельных проектах на PostGRES, системное программирование в C# привело к мысли, что T-SQL это уже довольно отсталый и неудобный язык для работы с БД, требущий много избыточного кода.

С этим не хотелось мириться, но:

  1. T-SQL какой есть такой есть - не расширяемый, далекий от декларативности, с достаточно строгими и избыточными конструкциями
  2. Очень не люблю всякие спец-утилиты для конвертации кода или что хуже всего - всякие программки, которые цепляются к базе и что-то там делают
  3. Подцепление всяких хитрых .NET сборок - это конечно здорово, но существенно снижает переносимость и усложняет сопровождение баз.
  4. Хотелось все делать просто с базой, просто из T-SQL
В какой-то момент нам это удалось.

И так как проект не связан с каким-то коммерческим заказом и не является продуктом сам по себе, решил опубликовать его в опен-сорс. Может кому пригодится.

Зайдите на:  http://code.google.com/p/macrotsql/.
Обсуждение в вейве:




Там в целом все понятно:

При использовании специальных хранимых процедур и триггеров (без какого-бы то ни было вмешательства расширений .NET) вы получаете инфраструктуру для:
  1. встроенного документирования функций в XML нотации - а-ля внедренной документации С#
  2. декларативного программирования в форме XML атрибутов (тоже навеяно С#, хотя скорре это ближе к макроатрибутам Boo так как влияют больше на компиляцию, нежели чем на работу процедуры)
  3. инфраструктуру для использования готовых и создания своих собственных перепроцессоров SQL для хранимых процедур и функций
  4. объектную модель для формирования схемы таблиц - есть возможность создавать "интерфейсы", наследовать их друг от друга , а затем применять к таблицам с формированием наборов колонок, триггеров, специальных функций
  5. готовый набор препроцессоров для ряда типовых задач:
  • быстрое подключения трассировки на входе и выходе из процедуры
  • обрамление тела процедуры в транзакцию
  • явное нумерование строк (облегчает потом поиск места возникновения ошибки)
  • поддержка простого в написании блока foreach в качестве макроса для работы с курсорами (которая в исходном T-SQL сделана просто ужасно)
Смотрите проект, пишите, присоединяйтесь к проекту. Надеюсь он понравится многим программистам на T-SQL и я получу тоже что-то полезное в проект

Комментариев нет: