2009-10-06 12 views
7

Zastanawiam się, czy istnieją dobre narzędzia do refaktoryzacji baz danych Oracle, a zwłaszcza dla PL/SQL. Pracuję nad projektem, w którym połowa programistów pracuje z C#, a druga połowa na db, gdzie istnieje duży i złożony schemat i duża baza kodu w pl/sql. Używamy również serwera sql, ale zespół bazy danych działa wyłącznie z Oracle.Narzędzia do refaktoryzacji Oracle DB (PL/SQL)

Ta baza kodu jest aktywnie rozwijana i jest stopniowo odnawiana, ale byłem bardzo zaskoczony tym, jak złe wydają się być narzędzia do refaktoryzacji oracle (lub przynajmniej w porównaniu do Eclipse i Resharper).

Deweloperzy używają toad, który ma tylko podstawowe wsparcie dla refaktoryzacji (prawdopodobnie dlatego, że wydaje się być bardziej ukierunkowany na db admin, a następnie na rozwój). Używałem już samego Toada, ale zawsze zakładałem, że dla pl/sql było więcej funkcji do pracy z kodem, ale nigdy go nie interesowałem. Teraz, o ile widzę, jedynymi refaktoryzacjami, które zapewnia, są metoda wyodrębniania (procedura) i zmienna zmiana nazwy. Czytałem artykuł porównujący programistę sql i programista pl/sql, które nie mają lepszego wsparcia dla refaktoryzacji. Szybko rzuciłem okiem na projekt narzędzi danych zaćmieniowych, ale nie widziałem, aby dodały obsługę refaktoryzacji od czasu jej ostatniego użycia (kilka lat temu).

Dla serwera SQL istnieje Sql Refactor, który po zmianie struktur tabeli zostaje przeniesiony do procedur składowanych. Jest to dla mnie znacznie czystsze i mniej podatne na błędy niż ręczne aktualizowanie wszystkich zapisanych procedur. Używałem starszej wersji tych narzędzi do projektu w przeszłości i wydawało się, że są całkiem dobre, ale nieco powolne, ale to było kilka lat temu i wciąż było użyteczne.

Coś podobnego dla Oracle byłoby już dużą pomocą dla naszego zespołu ds. Rozwoju, więc chciałbym docenić niektóre wskazówki dla dobrych narzędzi do refaktoryzacji dla Oracle, jeśli istnieją. Dzięki, crocked

Odpowiedz

9

Jak to się dzieje na "d" TOAD stoi Developer nie DBA. W rzeczywistości wiele DBA anathematise TOAD i innych takich narzędzi.

Nie masz szczęścia. O ile mi wiadomo, nie ma narzędzi do refaktoryzacji PL/SQL. Głównym problemem jest to, że refaktoryzacja jako koncepcja pochodzi z paradygmatu OOP, a PL/SQL nie jest zorientowany obiektowo. Nie obsługuje dziedziczenia ani polimorfizmu (*). Oznacza to, że wiele technik, które stanowią podstawę klasycznej praktyki refaktoryzacji (powiedzmy, jak zdefiniował Fowler) - abstrakcja, interfejsy itp. - nie ma odpowiednika w PL/SQL.

Następstwem tego jest fakt, że ludzie, którzy przywykli do refaktoryzacji w ramach zestawu narzędzi koncepcyjnych, unikają programowania za pomocą PL/SQL. Kiedyś wdałem się w gorącą debatę na temat listy TDD. W efekcie nawet programiści, którzy potrzebują i docenili zalety języka PL/SQL, będą raczej rozwijać się w językach z lepszą obsługą narzędzi, bez względu na klauzulę nr 1 z the Agile Manifesto.

Najważniejszym narzędziem do refaktoryzacji jest automatyczne testowanie urządzeń. Chociaż TOAD nie ma (jak sądzę) zintegrowanego testowania jednostkowego, będzie to następna wersja Oracle SQL Developer. Istnieją również samodzielne narzędzia do testowania jednostek. Ostatnio wspomniałem o kilku z nich w another SO thread.

Pod względem refaktoryzacji PL/SQL, aby dopasować zmiany w bazie danych, prawdopodobnie większość interakcji z tabelami powinna być underaqtken przez wygenerowane API tabeli, a nie osadzone w transakcyjnych PL/SQL. W tym szczęśliwym królestwie nie ma potrzeby stosowania narzędzi do refaktoryzacji, wystarczy ponownie wygenerować odpowiednie interfejsy API. Post, do którego dołączyłem powyżej, wspomina również o QCGU, narzędziu, które może to zrobić.Oczywiście, kiedy mamy bazę kodu PL/SQL, która nie jest zorganizowana w taki sposób, życie jest trudniejsze. Nie zdziwisz się, gdy dowiesz się, że nie ma zbyt wiele narzędzi do implementacji WELC Feathers w PL/SQL.

(*) Tak, wiem, że Oracle ma Rodzaje ale są (a) SQL nie PL/SQL oraz (b) ile osób tam są rzeczywiście budowania API korzystania z nich?

+0

+1 za wyczerpującą odpowiedź. Gdzie mówisz: "prawdopodobnie większość interakcji z tabelami powinna być underaqtken przez generowane interfejsy API tabeli, a nie osadzone w transakcyjnych PL/SQL." czy masz jakieś linki \ zasoby, które możesz wskazać mi na ten temat? –

+1

Tak jak w przypadku większości rzeczy PL/SQL, Steven Feuerstein jest człowiekiem goto. W tym przypadku jego prezentacja Break Your Addiction To SQL to miejsce, od którego należy zacząć. Spróbuj złapać to jako konferencja (jest świetnym prezenterem) Niestety internet nie wydaje się mieć jego kopii, ale jego dobre praktyki wymieniają to dużo: http://www.toadworld.com/Education/StevenFeuersteinsPLSQLExperience/ Trainingandpresentations/tabid/155/Default.aspx ... Również blog Toon Koppleaars jest bardzo dobry na temat budowania interfejsów API PL/SQL: thehelsinkideclaration.blogspot.com – APC

+0

Dziękuję za tak szybkie wysłanie do mnie linków itp. - Zgadzam się dotyczące umiejętności prezentacji Stevena Feuersteina - Widziałem jego pierwszą prezentację na 9/11! Mając nadzieję, że uda mi się ocalić od pracy, abym mógł uczestniczyć w UKOUG 30-ego i zobaczyć go i Toma tego samego dnia. Jeszcze raz dziękuję –

Powiązane problemy