Россия, Омск |
Использование интеграции с DB2 для улучшения приложения ITSO Electronics
2.2.2 Экспортирование данных с типом TIMEDATE в DB2 Access View
Тип данных Lotus Notes TIMEDATE позволяет хранить дату, время, временную зону, а также индикатор летнего времени, однако временная отметка DB2 позволяет хранить только дату и время. В DB2 считается, что все даты и время локальны по отношению к часовому поясу сервера DB2. Это может привести к неверному отображению времени при экспортировании данных с типом TIMEDATE в DB2 Access View или к чтению данных с типом TIMESTAMP из DB2 в Query View (вне зависимости от того, откуда они взяты: из DB2 Access View или же из других таблиц DB2).
Существует два варианта сохранения даты и времени в DB2 Access View: локальное (местное) время или время, измененное в соответствии с GMT (стандартизованное). Вы можете изменить способ работы с ними, используя параметр "Normalize to GMT for time zone conversions" на закладке Advanced окна свойств Access View Entry.
2.2.3 Размещение диапазонов дат в DB2 Access View
При вставке или обновлении диапазонов дат в документе, расположенном внутри DB2 Access View через SQL, необходимо определить диапазоны дат в полном формате временной отметки DB2, например такой, как yyyy-mm-dd-hh.mm.ss.subsec (год-месяц-день-час.минута.секунда.миллисекунда) или 2005-12-12-08.06.30.123456. Если при выполнении данного этапа произошла ошибка, вставленное значение будет не определено или равно нулю.
2.2.4 Проверка статуса DB2 Access View
При выборе DB2 Access View в Domino Designer показывается список всех DB2 Access View, находящихся в базе данных. Перед каждым DB2 Access View отобразится иконка, показывающая его статус. Данные иконки с соответствующими расшифровками приведены на рис. 2.7.
2.2.5 На что еще обратить внимание при создании DB2 Access View
Вы можете создать сколь угодно много DB2 Access View в базе данных, например по одному на каждую форму. Но может оказаться проще создать один или два больших DB2 Access View и включить в них данные из всех форм, к которым вы хотите иметь доступ. Чтобы ограничить количество столбцов в DB2 Access View, попробуйте использовать одинаковое имя для соответствующих полей в разных формах.
Domino невероятно гибок, когда дело доходит до полей и соответствующих им типов данных. Два документа, основанных на одной и той же форме, в Lotus Notes и Domino могут иметь разные типы данных. Это преимущество в гибкости может вызвать проблемы, например когда вы попытаетесь создать DB2 Access View. DB2 крайне строга по отношению к типам данных. Необходимо будет часто чистить данные в базе данных, а также быть уверенным в том, что содержимое всех полей, использованных в DB2 Access View, обладает одним и тем же типом данных.
Если в документе Lotus Notes будет потеряно какое-либо поле, или значение этого поля будет отсутствовать, то никаких проблем не возникнет. В DB2 Access View значение такого поля будет просто установлено =NULL, и при любых запросах, касающихся этого поля, будет отображаться пустое значение. Поля с типом rich text и formula не поддерживаются в DB2 Access View. Если вы включите такие поля в DB2 Access View, то сообщения об ошибке выдаваться не будет, но вместо содержимого поля будет отображаться NULL.
Размеры DB2 Access View и его элементов (таблиц, видов, триггеров и индексов) не включаются в итоговый размер файла базы данных Lotus Notes с поддержкой DB2, для которой оно было создано. Таким образом, если у вас есть множество DB2 Access View, связанных с базой данных Lotus Notes с поддержкой DB2, следует помнить, что они займут такое количество дискового пространства, которое будет превышать дисковое пространство, отведенное под саму базу данных Lotus Notes с поддержкой DB2. Но опасения, что DB2 Access Views будут занимать большее количество дискового пространства, оказались необоснованными. На ранних этапах тестирования в IBM было показано, что даже DB2 Access View с большим количеством столбцов обычно занимает всего лишь от 2% до 3 % от дискового пространства, занимаемого базой данных.
2.2.6 Применение DB2 Access View в рамках приложения ITSO Electronics
В нашем сценарии, приведенном в качестве примера, компании ITSO Electronics требуется использовать новую возможность Query Views, к обсуждению которой мы перейдем в "Использование интеграции с DB2 для улучшения приложения ITSO Electronics" , "Query Views". Для того чтобы подготовить базу данных к использованию Query Views, нам необходимо создать несколько DB2 Access View. В этом примере мы решили использовать только по одному DB2 Access View на каждую базу данных Lotus Notes приложения ITSO Electronics.
Для начала создадим DB2 Access View для базы данных ITSO Electronics Sales, которую назовем SALESDAV.
В табл. 2.2 представлены выбранные поля.
Поле, включенное в DB2 Access View | Форма |
---|---|
ANumber AType ContactName |
Sales Activity Sales Activity Sales Activity |
CustomerName CustomerNumber MadeSale Product1 Product2 Product3 Product4 SName SNumber SPhone STitle FORM |
Sales Activity Sales Activity Sales Activity Sales Activity Sales Activity Sales Activity Sales Activity Sales Activity, Sales Person Sales Activity, Sales Person Sales Person Sales Person Sales Activity, Sales Person |
Следующий DB2 Access View, который мы создадим в базе данных ITSO Electronics Customer, будет называться CUSTOMERDAV (см. табл. 2.3).
Поле, включенное в DB2 Access View | Форма |
---|---|
customerAddress CustomerDescription customerName customerNumber ownerName FORM |
Customer Customer Customer Customer Customer Customer |
И, наконец, мы создадим DB2 Access View в базе данных ITSO Electronics Products и назовем его CUSTOMERDAV.
Поле, включенное в DB2 Access View | Форма |
---|---|
productDescription SupplierAddress SupplierDescription SupplierName SupplierNumber |
Product Supplier Product, Supplier Supplier Product, Supplier |
productName productNumber |
Product Product |
FORM | Product, Supplier |
В дальнейшем мы используем эти DB2 Access Views при создании Query View, которое рассмотрено в "Использование интеграции с DB2 для улучшения приложения ITSO Electronics" , "Query Views".
2.3 Query Views
Query Views – это новый тип видов в базе данных Notes (NSF). Они заполняются путем выполнения запросов, написанных на языке структурированных запросов (SQL). На первый взгляд кажется, что виды Query Views – это всего лишь еще один способ сбора и представления данных. Однако при более пристальном изучении становится очевидно, что Query Views заставляют вас по-новому посмотреть на данные в Lotus Domino. Здесь впервые возможно отображать информацию более чем из одной базы данных Lotus Notes в пределах одного вида. Вы можете использовать приведенные ниже конструкции SQL.
- Оператор Join.
Документы, находящиеся в несвязанных элементах разных DB2 Access View, объединяются в одну строку в Query View. Полностью этот процесс описан в "Использование интеграции с DB2 для улучшения приложения ITSO Electronics" , "Создание Query View с помощью оператора Join".
- Оператор Union.
Элементы из различных DB2 Access Views собираются в одно представление. Мы остановимся более подробно на этом аспекте в "Использование интеграции с DB2 для улучшения приложения ITSO Electronics" , "Создание Query View с помощью оператора Union".
- Условие Group by.
- Условие Having.
Запросы динамически строятся на основе языка SQL и не занимают места в базе данных. SQL-выражение, в свою очередь, может быть динамически построено с использованием языка формул Lotus Notes. Вы можете свободно использовать такие @-формулы, как @Username и @Today, не опасаясь возникновения проблем с индексированием, которые могли бы возникнуть в стандартных представлениях Lotus Notes. Можно даже управлять содержимым представления с помощью @-формулы взаимодействия пользователя с системой @Prompt. Описанием подобного рода аспектов мы займемся в "Использование интеграции с DB2 для улучшения приложения ITSO Electronics" , "Динамическое создание Query Views с помощью @-формул".
2.3.1 Создание Query View
Query View не способен напрямую отображать данные документа Lotus Domino. Чтобы сделать это, необходимо в первую очередь, создать DB2 Access View, как описано в "Использование интеграции с DB2 для улучшения приложения ITSO Electronics" , "Создание DB2 Access Views". Затем можно приступить к созданию Query View, выполнив приведенную ниже последовательность действий.
- В Domino Designer перейдите к представлениям ( Views ). Щелкните по кнопке New View. В окне Create View, в разделе Selection conditions выберите By SQL Query (В соответствии с запросом SQL), как это показано на рис. 2.8.
- Далее введите SQL-выражение для создаваемого представления. В
"Использование интеграции с DB2 для улучшения приложения ITSO Electronics"
, "Динамическое создание Query Views с помощью @-формул", будет рассказано, как вы можете динамически создавать SQL-выражения, основываясь на языке @-формул. Для того чтобы воспользоваться этой возможностью, статические операторы SQL необходимо заключить в кавычки, как показано в примере 2.1.
"SELECT * FROM SALES.SALESDAV"
Пример 2.1. Операторы SQL должны быть заключены в кавычкиВажно Когда вы создаете SQL-выражение для Query View, точно не известно, будет ли текущее название схемы DB2 окончательным. Для того чтобы быть уверенным в том, что вы ввели правильное название схемы, лучше всего использовать динамические SQL-выражения, речь о которых пойдет в "Использование интеграции с DB2 для улучшения приложения ITSO Electronics" , "Динамическое создание Query Views с помощью @-формул". - Когда вы написали SQL-выражение, можно определить столбцы представления. Это делается так же, как и в случае с обычными представлениями.
- Чтобы посмотреть результат, щелкните по кнопке Notes Preview (Предварительный просмотр Notes). Обращаем ваше внимание на то, что кнопка Refresh на панели программирования не позволяет увидеть представление в Domino 7.
Возможно, вы захотите разделить на части ваше SQL-выражение и записать его в несколько строк для удобочитаемости, как показано в примере 2.2, однако применение такого метода при написании SQL-выражений приведет к появлению сообщений об ошибках.
"SELECT SALES.SALESDAV.CUSTOMERNAME FROM SALES.SALESDAV"Пример 2.2. Такой способ написания SQL-выражений вызовет появление сообщений об ошибках
Когда мы работали над созданием приложения ITSO Electronics, то пришли к выводу, что написание SQL-выражений в виде строк, объединенных знаком "+", позволяет достигнуть той же легкости при чтении и что, самое главное, они работают в Lotus Domino 7. См. пример 2.3. Каждая часть SQL-выражения должна быть заключена в кавычки.
"SELECT "+ "SALES.SALESDAV.CUSTOMERNAME "+ "FROM "+ "SALES.SALESDAV"Пример 2.3. Этот способ написания SQL-выражений удобочитаем и работает
Язык SQL позволяет использовать упрощенный способ написания SQL-выражений, в котором используются псевдонимы для источников данных. Код программы, представленный в примере 2.3, можно переписать по-другому (см. пример 2.4). Хотя фактически разницы нет, впоследствии этот способ написания SQL-выражений поможет вам понять более сложные примеры.
"SELECT "+ "S.CUSTOMERNAME "+ "FROM "+ "SALES.SALESDAV S"Пример 2.4. SQL-выражение, написанное более простым способом с помощью псевдонимов
2.3.2 Создание Query View с помощью оператора Join
В Lotus Domino 7 вы можете соединить данные из различных DB2 Access Views в один Query View. При этом не играет никакой роли, находятся ли DB2 Access Views в одной базе данных или в разных. Каждый элемент представления может показывать связанные данные, взятые из различных документов, что возможно благодаря DB2 Access Views.
На рис. 2.9 показано, как информация из DB2 Access Views ORDERDAV и CUSTOMERDAV объединяется в ResultSet SQL.
В примере 2.5 показано соответствующее SQL-выражение, которое было использовано для этой цели.
"SELECT "+ "S.AType, S.Anumber,S.Product1 , C.CUSTOMERNAME, C.OWNERNAME, "+ " S.CUSTOMERNUMBER, S.MadeSale "+ "FROM "+ "SALES.SALESDAV S "+ "Left outer JOIN "+ "CUSTOMER.CUSTOMERDAV C "+ "ON "+ "S.CustomerNumber=C.CustomerNumber "+ "WHERE "+ "C.OWNERNAME<>''"Пример 2.5. SQL-выражение, использующее оператор Join для создания Query View
На рис. 2.10 показано представление Customer Sales, созданное на основе SQL-выражения, рассмотренного в примере 2.5.