Использование интеграции с DB2 для улучшения приложения ITSO Electronics
В этой лекции мы обсудим новые возможности, возникающие при интеграции IBM Lotus Notes и Domino 7 с IBM DB2 Universal Database (UDB). Там, где это необходимо, мы используем в качестве примера приложение ITSO Electronics для объяснения новых возможностей разработки приложений.
Ниже вы найдете информацию, в которой будут раскрыты следующие темы:
- Введение в интеграцию Domino и DB2.
- DB2 Access Views.
- Query Views.
- Работа с интегрированными данными DB2.
- Анализ безопасности DB2 и Lotus Domino.
- Поиск и устранение неисправностей в DB2 и Lotus Domino.
2.1 Введение в интеграцию Domino и DB2
Lotus Notes и Domino имеют в арсенале широкий спектр средств для интеграции с реляционными базами данных, бизнес-системами, а также системами планирования и управления ресурсами предприятия (enterprise resource planning – ERP), такими как Lotus Enterprise Integrator, Domino Enterprise Connection Services, Data Connection Resources и Lotus Connectors LotusScript Extensions. Lotus продолжает эти традиции с Notes и Domino 7, предоставляя в распоряжение разработчика новые децентрализованные возможности разработки приложений для интеграции с реляционными базами данных IBM DB2, которые одинаково могут применять как бизнес-пользователи, так и ведущие разработчики приложений. Лаборатории Lotus и DB2 в пределах корпорации IBM работали вместе для улучшения интеграционных возможностей, а сервер Domino 7 обеспечивает возможность выборочно определить новые или существующие базы данных Domino, так как в них включена поддержка DB2. Пользователи получают открытый доступ к базам данных Domino с поддержкой DB2 через сервер Domino 7, но сами базы данных хранятся в DB2. Таким образом, становится возможным в базе данных Domino с поддержкой DB2 использовать реляционные конструкции, а также данные из базы данных Domino с поддержкой DB2 в реляционных конструкциях. В то же время сохраняется поддержка функций Notes API, включая репликацию данных, маршрутизацию почты и административный доступ. Так как IBM DB2 является реляционной системой базы данных, данные с отдельных баз данных DB2, таблиц, видов и интегрированных объектов могут быть легко скомбинированы в новые наборы данных, используя общие поля данных и отношения. Все это позволяет разработчику работать с данными и представлять их другими, более удобными способами, и облегчает создание более интегрированных и значимых приложений в среде Domino и других средах, использующих данные Domino, данные DB2 и реляционные возможности. Более подробно эти возможности мы обсудим далее в этой главе.
До того как использовать новые интеграционные возможности Domino и DB2, вы должны установить сервер DB2 и сконфигурировать сервер Domino 7 для подключения к серверу DB2. В Lotus Domino 7 новые интеграционные возможности доступны в операционных системах Microsoft Windows и IBM AIX 5LTM.
Локальная установка DB2
При настройке интеграции Domino и DB2 можно выбирать между локальной или удаленной установкой. При выборе локальной установки оба сервера, и Domino и DB2, будут установлены на одном компьютере. Локальную установку лучше использовать для тестовой среды или для системы с малой производительностью. На рис. 2.1 показана система с локальной установкой.
Удаленная установка DB2
Для систем с высокой нагрузкой на сервер, скорее всего, лучше будет выполнить удаленную установку. В таком случае сервер Domino и сервер DB2 будут установлены на разных компьютерах. На рис. 2.2 представлен пример удаленной установки.
Существует два уровня интеграции с DB2. В первом случае сервер Domino и сервер DB2 устанавливаются на одном и том же компьютере, а во втором случае – на разных.
Если вы решили установить оба сервера на одном компьютере, вам необходимо выполнить приведенную ниже процедуру.
- Установить Domino 7 на сервере Domino.
- Установить приведенные ниже элементы на сервере DB2:
- DB2 UDB Enterprise Server Edition версии 8.2.2, включая следующие файлы:
- DB2 UDB Enterprise Server V8.2;
- DB2 Universal Database версии 8 с пакетом исправлений 9a.
- Разблокирующий ключ ограниченного доступа.
- DB2 UDB Enterprise Server Edition версии 8.2.2, включая следующие файлы:
- Установить сервер DB2 Access.
Если вы решили устанавливать оба сервера, Domino и DB2, на разных компьютерах, то вам необходимо выполнить следующую процедуру.
- Установить Domino 7 на сервере Domino.
- Установить приведенные ниже элементы на сервере DB2:
- DB2 UDB Enterprise Server Edition версии 8.2.2, включая следующие файлы:
- DB2 UDB Enterprise Server V8.2;
- DB2 Universal Database версии 8 с пакетом исправлений 9a.
- Разблокирующий ключ ограниченного доступа.
- DB2 UDB Enterprise Server Edition версии 8.2.2, включая следующие файлы:
- Установить DB2 Run-Time Client на сервере Domino.
- Установить сервер DB2 Access на том же компьютере, что и сервер DB2.
В данном издании мы обращаем внимание на новые элементы разработки приложений, появившиеся в Domino 7. Поэтому рассматривается только основные моменты процесса установки. Для получения более подробной информации о том, как установить и обслуживать интеграцию Domino и DB2, обратитесь к следующим источникам:
- Lotus Domino Administration 7 Help, "Domino и DB2": http://www.lotus.com/ldd/doc/domino_notes/7.0/help7_admin.nsf/;
- Readme70.pdf (на компакт-диске);
- обучающие ресурсы по DB2, размещенные на Web-сайте IBM: http://www.ibm.com/software/sw-lotus/services/education.nsf/wdocs/educationhomepage
- Developing applications with IBM Lotus Domino Enabled For DB2, E-learning Edition: Self Paced (N7D400SP): http://www.ibm.com/software/sw-lotus/services/education.nsf/81F04813DC9CE3C7852566DA004C5CB2/A6DF60493B0D2B13852570A7006C7E9B;
- Introducing IBM DB2 Concepts (N7D020): https://education.lotus.com/rw/lewwschd.nsf/5FDC13DD71D1143185256575001E5133/E55E8003DCEC00FA8525701A006959C4.
- ID (идентификаторы) пользователей в системах, построенных на основе Linux и UNIX , могут содержать до 8 символов.
- Имена пользователей в системах, построенных на основе Microsoft Windows, могут содержать до 30 символов. Однако практически у систем Microsoft Windows NT , Windows 2000, Windows XP, Windows Server 2003 предел составляет 20 символов.
- Когда не используется клиентская идентификация, клиенты 32-битовых не Windows-систем, подключающиеся к Windows NT, Windows 2000, Windows XP и Windows Server 2003, с именами пользователей длиннее 8 символов, поддерживаются только в том случае, если имя пользователя и пароль определены в явной форме.
- Имена и ID пользователей не могут:
- быть словами USERS, ADMINS, GUESTS, PUBLIC, LOCAL или любыми другими зарезервированными словами SQL (Structured Query Language);
- начинаться со слов IBM, SQL или SYS ;
- включать диакритические символы.
2.2 DB2 Access Views
В Lotus Notes и Domino применяется иной принцип хранения данных по сравнению с тем, что используется в реляционных базах данных, таких как DB2. В реляционных базах данных информация упорядочивается и распределяется по строго структурированным таблицам, а в базе данных Domino документы или "записки" ( "notes" ), состоящие из списка полей, сохраняются в формате неструктурированного файла. Такой способ хранения информации усложняет доступ к данным Domino из DB2. Для решения данной проблемы в Domino 7 были введены DB2 Access Views, общие ресурсы, позволяющие определить представление DB2, обращающееся к данным Domino путем систематизации последних в таблицу, которую можно запросить с помощью языка структурированных запросов (SQL). DB2 Access Views являются элементами разработки приложений заднего плана и не видны конечным пользователям.
DB2 Access Views доступны только для баз данных, хранящихся на сервере DB2. Перед созданием DB2 Access View на сервере Domino должна быть активирована DB2 и база данных должна находиться в системе DB2. Если вы создадите локальную реплику базы данных или реплику на сервере Domino 7.0, на котором DB2 не активирована, то DB2 Access View будет находиться в базе данных, однако им нельзя будет воспользоваться или он не будет видимым в Lotus Domino Designer.
Когда в базе данных Lotus Notes включается поддержка DB2, Domino создает схему базы данных DB2 для хранения доступных пользователю представлений Lotus Notes. Имя схемы основывается на имени файла NSF. Любые созданные вами DB2 Access Views будут также расположены в этой схеме.
Когда вы создаете DB2 Access View, информация копируется в специальную таблицу DB2. После создания и инициализации данных в DB2 Access View Domino автоматически синхронизирует обновления между неструктурированными данными Domino и структурированными данными столбцов в DB2 Access View. Следовательно, обновлять DB2 Access View нет необходимости.
2.2.1 Создание DB2 Access Views
Для создания нового DB2 Access View вам необходимо выполнить приведенные ниже действия. К тому же вы можете обратиться к справке Lotus Domino 7 Designer, которую можно найти по следующему адресу в Интернете: http://www.lotus.com/ldd/doc/domino_notes/7.0/help7_designer.nsf
- Откройте базу данных, в которой активирована поддержка DB2 в Lotus Domino Designer 7.0.
- На панели проектирования выберите Shared Resources => DB2 Access views.
- Щелкните по кнопке New DB2 Access view (Создать новый DB2 Access View). Откроется окно, показанное на рис. 2.3.
- В окне DB2 Access View вы можете:
- Присвоить имя DB2 Access View.
- Выбрать форму или формы, связанные с DB2 Access View. Вы можете выбрать, какие именно документы включать, базируясь на содержании поля Form документа. Можно либо выбрать все формы, либо выбрать некоторые из доступных форм, приведенных в списке. Если у документа отсутствует поле формы, он будет включен в DB2 Access View, только если вы выберете пункт меню All Forms (Все формы).
- Параметры DB2 Inserts and Updates будут верны только в том случае, если вы выполните операторы insert или update SQL-выражения из DB2:
- Compute with form on DB2 insert or update (Пересчитывать по форме при операциях DB2 insert и update ). Включите эту опцию, если выбранные формы содержат вычисляемые поля и вы хотите, чтобы формулы были пересчитаны, когда документ создается или обновляется с помощью SQL.
- Default form to use for DB2 inserts (Форма по умолчанию для вставок DB2). Пользователи DB2 могут осуществлять операции вставки, обновления и удаления (если у них есть права на это) с данными в DB2 Access View. В Domino 7 можно выбрать только один тип документа (основанный на форме) для создания с помощью SQL-оператора INSERT. Документы любого типа (основанные на любой форме) могут быть обновлены или удалены из SQL.
- Перейдите к закладке Advanced (Дополнительные) окна DB2 Access View, как показано на
рис.
2.4.
Здесь вы можете выбрать приведенные ниже опции:
-
Include UNID in access view (Включить UNID в access view).
Когда вы установите этот флажок, вы сможете получить доступ к уникальному идентификатору документа Lotus Notes ( UNID ) через DB2 Access View.
-
Include OID in access view (Включить OID в access view).
OID расшифровывается как Origination Identifier (идентификатор создания). Если вы выберете эту опцию и выберете ее в SQL-формуле Query View, то ссылки документа будут работать, когда элементы вида выбраны и скопированы в виде таблицы.
-
Include modified time in access view (Включить отметку времени изменения документа в access view).
Выберите эту опцию, чтобы включать отметку времени изменения документа в Notes для каждой записи в DB2 Access View. Обратите внимание на то, что эта отметка времени преобразуется в стандарт GMT (Гринвичское время).
-
Normalize to GMT for time zone conversions (Нормализировать под GMT для осуществления преобразований между различными часовыми поясами).
Выберите эту опцию, чтобы стандартизировать все даты и временные отметки в виде DB2 под GMT. Данная опция особенно полезна для распределенных приложений DB2, к которым обращаются пользователи, находящиеся в разных часовых поясах.
-
Include UNID in access view (Включить UNID в access view).
- Закройте окно свойств DB2 Access View.
- Нажмите кнопку Choose Field (Выбрать поле), после чего на вашем экране появится окно, показанное на рис. 2.5.
- В окне Choose Field вы можете:
- Выбрать поля, которые хотите включить из каждой формы.
В Domino 7 DB2 Access View может содержать максимум 84 столбца. Если вам понадобится большее количество данных, придется определить несколько DB2 Access Views.
- Щелкните по кнопке ОК для подтверждения выбора.
Список выбранных элементов DB2 Access View появится в рабочей области.
- Выбрать поля, которые хотите включить из каждой формы.
- Нажмите кнопку Insert Field (Вставить поле), чтобы включить дополнительные поля.
Возможно, вы захотите добавить поля, находящиеся вне выбранных форм. Например, возьмем поле Form. Вы можете вручную добавить его с помощью командной кнопки Insert Field. Каждый раз, когда вы используете подобное действие, появляется безымянный элемент DB2 в рабочей области.
- Дважды щелкните по каждому элементу Access View Entry, чтобы отредактировать его свойства. См. рис. 2.6.
Для полей, которые были добавлены с помощью команды Insert Field, первые три свойства должны быть заполнены. Для полей, выбранных из форм, соответствующие свойства заполняются автоматически. В этом окне присутствуют следующие поля для заполнения:
-
Field Name (Название поля).
В это поле необходимо ввести соответствующее имя поля для столбца DB2 в DB2 Access View, поэтому необходимо ввести реальное имя поля, которое появится в записи (в противном случае соответствующее поле найдено не будет и столбец при просмотре в DB2 будет пустым).
Замечание Если использовался метод Choose Field при определении полей для DB2 Access View, вы сможете редактировать имена полей в окне свойств. Однако если вы измените название поля таким образом, что оно не будет соответствовать названию поля в документе, соответствующий столбец в DB2 окажется пустым. -
Notes type (Тип данных Notes).
Показывает тип данных Lotus Notes для этого поля.
-
DB2 Type (Тип данных DB2).
Показывает тип данных DB2 для данного поля. Lotus Notes присваивает этому полю значение по умолчанию, связанное с типом выбранного поля Notes.
Представленные ниже атрибуты значимы для всех элементов DB2 Access View.
-
Create DB2 index field (Создать индексированное поле DB2). Этот столбец DB2 индексируется для увеличения скорости поиска по базе данных. Используя приведенную ниже команду, эта опция создает DB2-индекс, основанный на столбце таблицы:Использование индексов требует дополнительного пространства на системе хранения и обновления большего количества ресурсов, зато запросы такого типа выполняются намного быстрее, особенно если в TABLE x хранится большое количество строк:
> CREATE INDEX ON TABLE x (coly)
Индексация в DB2 – это расширение возможностей для разработчиков в среде Domino, однако существуют индексы, оптимизирующие выборку данных, которые нельзя создать в Domino Designer. Например, эта команда оптимизирует следующий запрос:> SELECT cola, colb, colc FROM x WHERE coly=<some value>
В данном примере индекс используется для сортировки данных. При отсутствии индекса, когда таблица увеличивается, эта операция является наиболее ресурсоемкой:> CREATE INDEX ON TABLE x (cola, colb, colc)
> SELECT cola, colb, colc FROM x WHERE cola = <some value> ORDER BY cola, colb, colc
-
DB2 column length (Длина столбца DB2). Это свойство определяет длину столбца в DB2 Access View. При выборе значения для данного поля зачастую приходится искать компромисс между противоположными целями. Возможно, вы захотите отобразить максимально возможное количество полей, но помните, что максимальная длина столбца непосредственно влияет на пространство, занимаемое DB2 Access View в базе данных DB2. При преобразовании полей Notes необходимо помнить о том, что существует предел максимального количества данных, которые можно сохранить в таблице DAV. Длина всех полей данных вместе с зарезервированным DB2-пространством не может превышать 16384 байт. Если необходимо хранить более 16000 байт данных, то часть текстовых полей можно преобразовать в тип LONG VARCHAR. При преобразовании поля в этот тип данных, в таблице сохраняется небольшой "локатор" ("locator"), а текущее поле данных (до 32000 байт на одно поле)
сохраняется в виде большого символьного объекта (Character Large Object, CLOB ). Использование CLOB позволяет увеличить емкость DAV (84*32000), однако вы должны использовать тип LONG VARCHAR, только если не можете поместить данные "линейно", так как CLOB работает медленнее и занимает больше дискового пространства, чем линейное хранение данных. При создании или обновлении DB2 Access View сервер Domino автоматически проверит DB2 Access View на превышение максимальной длины; таким образом, не придется вручную считать длину. Тем не менее, вы можете использовать рекомендации, приведенные в табл. 2.1, для оценки "линейной" длины данных.
Таблица 2.1. Виды данных и их длина в DB2 Access View Тип Длина в DAV Комментарии VARCHAR 5 + заявленная длина Например, для хранения VARCHAR(40) потребуется 45 байт LONG VARCHAR 25 Линейный локатор DOUBLE 9 Фиксированный размер TIMESTAMP 11 Фиксированный размер DATE 5 Фиксированный размер TIME 4 Фиксированный размер INTEGER 9 Фиксированный размер -
Allow truncation of Notes data (Позволить усечение данных Notes ). Иногда размер поля может быть больше, чем максимальная длина столбца, которую вы определили для элемента DB2 Access View. Когда вы разрешите усечение данных, содержание по достижении максимальной длины будет обрезаться. Если вы не разрешите усечение, то при достижении предела во время заполнения DB2 Access View на консоли сервера появится следующее сообщение: "Access Table field data exceeds defined length".
В Domino 7 параметр Allow truncation of Notes data по умолчанию отключен. В дальнейшем мы настоятельно рекомендуем включить этот параметр для всех элементов DB2 Access View Entry, в которых содержатся текстовые данные. Однако существует одно исключение: если вы планируете делать SQL-запросы на обновление DB2 Access View из DB2, этот параметр дает разрешение на усечение данных до заданной длины, что может привести к потере данных.
Замечание Мы рекомендуем вам выбрать параметр Allow truncation of Notes data для всех элементов Access View.