Опубликован: 04.07.2008 | Уровень: профессионал | Доступ: платный | ВУЗ: Компания IBM
Лекция 2:

Использование интеграции с DB2 для улучшения приложения ITSO Electronics

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >

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.

Замечание Если этот параметр изменен в существующем DB2 Access View, вы должны будете перестроить DB2 Access View.

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.

Иконки, символизирующие статус каждого DB2 Access View

Рис. 2.7. Иконки, символизирующие статус каждого DB2 Access View

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 представлены выбранные поля.

Таблица 2.2. DB2 Access View SALESDAV в базе данных Sales
Поле, включенное в 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).

Таблица 2.3. DB2 Access View CUSTOMERDAV в базе данных Customer
Поле, включенное в DB2 Access View Форма
customerAddress

CustomerDescription

customerName

customerNumber

ownerName

FORM

Customer

Customer

Customer

Customer

Customer

Customer

И, наконец, мы создадим DB2 Access View в базе данных ITSO Electronics Products и назовем его CUSTOMERDAV.

Таблица 2.3. DB2 Access View CUSTOMERDAV в базе данных Customer
Поле, включенное в 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.

Запросы динамически строятся на основе языка 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, выполнив приведенную ниже последовательность действий.

  1. В Domino Designer перейдите к представлениям ( Views ). Щелкните по кнопке New View. В окне Create View, в разделе Selection conditions выберите By SQL Query (В соответствии с запросом SQL), как это показано на рис. 2.8.
    Окно Create View

    Рис. 2.8. Окно Create View
  2. Далее введите SQL-выражение для создаваемого представления. В "Использование интеграции с DB2 для улучшения приложения ITSO Electronics" , "Динамическое создание Query Views с помощью @-формул", будет рассказано, как вы можете динамически создавать SQL-выражения, основываясь на языке @-формул. Для того чтобы воспользоваться этой возможностью, статические операторы SQL необходимо заключить в кавычки, как показано в примере 2.1.
    "SELECT * FROM SALES.SALESDAV"
    Пример 2.1. Операторы SQL должны быть заключены в кавычки
    Вы обращаетесь к DB2 Access View в базе данных, используя название схемы DB2 и название DB2 Access View: DB2SCHEMANAME.DAVNAME. В примере 2.1 DB2 Access View было присвоено имя SALES.SALESDAV. Когда вы размещаете базу данных на сервере, название схемы DB2 обычно является частью имени файла без расширения "NSF". В нашем примере SALES.NSF стало SALES. Если такое название схемы DB2 уже используется, то она будет называться SALES2, SALES3 и т. д.
    Важно Когда вы создаете SQL-выражение для Query View, точно не известно, будет ли текущее название схемы DB2 окончательным. Для того чтобы быть уверенным в том, что вы ввели правильное название схемы, лучше всего использовать динамические SQL-выражения, речь о которых пойдет в "Использование интеграции с DB2 для улучшения приложения ITSO Electronics" , "Динамическое создание Query Views с помощью @-формул".
  3. Когда вы написали SQL-выражение, можно определить столбцы представления. Это делается так же, как и в случае с обычными представлениями.
  4. Чтобы посмотреть результат, щелкните по кнопке 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.

Создание Query Views, с использованием оператора Join

увеличить изображение
Рис. 2.9. Создание Query Views, с использованием оператора Join

В примере 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.

Query View, созданный при помощи оператора Join

увеличить изображение
Рис. 2.10. Query View, созданный при помощи оператора Join
< Лекция 1 || Лекция 2: 12345 || Лекция 3 >
Артем Поммер
Артем Поммер
Россия, Омск
Артур Гибадуллин
Артур Гибадуллин
Россия, Нижневартовск, ФГБОУ ВО НВГУ, Преподаватель