|
|
|||||||||||||||||||||||||||||
|
Использование IBM DB2 в приложениях Lotus Domino 7Источник: IBM developerWorks Россия
В Lotus Domino 7 предоставлена возможность использования DB2 в качестве хранилища данных. Данная функциональная возможность позволяет вам использовать обе базы данных (DB2 и Domino), получая доступ и просматривая данные, хранящиеся в обоих форматах. Это дает возможность использовать лучшее из DB2 и Domino в вашей среде. Пользователи Notes получают доступ к возможностям DB2, таким как реляционные структуры и виды, основанные на языке SQL (System Query Language). Пользователи DB2 могут воспользоваться возможностями Domino, такими как репликация и защита. DB2 как дополнительная возможность для хранения позволяет пользователям Lotus Domino сохранять внутреннее представление своих сообщений и данных для совместной работы в корпоративной реляционной базе данных, поддерживая полную совместимость с NSF-функциональностью. Кроме того, Domino 7 предоставляет две функции, DB2 Access Views (DAVs) и Query Views, которые позволяют разработчикам Domino-приложений использовать в полном объеме реляционные возможности с данными Domino и DB2. В данной статье кратко описываются эти виды, как их можно использовать и как разрабатывать такие приложения. Мы полагаем, что вы уже разрешили использование DB2 на вашем Domino-сервере, установили ее и запустили, а также имеете некоторый опыт работы с Domino Designer. Примечание: Domino 7 с DB2 доступен всем пользователям Lotus Domino только для оценки (не предоставляется поддержка) через DB2 Feature Trial. Существует также программа Limited Availability Program для квалифицированных пользователей по использованию возможностей DB2 с технической поддержкой и доступом к ресурсам IBM Development. Разработка приложений в среде DB2Для создания приложений, использующих общие возможности сервера Domino, а также мощные возможности системы транзакций сервера IBM WebSphere и возможности хранения в базе данных DB2, вы можете использовать Domino Designer. Его можно использовать для создания сквозных (end-to-end) бизнес-решений, таких как управление системой поставок, автоматизация продаж или управление взаимоотношениями с покупателями. Применяя технологию Java-сервлетов, вы можете совместно использовать код с приложениями IBM WebSphere и связываться с ними. Single Sign-On (SSO), общая служба аутентификации, также позволяют плавно интегрировать приложения Lotus Domino и WebSphere. Как уже упоминалось, Domino Designer 7 содержит два новых типа элементов проектирования, помогающих управлять данными, которые хранятся в DB2-базах данных Lotus Notes:
DB2 Access ViewКогда сервер использует DB2, пользовательские данные не меняются в реляционных таблицах напрямую. Меняется только внутреннее представление пользовательских данных в Domino в табличных форматах. Вы никогда не должны напрямую управлять этими таблицами. Однако разработчики приложений могут определить свои собственные виды DB2 Access с помощью Domino Designer. Большая часть информации в Domino состоит из данных для системы обмена сообщениями и совместной работы, непригодных для хранения в реляционных хранилищах. То есть, разработчики приложений могут теперь выбрать только те данные/поля, которые им нужны для реляционной обработки. После определения DAV в Domino Designer вы можете создать соответствующий DB2-вид, который будет заполняться данными Domino из указанных полей. После этого все ваши SQL-приложения, например, Crystal Reports, могут работать с Domino-данными через этот DB2-вид (см. рисунок 1). Кроме того, сервер Domino будет отвечать за поддержку целостности данных при любых обновлениях как через Domino, так и через DB2 при разрешенных в Domino функциях защиты. Рисунок 1. Обзор DB2 Access Views Эта новая функциональная возможность предназначена для тех пользователей, кто желает:
Query ViewЭта функциональная возможность предназначена для тех разработчиков Domino-приложений, которые знакомы с Notes-видами. Она позволяет определить Domino-вид, используя SQL. При помощи Domino Designer вы можете определить Domino-вид, данные которого основаны на SQL-запросе. Это позволяет приложению получить данные (через соединение) из мест, из которых ранее этого сделать было нельзя. Источником данных могут быть другие реляционные таблицы/виды DB2 или другие DAV баз данных Domino, использующих DB2. Query View является динамическим. SQL-запрос будет выполняться заново при каждом обновлении Domino-вида (см. рисунок 2). Рисунок 2. Динамические Query View Эта новая функциональная возможность предназначена для тех пользователей, кто желает:
Создание Query ViewДля использования Query View с DAV, вы должны, прежде всего, убедиться в том, что в Domino разрешено использование DB2 в качестве хранилища данных, и NSF, который вы планируете использовать, должен храниться в DB2. Также должен быть установлен и корректно настроен DB2 Access Server. Кроме того, все пользователи Notes, обращающиеся к Query Views, должны иметь корректные пользовательские учетные записи DB2, которые должны быть установлены из Domino Administration Client перед развертыванием. Также, администратором должны быть установлены нужные DB2-привилегии для DB2-объектов, если через Query View осуществляется доступ к каким-либо "родным" DB2-данным. За все эти требования ответственен администратор Domino и/или DB2, но эта тема выходит за рамки рассмотрения данной статьи. После выполнения этих требований и разрешения серверу использовать DB2, любые базы данных, создаваемые на этом сервере, будут использовать DB2. Вы можете быстро проверить, использует ли база данных DB2, нажав File - Database - Properties и выбрав вторую страницу "i" в информационном окне Database properties. В ней отобразится сообщение 'Database is DB2-enabled', как показано на рисунке 3. Рисунок 3. На странице Database properties показано, что база данных использует DB2 Обратите внимание на то, что некоторые системные базы данных (например, Names.nsf и Events4.nsf) не поддерживают DB2. Если база данных использует DB2, Domino хранит NSF в виде набора таблиц в DB2. Вы не можете просматривать эти данные; это скрытые данные в Domino. Вы можете просматривать NSF-данные в DB2, только создавая DAV для них. DAV делает данные доступными непосредственно через SQL. Сторонние приложения, использующие Open Database Connectivity (ODBC), тоже могут читать данные. Сейчас мы рассмотрим пошаговый пример, показывающий процесс создания базы данных DB2 и процесс создания ваших собственных Query View. Предоставленные примеры используют базу данных, создаваемую шаблоном Discussion, поставляемым с дистрибутивом Notes-клиента. Если база данных Domino использует DB2, Domino создает для нее схему, а также набор таблиц в этой схеме для хранения Notes-данных. Имя схемы основано на имени NSF-файла. Любые DAV, создаваемые вами, тоже будут размещены в этой схеме. Если бы вы включили все сообщения из NSF в одну DAV-таблицу, это было бы не эффективно для SQL-доступа. Дело в том, что набор сообщений обычно не имеет унифицированного набора полей (или столбцов в базе данных DB2) и, следовательно, не может быть сгруппирован способом, имеющим смысл для SQL-запросов. Для того чтобы сделать SQL-доступ полезным и управляемым, вы должны определить DB2-виды, указывающие поля, к которым вы хотите обращаться через SQL, и набор сообщений, принадлежащих этому DB2-виду (эти сообщения формируют строки DB2-вида). Шаг 1. Создание DAVПрежде чем поместить какие-либо Domino-данные в DB2 Query View в Lotus Notes Client, вы должны создать DAV (DB2-виды, которые помещают в базу только DB2-данные, не требуют DAV). В DAV в качестве записей должны быть созданы те же поля, которые будут отображаться в столбцах вида. DAV используют много места, поскольку каждый DAV дублирует данные в базе данных, поэтому рекомендуется иметь один (или очень мало) DAV, содержащий все необходимые поля для различных Query View. Запишите названия всех полей в столбцах вида. Для данного примера Query View будет использовать аналогичный формат для вида All Documents в Discussion. Используя формулу SQL Query, мы назначим "динамические" категории вместо категорий, находящихся в самих сообщениях. Наш список полей будет таким: Form, From, AltFrom, Subject, Readers, ExpireDate. Запустите Domino Designer и выберите параметр DB2 Access Views в Shared Resources (см. рисунок 4). Рисунок 4. Диалоговое окно, показывающее параметр DB2 Access Views Нажмите New для создания нового DAV. В диалоговом окне свойств введите DAV SUMMARY2. Вставьте поля по вашему списку полей. Отметьте флажок All forms в диалоговом окне DAV properties, как показано на рисунке 5. Это будет гарантировать, что все документы в базе данных включены в DAV. Сохраните изменения и выйдите из DAV. Рисунок 5. Диалоговое окно DAV properties, показывающее отмеченный флажок All forms Чтобы завершить создание DAV, нужно создать его в DB2 и заполнить информацией. На вершине списка DAV в Designer нажмите кнопку Create/Update in DB2. Затем нажмите кнопку Populate in DB2. Это действие передаст в сервер Domino запрос на заполнение DAV. Обращаем внимание на то, что для большой базы данных это займет некоторое время. Для проверки нажмите кнопку Refresh Status (см. рисунок 6). Рисунок 6. Кнопка DAV Refresh Status Когда DAV будет готов к использованию, слева от имени DAV в Designer появится галочка, как показано на рисунке 7. Рисунок 7. Галочка, указывающая на готовность DAV к использованию Шаг 2. Создание Query ViewQuery View - это еще один тип Notes-вида. Аналогично другим типам Notes-видов, Query View - это элементы проектирования, являющиеся частью Domino-приложений. Query View использует формулу, которая формирует SQL-запрос для заполнения его данными, вместо использования формулы выбора. Для создания Query View, основанного на данных в базе данных Notes, размещенных в DB2, вы должны, прежде всего, определить и заполнить DAV для этой базы данных (см. Шаг 1). Поскольку Query View не являются персистентными, они не занимают места в базе данных Notes. Существующие виды не могут быть преобразованы в Query View; вы должны указать то, что вид является видом Query View при его создании. Доступ и управление данными в базах данных DB2 осуществляется через SQL-запросы. Когда вы создаете новый вид в базе данных DB2, создается новое условие выбора, называемое By SQL Query. Если вы не знаете сразу, какая должна быть ваша формула SQL Query, введите двойные кавычки в поле формулы. Обратите внимание на то, что вводимый вами SQL Query является формулой, формирующей SQL Query. Для данного примера мы создадим вид Query View с названием New SQL view. Нажмите кнопку Copy From и выберите вид All Documents. Затем выберите условие выбора By SQL Query и введите "" в качестве формулы (см. рисунок 8). Рисунок 8. Диалоговое окно Create View, показывающего выбранный By SQL Query Нажмите кнопку Save and Customize. Когда этот вид откроется в Domino Designer, удалите все столбцы, кроме Date и Topic, и добавьте столбец категорий слева, как показано на рисунке 9. После сохранения вида вы можете различать виды SQL Query View по серой и синей пиктограмме, появляющейся слева от названия вида в Domino Designer (см. рисунок 10). Если вы поместите курсор мышки над пиктограммой, будет показано, что ваш вид является видом DB2 Query View. Рисунок 10. Серая и синяя пиктограмма рядом с названием вида Шаг 3. Создание SQL Query FormulaВажно: Выражение Select формулы SQL Query должно включать все поля, на которые есть ссылка в столбцах вида. Измените новый Query View. Просмотрите формулу каждого столбца и запишите на листе бумаги поле (поля), на которое есть ссылка в этих формулах. Например, мы создали вид на основе вида All Documents базы данных discussion. Вот поля, которые мы записали:
Следующий шаг - создание SQL Query. Самым важным элементом SQL query является выражение Select. Правила для выражений Select следующие:
При изменении SQL Query View в Domino Designer на панели программиста отображается новое событие SQL Query, как показано на рисунке 11. Рисунок 11. Панель программиста показывает новое событие SQL Query event Вы можете записать SQL Query так же, как записали бы формулу выбора. Следующий код - это выражение Select, созданное для нашего нового вида с использованием DISCUSSION_DAV, который мы создали на Шаге 1 на основе показанной выше таблицы полей. Обратите внимание на то, что жесткие возвраты каретки не поддерживаются в SQL-части формулы. Должен быть один параграф, заключенный в двойные кавычки.
Ниже приведена SQL-часть формулы, разбитая на фрагменты: Первая часть называется "регулярным табличным выражением". Она создает виртуальную таблицу "CATEGORIZED" с набором столбцов, предоставленным из внутренних запросов. Каждый внутренний запрос должен совпадать с этими столбцами по положению и типу данных.
Это один из внутренних запросов, предоставляющий виртуальной таблице категорий данные из реляционных таблиц (в данном случае, MyTable):
В этом примере результат этого внутреннего запроса комбинируется с результатами других внутренних запросов с ключевыми словами UNION ALL:
Столбцы во внутренних запросах отображаются непосредственно в столбцы виртуальной таблицы CATEGORIZED, то есть:
Также, обратите внимание на то, что выражение Select из любого внутреннего запроса могло бы поместить столбцы из любой другой таблицы, имеющие любое другое имя, но только если выбранные столбцы совпадают по типу данных со столбцами в любой другой виртуальной таблице CATEGORIZED. Вот пример:
Это работает, пока foreign_noteid, somefrom, myform, youraltfrom, the_readers, the_expiredate и topic совпадают по типу данных со столбцами в виртуальной таблице CATEGORIZED (то есть, #noteid, from, form, altfrom, readers, expiredate, subject). В дополнение:
Новый SQL-вид теперь готов для просмотра в Notes-клиенте. При открытии вида панель состояния показывает полное Select-выражение, которое вы создали. На рисунке 12 изображен созданный нами вид. ЗаключениеВ Domino 7 у нас имеется "родной" способ хранения Domino-данных в реляционной базе данных DB2. Кроме того, нам предоставлена среда разработки Domino-приложений с двумя новыми главными возможностями DB Access views и Query Views для улучшения существующих приложений и разработки новых приложений, основанных на реляционных концепциях. Используя предоставленные в данной статье советы и примеры, мы призываем всех разработчиков Domino-приложений попробовать новые функциональные возможности и выработать идеи для разработки новых захватывающих приложений. Реляционное управление Domino-данными наконец-то существует Ссылки по теме
|
|