Привет, уважаемые Хабро-читатели и SQL-писатели. Команда ХостТрекера хочет поделиться полезной утилитой для SQL разработчиков и администраторов.
Какую задачу решаем?
Нахождение зависимостей объектов в БД.
Поиск по строке в метаданных БД (хранимых процедурах, View, пользовательских функциях, определениях таблиц, индексах, ключах)
Откуда взялась идея
Мы с коллегой столкнулись с громадной базой данных, тысячи процедур, таблиц, функций и прочих полезностей. Необходим был рефакторинг, плюс новый функционал. С документацией по базе, все было не ахти, и нам пришлось разбирается co схемой базы самостоятельно. Это был сущий ад.
На второй неделе мы поняли, что нахрапом бастион не взять.
Вспоминая свое славное Юниксовое прошлое, я начал немного скучать по утилите grep, и мы решили, что нам нужно такое же, но «без крыльев» для SQL метаданных.
Сказано – сделано.
Первая версия была написана за неделю и слава о ней разлетелась по всему отделу разработки. Она была заточена под MS SQL и работала из командной строки.
Вдохновившись откликом от коллег, мы немного причесали утилиту, пририсовали ей UI, сделали подсветку вхождений и подсветку синтаксиса. Назвали SQL Dynamite (только не спрашивайте почему динамит, так получилось ;-)
Затем народ нас стал спрашивать про поддержку других баз. Как в любой уважающей себя крупной организации, у нас был целый зоопарк различных БД. Следуя пожеланиям трудящихся, и собственному живому интересу к SQL, мы понемногу разобрались со структурой схем разных баз.
Да еще в процессе разработки стало интересно пощупать .NET на предмет кроссплатформенности. Оказалось, все неплохо. Слегка поработав напильником, сделали проект под Mono, и программа заработала под теплым ламповым Linux-ом и Mac OS X.
Возможности
- Поиск вхождений в имени или тексте хранимых процедур, функций, триггеров, таблиц и индексов, ключей;
- Поиск с использованием шаблонов (синтаксис LIKE %,_);
- Задание объектов для поиска;
- Отображение тела найденных объекта в виде DDL;
- Подсветка синтаксиса;
- Подсветка найденной строки в теле объекта;
- Хранение истории поиска;
- Работа с несколькими базами.
Поддерживаемые DB
- MS SQL;
- MySql;
- Oracle;
- SQL Azure;
- Sybase ASE;
- Sybase Anywhere;
- Ingress;
- PostgreSQL;
- IBM DB/2;
- Firebird.
Планы
- Добавить сохранение DDL по найденным объектам в файл
- Добавить рюшечки в UI
- Сделать поиск сразу по нескольким базам
- Показ найденных объектов в виде дерева с группировкой по типу объекта
- Редактирование найденных объектов
- Автозамена
Где взять?
Последняя версия лежитздесь. Пользуйтесь на здоровье.
Будем рады любому фидбеку в виде комментариев, критики и багрепортов и добавления новых фич.
PS: Если интересно, то можем написать статью по поводу работы с метаинформацией в разных базах данных.
Автор: temaHT