Брешенков А.В., Волкова Е.А., Галямова Е.В. - Разработка DB2 приложений
Описание файла
PDF-файл из архива "Брешенков А.В., Волкова Е.А., Галямова Е.В. - Разработка DB2 приложений", который расположен в категории "". Всё это находится в предмете "языки интернет-программирования" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "языки интернет-программирования" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
Министерство образования и науки Российской ФедерацииФедеральное агентство по образованиюГосударственное образовательное учреждение высшего профессиональногообразованияМОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙУНИВЕРСИТЕТ ИМ. Н.Э. БАУМАНА(МГТУ им. Н.Э. Баумана)Факультет «Информатика и системы управления»Кафедра «Компьютерные системы и сети»Брешенков А.В., Волкова Е.А., Галямова Е.В.Разработка DB2 приложенийМетодические указаниядля выполнения лабораторной работы по курсу«СЕТЕВЫЕ БАЗЫ ДАННЫХ»2009 год,МоскваЛабораторная работа «Разработка DB2 приложений»АннотацияСистема управления базами данных СУБД DB2 компании IBM — этомощнаявысокопроизводительнаямногоплатформеннаяСУБД.Онапоставляется с целым набором клиентских инструментов, которые могутбыть использованы для выполнения операторов языка структурированныхзапросов SQL.База данных DB2 для z/OS отличается высокой степенью готовности,масштабируемостью и производительностью при обработке транзакций, внеё включена поддержка очень больших баз данных благодаря поддержке64-разрядныхвиртуальныхсистемхранения.Однакосуществуютнекоторые специфические особенности работы с СУБД на больших ЭВМкласса IBM мэйнфрейм System z, которым и посвящено данноеметодическое указание.В данном методическом указании изложены основы разработкиприложений для работы с базами данных DB2.
Дано краткое описаниекомпиляциипрограммвоперационнойсредеz/OS,особенностейподготовки программ в DB2, статических и динамических SQL-операторов.В практической части приведены примеры кода программ на языкахCOBOL и PL/1 и указаны настройки утилит DB2 для подготовки этихпрограмм к запуску.Цели лабораторной работы: Изучение функций DCLGEN; Разработка структуры программ, работающих с базами данных; Изучение этапов подготовки программы к запуску.21. Теоретическая часть1.1 Компиляция программ в z/OSФункция компилятора состоит в том, чтобы преобразовать исходныйкод в объектный модуль, который затем должен пройти обработкукомпоновщиком (или редактором связей), прежде чем его можно будетвыполнять. В процессе компиляции исходного модуля компиляторприсваивает относительные адреса всем инструкциям, элементам данных иметкам, начиная с нуля.
Адреса состоят из базового адреса и смещения.Это позволяет изменять расположение программ; другими словами, ихнеобязательно загружать в одно и то же место памяти при каждомвыполнении программ.Copybook – разделяемаяхранятбиблиотека,вкоторойпрограммистычасто используемые сегменты программРедактор связей преобразует объектныемодуливисполняемыезагрузочные модулиЛюбые ссылки на внешние программы и подпрограммы остаютсянеразрешенными. Эти ссылки либо разрешаются при компоновкеобъектного модуля, либо динамически разрешаются при выполнениипрограммы.Для компиляции программ в z/OS можно использовать пакетное заданиеили осуществлять компиляцию в TSO/E, используя команды, CLISTпрограммы или ISPF-панели.Программы на языке C можно компилировать в оболочке z/OS UNIXкомандой c89.
Программы на языке COBOL можно компилировать воболочке z/OS UNIX командой cob2.Длякомпиляциивпакетномзаданииz/OSвключаетнаборкаталогизированных процедур, позволяющих избежать ввода JCL-кода,которыйиначенужнобылобынабирать.Еслиниоднаизкаталогизированных процедур не соответствует вашим требованиям,3потребуется написать весь JCL-код для компиляции.На этапе компиляции нужно определить наборы данных, требуемые длякомпиляции, любые опциикомпилятора, необходимые длявашейпрограммы, и желательный формат вывода.1.2 Программирование приложений для DB2Язык SQL не является полным языком программирования, однако оннеобходим для доступа и управления данными в базе данных DB2. Онпредставляетсобойнепроцедурныйязык4-гопоколения(4GL),разработанный в середине 1970-х для использования в DB2.
Язык SQLможно либо использовать динамически в интерпретационной программевроде SPUFI, либо встраивать и компилировать или ассемблировать всоставеосновногоязыка.Таккакженаписатьприложение,осуществляющее доступ к данным в DB2?Для этого SQL встраивается висходный код языка программирования, такого как Java, Smalltalk, REXX,C, C++, COBOL, Fortran, PL/I и высокоуровневый ассемблер.СуществуетдвекатегорииSQL-операторов,которыеможноиспользовать в программе: статические и динамические.•Статические.Статическими SQL-операторами называются полные SQL-операторы,записанные внутри исходного кода.
В процессе подготовки программы,СУБД DB2 определяет пути доступа для операторов, и они записываются вDB2. Операторы SQL не изменяются от одного запуска программы кдругому; при этом используются одни и те же заданные пути доступа, такчто подсистеме DB2 не требуется создавать их повторно, что можетвызвать дополнительную нагрузку (Примечание. Все SQL-операторыдолжны иметь путь доступа).•Динамические.Динамическими SQL-операторами называются SQL-операторы, частично4или полностью неизвестные на момент написания программы.
Толькопосле запуска программы подсистема DB2 знает, какие операторы будутиспользоваться, и способна определить требуемые пути доступа. Путидоступа не сохраняются, так как операторы могут изменяться от одногозапуска программы к другому. Примером такой программы является SPUFI.Утилита SPUFI в действительности представляет собой приложение,принимающее динамические SQL-операторы. Это те операторы, которыевводятся во входном файле. При каждом запуске SPUFI, SQL-операторымогут быть разными, поэтому в приложение встраиваются специальныеподготовительные SQL-операторы.1.3 Подготовка программы в DB2: алгоритмТрадиционный процесс подготовки программы, состоящий из компиляциии редактирования связей, при подготовке SQL-кода должен включатьдополнительные этапы, так как компиляторы не распознают SQL. Этиэтапы, наряду с компиляцией и редактированием связей, можно выполнятьчерез панель DB2I, хотя весь процесс, за исключением вызова DCLGEN,обычно выполняется в одном потоке заданий JCL.
При чтении объясненийсм. рис. 1.1.3.1 DCLGENУтилита DCLGEN предоставляет способ автоматического генерированияисходных определений для объектов DB2, используемых в программе. Онисоздаются в разделе библиотеки DCLGEN, которую можно включить ввашу исходную программу. Если ее не включить, необходимо составлятьопределения вручную. Администратор базы данных DB2 обычно создаетих на основе правил компании. На этом этапе необходима работающаясистема DB2, так как определения берутся из каталога DB2.51.3.2 ПрекомпиляцияТак как компиляторы не могут обрабатывать SQL-код, на этапепрекомпиляции SQL-выражения заключаются в комментарии, подставляяоператор CALL обращения к DB2.
Он передает некоторые параметры,например, адреса переменных основного языка (для извлечения данных),номера операторов и (что очень важно) измененную отметку времени,называемуюмаркеромсогласованности(consistencytoken;частоназывается просто отметкой времени). На этом этапе не требуется запусксистемы DB2; все выполняется без доступа к DB2.Прекомпиляторопределяет SQL-код по специальным флагам начала и конца, которыедолжны быть включены для каждого SQL-оператора. Во всех языкахпрограммирования используется одинаковый флаг начала – EXEC SQL.Флаги конца различаются. В языке COBOL используется END-EXEC.(точка), тогда как в C и других языках используется точка с запятой. Нижеприведен пример на языке COBOL:EXEC SQLSELECT EMPNO, LASTNAMEINTO :EMPNO, :LASTNAMEFROM EMPEND-EXEC.В этом примере, значения EMPNO и LASTNAME извлекаются впеременные основного языка, перед которыми указывается двоеточие.Переменными основного языка являются переменные, определенные наосновном языке (COBOL, PL/1 и т.
д.) – языке включающем SQL-код. Наэтапе вызова DCLGEN также происходит определение этих переменных. Вданном случае имя переменной основного языка соответствует именистолбца, что не является обязательным требованием; можно использоватьлюбое имя с типом данных, совместимым с типом данных столбца.После прекомпиляции программа разделяется на две части.6•Измененный исходный код; представляет первоначальный исходныйкод, в котором SQL-код заключен в комментарии и замещен операторамиCALL.•Модуль запросов базы данных (database request module, DBRM),который обычно представляет собой раздел библиотеки PDS и содержитSQL-операторы программы.Измененный исходный код передается компилятору для компиляции иредактированиясвязей,вследствиечегосоздаетсяисполняемыйзагрузочный модуль, как для любой другой программы, не содержащейSQL.Кстати, можно вставить в программу любой тип SQL-кода: DML, DDLи DCL, если только не нарушаются правила авторизации.1.3.3 СвязываниеВ DB2 связывание можно рассматривать как аналог процесса компиляциидля DBRM.Связывание выполняет три операции.•Выполняет проверку синтаксиса на наличие ошибок.•Выполняет проверку полномочий.•Что важнее всего, определяет пути доступа для операторов.
DB2содержит компонент, называемый оптимизатором (optimizer), которыйрассматривает различные способы осуществления доступа к данным, такиекаксканированиецелойтаблицы,использованиеиндекса,выбориспользуемого индекса и т. д. Он определяет показатели стоимостикаждого пути доступа и выбирает путь доступа с наименьшей стоимостью.Такой оптимизатор называется оптимизатором на основе стоимости (вотличие от оптимизатора на основе правил).Код SQL вместе с путемдоступа (и маркером согласованности – отметкой времени) хранится какпакет в оглавлении DB2. Другая информация, в частности информация опакете и действительный SQL-код, хранится в каталоге.
При связывании7создается исполняемый SQL-код для одного приложения в пакете. ТеперьDB2 имеет всю информацию, необходимую для получения запрашиваемыхданныхдляданнойпрограммы.Частопрограммывызываютподпрограммы, которые также содержат SQL-вызовы. Каждая из этихподпрограммтакжеимеетпакет.Необходимосгруппироватьвсюинформацию DB2 вместе. Для этого необходим еще один этап: еще односвязывание, но на этот раз предназначенное для создания плана (plan).Дажеесли подпрограмма не используется, все равно требуется создать план.План может содержать не только информацию о программе, но и другуюинформацию. Это представляет обычную практику: план содержит всепакеты одного проекта, и при каждом запуске используется один и тот жеплан.Для полноты следует добавить, что изначально DBRM связывалисьнепосредственно в планы (они назывались встроенными DBRM).