(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Наболевшее об исходном коде объектов БД

Грамин Максим

Представьте такую ситуацию: команда разработчиков работает над программой. При этом исходный код приложения нигде не хранится. Каждый программист с помощью специального декомпилятора выгружает нужный код из бинарника, работает с ним, а потом вновь собирает и отдает на дальнейшую разаработку коллегам.
 Как вы думаете, это нормальная ситуация? Думаю, что нет.

 Но почему-то такой подход довольно часто применяется при разработке приложений БД.

 Объекты создаются и изменяются "наживую" прямо в БД. Большинство специализированных IDE предоставляют массу "удобных" инструментов для этого - поиск нужного объекта с помощью навигационного дерева, его модификация несколькими щелчками мыши и т.д. При этом об исходном коде мало кто задумывается - а при сборке версии часто используются утилиты, которые на основании кода текущей базы и кода базы продакшена генерируют диф-скрипт (для меня до сих остается загадкой как, т.к. альтер (таблицы например) можно сформировать множеством способов, все зависит от конкретного случая, от логики изменения и т.д.).

 Получается, что исходного кода базы как бы и не существует, он считается неким машинным кодом, который трудно воспринимается человеком и полностью отдается на откуп визуальным средствам разаработки. Программист работает не с функционалом своей СУБД, а с функционалом конкретной IDE, неким красивым и (как кажется первое время) удобным промежуточным слоем. При этом приходится изучать именно IDE, а не саму СУБД.

 Стоит помнить, что после того, как вы с помощью собственно написанного кода (выверенного, отформатированного по корпаративным стандартам, оформленного комментариями) создаете объект БД, этот код нигде не сохранится, вы потеряете его, а взамен получите то, что соберет за вас машина (IDE, специальные утилиты или библиотеки), опираясь на словарь данных БД. При этом теряется история изменения объектов (становится невозможным узнать/вспомнить кто, когда и зачем создавал/удалял/изменял тот или иной объект), могут возникать конфликты при совместной разработке и еще очень много чего.

 Об этом можно почитать в "PLSQL Standards Developed for the PLSQL Starter Framework" в главе "Source Code Control":

Remember to never modify the PL/SQL stored in the database. Work from the source code file instead. Yes, modifying the compiled code inside the database is technically feasible, but a really bad idea. It is comparable in some ways to modifying Java bytecode or C object files.

 и в главе "Data Models and DDL":

Most DDL is still created by hand. Make it clean, commented and readable, just like source code.

 Напоследок приведу код создания простой таблицы в Oracle и то, что из него получается после выгрузки из БД различными утилитами.

 Исходный код создания таблицы:

-- This is test_table
 CREATE TABLE test_table (
 id NUMBER(38), -- PK
 value NUMBER(10,2), -- main value
 width NUMBER(5,0) -- main width value
 );

 DBMS_METADATA:
CREATE TABLE "OBJECTMAN"."TEST_TABLE"
 ( "ID" NUMBER(38,0),
 "VALUE" NUMBER(10,2),
 "WIDTH" NUMBER(5,0)
 )

 Tora:
CREATE TABLE objectman.test_table
 (
 id NUMBER(38)
 , value NUMBER(10,2)
 , width NUMBER(5)
 )

 TOAD Eclpise plugin:
create table test_table
 (
 id number(38),
 value number(10,2),
 width number(5)
 )

 Как видно солянка полная, кто на что горазд.

 Конечно это не значит, что нужно полностью отказаться от современных визуальных средств и работать в консольном редакторе. Самое главное - работать именно с исходным кодом вашего приложения БД, контролировать его самостоятельно, не отдавать на откуп машине. Исходный код приложений БД ничем не хуже кода Java или C++ приложений и требует к себе такого же обращения: форматирование, комментарии, контроль версий и т.д.

 Несколько рекомендаций:

 1. Весь код БД (DML, DDL, DCL, TCL и т.д.) необходимо хранить в репозитории (один объект = один файл);
 2. Исходя из первого пункта, должна быть возможность собрать готовую к использованию "чистую" базу "с нуля", используя исходники из репозитория (нет необходимости делать дампы базы, вырезать ненужные(тестовые) данные и т.д.)
 3. Править и компилировать код объекта БД нужно именно из файла (т.о. вместо навигатора по объктом БД вашей IDE станет актуален навигатор по файлам проекта в репозитории - найти файл, открыть на редактирование, накатить на базу).

Ссылки по теме


 Распечатать »
 Правила публикации »
  Обсудить материал в конференции Oracle » [2]
Написать редактору 
 Рекомендовать » Дата публикации: 23.04.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Standard Edition 2 Processor License
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Personal Edition Named User Plus License
Microsoft SQL Server Standard Edition 2017 Sngl OLP 1License NoLevel
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Реестр Windows. Секреты работы на компьютере
СУБД Oracle "с нуля"
Adobe Photoshop: алхимия дизайна
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Сдача экзаменов Microsoft гарантия 100% (13)
Сдача экзаменов Microsoft гарантия 100%. Дополнительная информация по E-mail.
 
Подключение JavaScript (305)
Всем привет! Я подключаю JavaScript нижеприведенным образом. Код: <script...
 
Как восстановить рабочий стол? Помогите срочно надо! (3)
Windows 7 максимальная. В учетной записи сменила пароль и выключила комп, после включения...
 
Пять возможностей Windows, о которых вы могли не знать (5)
пыщпыщ
 
Регистрация на Oracle.com (3)
Сразу прошу прощения за тупой вопрос, но вчера зарегался на oracle.com (чтоб 9i слить себе...
 
 
 



    
rambler's top100 Rambler's Top100