Инструменты рефакторинга Oracle DB (PL/SQL)

Мне было интересно, есть ли хорошие инструменты рефакторинга для баз данных Oracle и особенно для PL/SQL. Я работаю над проектом, где половина разработчиков работает с c#, а другая половина-с БД, где есть большая и сложная схема и большая база кода в pl/sql. Мы также используем sql server, но команда базы данных работает исключительно с Oracle.

этот код базы ведется активно и постепенно реорганизовываться, но я был весьма удивлен, чтобы увидеть, как плохие инструменты рефакторинга для oracle кажутся (или, по крайней мере, по сравнению с Eclipse и Resharper).

разработчики используют жабу, которая имеет только базовую поддержку рефакторинга (вероятно, поскольку ее, похоже, больше ориентирована на администратора БД, чем на разработку). Раньше я сам использовал Toad, но всегда предполагал, что для pl/sql есть больше возможностей для работы с кодом, но никогда не заглядывал в него. Теперь, насколько я могу видеть, единственными рефакторингами, которые он предоставляет, являются метод извлечения (процедура) и переименование переменных. Я прочитал статью, сравнивающую SQL developer и PL / sql developer, и они, похоже, не имеют лучшей поддержки рефакторинга. Я быстро взглянул на проект eclipse data tools, но не увидел, что они добавили поддержку рефакторинга с тех пор, как я последний раз использовал его (несколько лет назад).

для Sql Server существует SQL-Рефактор, который при изменении структур таблиц распространяется на хранимые процедуры. Это для меня намного чище и меньше ошибок, чем если кто-то вручную обновляет все хранимые процедуры. В прошлом я использовал более старую версию этих инструментов в проекте, и они казались вполне нормальными, но немного медленными, но это было несколько лет назад, и он все еще использовался.

Что-то подобное для Oracle уже было бы большой помощью для нашей команды разработчиков, поэтому я был бы признателен за некоторые указатели на хорошие инструменты рефакторинга для Oracle, если они существуют. Спасибо, Крок

1 ответов


Как это происходит, "D" в жабе стоит разработчик не DBA. На самом деле многие DBAs анафематизируют жабу и другие подобные инструменты.

вам не повезло. Насколько я знаю, нет инструментов для рефакторинга PL / SQL. Основная проблема заключается в том, что рефакторинг как концепция исходит из парадигмы ООП, а PL/SQL не является объектно-ориентированным. Он не поддерживает наследование или полиморфизм (*). Это означает, что многие из методов, которые лежат в основе классическая практика рефакторинга (скажем, как определено Фаулером) - абстракция, интерфейсы и т. д. - не имеют аналога в PL/SQL.

следствием этого является то, что люди, которые привыкли иметь рефакторинг как часть своего концептуального набора инструментов, как правило, избегают программирования С помощью PL/SQL. Однажды я ввязался в жаркие дебаты в списке TDD по этому поводу. В результате даже разработчики, которые нуждаются и ценят достоинства PL / SQL, предпочли бы развиваться на языках с лучшей поддержкой инструментов, пункт #1 из Agile-манифест несмотря на.

самый важный инструмент для рефакторинга-автоматизированное модульное тестирование. Хотя у TOAD нет (я думаю) интегрированного модульного тестирования, следующий выпуск Oracle SQL Developer будет. Существуют также автономные инструменты модульного тестирования. Недавно я упомянул пару из них в еще одна так нить.

с точки зрения рефакторинга PL / SQL для соответствия изменениям в базе данных, возможно, самое взаимодействие с таблицами должен быть underaqtken сгенерированным API таблицы, а не быть встроенным в транзакционный PL/SQL. В этой счастливой области нет необходимости в инструментах рефакторинга, нам просто нужно повторно генерировать соответствующие API. В сообщении, которое я связал выше, также упоминается QCGU, инструмент, который может это сделать. Конечно, когда у нас есть кодовая база PL/SQL, которая не организована таким образом, жизнь сложнее. Вы не удивитесь, узнав, что существует не так много инструментов для реализации перья в п в PL / SQL.

(*) Да, я знаю, что Oracle имеет типы, но они (a) SQL не PL/SQL и (b) сколько людей на самом деле строят API, используя их?