® Information Management © 2005 IBM Corporation IBM Software Group Новые тенденции управления данными в продуктах компании IBM
Information Management 2 Agenda Part I – XML: Почему и Где Part II – Native XML в DB2 Viper Part III – Немного о других новых возможностях DB2 Viper Part III – Informix Dynamic Server 10 Part IV – Вопросы и ответы
Information Management 3 Гибкость Запросов XQuery and/or SQL XML and/or Relational Data Обмен XML документами XML Столбцы В RDBMS Репозитории контента Иерархические БД Реляционные БД Цифровой Content Производительность Масштабируемость, Доступность Безопасность… Гибридные возможности гибкая инфраструктура XML БД Независимость приложений Эволюция комплексных схем Последовательности и иерархии Files Возрастающая важность XML Формат обмена документами Web Services Обмен метаданными Модель программирования Глубокая XML интеграция упрощает и объединяет инфраструктуру Объединяет данные и Content Расширяет использование активов Native XML хранилище Оптимизация производительности Предоставление гибкости Поддержка природы XML Сервисы БД XML and Information on Demand
Information Management 4 Типичные сценарии использования XML Интеграция разрозненных источников данных Обмен информацией между приложениями и организациями eForms и системы workflow Управление наполнением и документами Транзакции основанные на сообщениях, web services, SOA XML документы как бизнес объекты/ транзакционные записи (цифровая подпись, аудит, соответствие регулирующему законодательству) XML как модель данных лучше подходит для (множественных значений, иерархий и комплексных данных)
Information Management 5 Пример 1: Финансовые данные (FIXML) Покупка 1000 акций компании IBM. 8=FIX.4.2^9=251^35=D^49=AFUNDMGR^56=ABROKER^34=2 ^52= :14:49^11=12345^1=111111^63=0^64= ^21=3^110=1000^111=50000^55=IBM^48= ^22= 1^54=1^60= :14:4938=5000^40=1^44=15.75^15=USD ^59=0^10=127 Новый FIXML протокол Расширяемый Снижает затраты на поддержку и разработку Старый протокол FIX
Information Management 6 Почему нужно использовать XML с БД ? Управление большими объемами это проблема для БД! Эффективный поиск и извлечение XML ACID Производительность, Масштабируемость …те же причины что и для реляционных данных! Интеграция Интеграция новых XML данных с существующими реляционными данными Публикация (реляционных) данных как XML Поддержка для web приложений, SOA, web служб (SOAP)
Information Management 7 XML-Enabled Databases: две опции XML DOC Извлечение определенных элементов/ атрибутов Сторонние таблицы CLOB/Varchar XML DOC XML DOC varchar CLOB Фиксированное отображение Shredder (regular tables for faster lookup) Обычные таблицы Decompositon Shredding
Information Management 8 Проблемы XML-enabled Databases Хранение как CLOB: Выполнение запроса требует разбора XML (Parsing) – медленно ! Нарезка: Отображение из XML в реляционные таблицы часто слишком сложно Часто требует десятки, а то и сотни таблиц Требуются сложные Complex разнонаправленные соединения(joins) для восстановления XML документа При изменение схемы XML ломается mapping Нет гибкости в схеме ! Например: изменение элемента, теперь он может встречаться в документе один и более раз. Это требует нормализации реляционной схемы и данных
Information Management 9 Нарезка: Простой пример 10 CHRISTINE SMITH MICHAEL THOMPSON
Information Management 10 Нарезка: Изменение схемы… 10 CHRISTINE SMITH MICHAEL THOMPSON Требует: Нормализации текущих данных ! Изменение отображения Изменения приложения Costly!
Information Management 11 Зачем native XML хранилище? Много данных в реляционных БД И это не будет меняться… так как SQL DBs быстрые XML формат обмена Web Services везде XML как артефакт транзакции Все больше и больше данных представляются в формате XML с самого начала… Держать XML как XML Каждая трансформация (нарезка) затратка И потенциально ведет к потерям информации XML может быть слишком сложным для нарезки Иерархический XML более адаптирован к человеческому мышлению
Information Management 12 XML в DB2 DB2 с Native XML Support SQL Developer… Я вижу комплексную РСУБД которая так же поддерживает XML" XML Developer… Я вижу комплексный XML репозиторий XML который так же поддерживает SQL" XML интегрирован во все аспекты DB2! XML
Information Management 13 XML в DB2 SQL и XML одинаковы в DB2 Множество интерфейсов для запросов SQL/XML и XQuery Оба языка имеют полный доступ ко всем хранимым данным Выбор представления данных которое больше подходит для приложения XML возможности встроены в DB2 Глубока интеграция XML подразумевает высокую производительность! Оптимизированное хранение данных Новое хранилище и индексы для XML Сервер Клиент SQL/XML XQuery DB2 Engine XML Interface Relational Interface Relational XML DB2 Storage: DB2 Client / Customer Client Application
Information Management 14 Обзор Интерфейса Определение данных create table dept(deptID int, deptdoc xml); Вставка insert into dept(deptID, deptdoc) values (?,?) Индексирование create index xmlindex1 on dept(deptdoc) generate key using xmlpattern /dept/name as varchar(30); Извлечение select deptdoc from dept where deptID = ? Запросы select deptID, xmlquery('$d/dept/name' passing deptdoc as d") from dept where deptID PR27;
Information Management 15 0dept 4employee 1name 5id 2phone 3office String table 0/ 1/0 2/0/4 3/0/4/5 4/0/4/1 5/0/4/2 6/0/4/3 Path table Разбор документа dept name phone employee office id name phone employee office id 901 John Doe Peter Pan SYSIBM.SYSXMLPATHS XML Documents парсится в соответствии с XQuery Data Model Создаются дополнительная информация в каталоге Строки и пути хранятся в каталоге DB2 Компрессия строк сохраняет место SYSIBM.SYSXMLSTRINGS
Information Management 16 Хранение документа Иерархия узлов XML Документа хранится на страницах DB2 Если документ не помещается на одну страницу он разбивается на страницы/регионы Управляемый системой индекс регионов указывает на части документа page Regions index
Information Management 17 Размер страницы для хранения XML Большие документы разбиваются на регионы Максимальный размер документа 2GB
Information Management 18 Индексирование B-tree индексы расширены для управления XML документами Дополнительные поля PATHID: путь к значению VALUE: индексированное значение DOCID: Идентификатор документа NODEID: узел в котором хранится значение Дополнительные техники при поиске по индексам Pivot Join (Zig-Zag join) Конкурентная проверка предикатов and и or Множество курсоров на индексе каждый проверяет предикат … A=4, docid=2 A=5, docid=3 A=5, docid=4 A=5, docid=5 A=5, docid=7 A=5, docid=8 A=5, docid=9 A=5, docid=10 A=5, docid=11 A=5, docid=12 … B=6, docid=1 B=6, docid=2 B=6, docid=6 B=6, docid=12 … Find docids where x/y[A=5 and B=6]
Information Management 19 Индексирование AS SQL VARCHAR (integer) CREATE index-name ON table-name(xml-column-name) GENERATE KEY USING XMLPATTERN xmlpattern UNIQUE / // element-tag * / // INDEX DOUBLE DATE TIMESTAMP VARCHAR (HASHED) xmlpattern: xmlpattern XPath без предиката create index idx1 on dept(deptdoc) generate key using xmlpattern '/dept/employee/name' as sql varchar(35)
Information Management 20 Document Retrieval using SQL Retrieve XML documents Select i, deptdoc from dept Retrieve some XML documents based on SQL Predicate Select deptnum, deptdoc from dept Where deptnum like PR%
Information Management 21 Поиск по документу используя XQuery Полная поддержка XQuery и XPath 2.0 Включаяя FLWOR встроенный (nested) FLWOR XQuery по всем документам в столбце FOR $d in db2-fn:xmlcolumn(dept.deptdoc)… XQuery по документам используя SQL предикаты FOR $d in db2-fn:sqlquery(select deptdoc from dept where deptID LIKE PR% )…
Information Management 22 Выражение FLWOR FOR : проходит по последовательности документов, LET : привязка переменных к элементам WHERE : фильтрация элементов итерации ORDER : перегруппирует элементы итерации RETURN : конструирует результаты запроса FOR $movie in db2-fn:xmlcolumn(table1.movies) LET $actors := $movie//actor WHERE $movie/duration > 90 ORDER by RETURN {$movie/title, $actors} Chicago Renee Zellweger Richard Gere Catherine Zeta-Jones
Information Management 23 John Doe Peter Pan John Doe Peter Pan Выражение FLWOR John Doe Peter Pan for $d in xmlcolumn(deptdoc)/dept where = 101 return {$d/employee/name} Результат не обязательно XML ! for $d in xmlcolumn(deptdoc)/dept where = 101 return $d/employee/name/text() for $d in xmlcolumn(deptdoc)/dept where = 101 return $d/employee/name John Doe Peter Pan create table dept (deptID char(8), deptdoc xml);
Information Management 24 XQuery с объединением for $book in db2-fn:xmlcolumn('BOOKS')/book for $entry in db2-fn:xmlcolumn('REVIEWS')/entry where $book/title = $entry/title return {$entry/review/text()} ;
Information Management 25 SQL/XML – Лучшее от общих от обоих миров Все возможности SQL для обработки реляционных столбцов Все возможности XQuery и XPath 2.0 для адресации и трансформации XML документов Объединение XML документов и таблиц Предикаты как SQL так и XML Создание XML из структурированных полей Материализация таблиц и представлений из XML документов select d.deptID, u.headcount, xmlquery($deptdoc/dept/name passing d.deptdoc as deptdoc) from dept d, unit u where d.deptID = u.unitID and u.headcount > 200 and passing d.deptdoc as deptdoc) = u.bldg and xmlexists($deptdoc/dept/employee/name passing d.deptdoc as deptdoc)
Information Management 26 SQL/XML select d.deptID, xmlquery($deptdoc/dept/name passing d.deptdoc as deptdoc), u.empcount from dept d, unit u where d.unitID = u.unitID and u.empcount > 200 and passing d.deptdoc as deptdoc) = u.bldg and xmlexists($deptdoc/dept/name passing d.deptdoc as deptdoc) deptIDunitIDdeptdoc Dept unitIDEmpcountbldg 10234G 20123H 3032H Unit Engineering Anjul Susan Mary CW345
Information Management 27 SQL/XML – публикация XML документов FIRSTNAMELASTNAMEDEPARTMENT SEANLEEA00 MICHAELJOHNSONB01 VINCENZOBARELLIA00 SELECT XMLELEMENT (NAME "Department", XMLATTRIBUTES (e.department AS "name" ), XMLAGG ( XMLELEMENT(NAME "emp", e.firstname))) AS "department_list" FROM employee e GROUP BY e.department; department_list VINCENZO SEAN MICHAEL
Information Management 28 XMLTABLE - XML->relational USnull USBobby1325 ZipZipTypeNameCID SELECT X.* from XMLTABLE (db2-fn:xmlcolumn(PORDERS.PO)//customer COLUMNS CID INTEGER Name VARCHAR(30) PATH name, ZipType CHAR(2) PATH Zip XML PATH zip ) AS X
Information Management 29 Функции публикации SQL/XML Скалярные функции XMLELEMENT – generate XML element XMLATTRIBUTES - used within XMLELEMENT, specifies attributes XMLFOREST - produces a forest of XML elements from SQL values XMLCONCAT - concatenates a variable number of XML values XMLNAMESPACES – produces a namespace declarations Функции агрегации XMLAGG - to group or aggregate XML data Табличные XMLTABLE – materializes a table from XML documents Функции преобразования типов XMLCAST - converts between XML data type and standard relational types XMLSERIALIZE – converts XML data type to serialized XML as a char/varchar/clob/blob
Information Management 30 JDBC API Enhancements for XML Поддержка нового XML типа Поддержка нового интерфейса com.ibm.db2.jcc.DB2Xml Поддержка XQuery Поддержка регистрации XML Schema Type Code java.sql.Types.OTHER до тех пор пока не появится новый тип JDBC java.sql.Types.XML
Information Management 31 Sample Java Program PreparedStatement stmt1 = con.prepareStatement("Select doc from dept where id = 001 ); ResultSet rs = stmt1.executeQuery(); rs.next(); String xmlString = rs.getString(1); InputStream is = rs.getBinaryStream(1); com.ibm.db2.jcc.DB2Xml xml = (com.ibm.db2.jcc.DB2Xml) rs.getObject (1); String xmlString = xmlOut.getDB2String(); InputStream is = xmlOut. getDB2XmlBinaryStream("ISO UCS-2); … = xmlOut.getDOM() or xmlOut.getSAX(); //future PreparedStatement stmt2 = con.prepareStatement("update dept set doc = ? where id = 001); stmt2.setObject(1, xmlOut); stmt2.setBinaryStream(1, new FileInputStream(file), (int)file.length()); stmt2.setString(1, xmlString); stmt2.executeUpdate(); create table dept (id char(8), doc xml);
Information Management 32 Sample Java Program – XQuery PreparedStatement stmt=null; ResultSet rs; String sqls = "XQUERY "+ "for $info in db2- fn:sqlquery('SELECT info FROM CUSTOMER WHERE cid > ?') "+ "where England\"] "+ "return $info/*:customerinfo/*:phone/text()"; stmt = conn.prepareStatement(sqls); stmt.setInt(1, cidToFilter); rs = stmt.executeQuery(); create table customer (customerinfo xml);
Information Management 33 DB2.NET XML Support DB2.NET Provider DB2Xml - Инкапсулирует тип XML Любой доступ к XML типу осуществляется через другие объекты основанные на XML (XmlReader, XPathDocument) Методы доступа к XML столбцам DB2Xml.GetXmlReader DB2Xml.GetString DB2Xml.GetBytes DB2DataReader DB2Command XML Input и Output Parameters DB2Type.Xml Поддержка XQuery DB2XmlCommand DB2XmlAdapter Поддержка XmlSchema.NET
Information Management 34 Sample.NET Program - XQuery DB2XmlCommand xcmd = new DB2XmlCommand(); //Retrieve the name of all employees in department #100 xcmd.CommandText = for $e in db2-fn:xmlcolumn (EMPLOYEE.EMPINFO)/employee where $e/deptno = 100 return {$b/name} //Set the root tag xcmd.RootTag = deptlist; //Retrieve the result of the xquery expression as an XmlReader //the result will be wrapped with XmlReader xrdr = xcmd.ExecuteXmlReader(); //Retrieve the result of the xquery expression as a Stream Stream xmlstream = xcmd.ExecuteStream() create table employee (empinfo XML) )
Information Management 35 Проверка с помощью XML Schemas Проверка опциональна и осуществляется на уровне документа Без проверки insert into dept(deptdoc) values (?) С проверкой insert into dept(deptdoc) values (xmlvalidate(?)) Схема может быть перезаписана и указывать на схему в репозитории DB2 insert into dept(deptdoc) values ( xmlvalidate(? according to xmlschema id ibm.invoice) insert into dept(deptdoc) values ( xmlvalidate(? according to xmlschema uri
Information Management 36 Управление XML Schema Репозиторий XML Schema (XSR) Хранит зарегистрированные схемы Управляется как часть каталога DB2 Таблицы и представления создаются автоматически SYSCAT.XSROBJECTS, SYSCAT.XSROBJECTCOMPONENTS SYSCAT.XSROBJECTAUTH, SYSCAT.XSROBJECTHIERARCHIES Интерфейс командной строки, API, Хранимые процедуры Хранимые процедуры РегистрацияXSR_REGISTER(rschema, name, schemalocation, content, docproperty) AddXSR_ADDSCHEMADOC(rschema, name, schemalocation, content, docproperty) CompleteXSR_COMPLETE(rschema, name, schemaproperties, isusedforshred)
Information Management 37 Аннотация схемы для Нарезки Отображение из XML в реляционные таблицы Отображение контролируется аннотациями XML в DB2 XSR АннотацияЦель db2-xdb: defaultSQLSchema The default schema for the table names db2-xdb :rowSet The table name the element/attribute should be mapped to db2-xdb :column The column name of the table the item should be mapped to db2-xdb :contentHandling Text value, string value or xml fragment to be treated as the content to be inserted into the database db2-xdb :truncate Truncate content if the size is greater than the specified size in the database db2-xdb :normalization White space treatment db2-xdb :expression Custom expressions to apply to the data before insert db2-xdb :condition Conditions to apply to rows before insert db2-xdb :tableMapping Multiple mappings, to same or different tables, for an element/attribute db2-xdb :dependence Referential constraints
Information Management 38 ……. ….
Information Management 39 DB2 Development Workbench Server Explorer Project Explorer Properties & Output Area Visualization & Editors Eclipse based Support for XML type in tables, views, SPs and UDFs Support for XML Index Support for XML type in SQL Query Builder Graphical XML Query Builder XSD (XML Schema) Editor XML Editor XML viewer Support for XML Schema registration XML & XSL Parsers XML Relational mapping
Information Management 40 XQuery Builder Java Graphical XQuery builder Supports selecting from actual documents to build query Can view in progress XQuery statement Save Statements for re-use Execute and view results
Information Management 41 MS Visual Studio.NET – DB2 XML add-in.NET Server Explorer XML Editor XML Schema Editor XSR Registration XML Index Builder
Information Management 42 DB2 Viper в Storebrand Лидирующий игрок, на рынке страхования здоровья и жизни, управления активами и ценными бумагами в Норвегии. Пионеры в адаптации SOA, Web Services и XML в информационных системах Senior Enterprise Architect Thore Thomassen тесно работал IBM на протяжении Viper Alpha Преимущество Native XML в сравнительных тестах Сокращение времени разработки внутренних отчетов с более чем 1 day до 10 минут Сокращение составляющей I/O для Web services в среднем на an 65% и сокращение времени поддержки на 20% Реализация изменения схемы до нескольких минут с целого дня прототипирования и тестирования и целой недели внедрения Реализация поиска и извлечения документов в соответствии с новыми требованиями в 30 минут, ранее требовалось 2 часа with decomposition and 8 hours with CLOB.
Information Management 43 Partner Solutions JustSystem
Information Management 44 Немного о других новых возможностях STTM – самонастраиваемая и конфигурируемая память DBMS LBAC – Ограничение доступа на уровне строк Hybrid Partitioning Компрессия данных Улучшения в Резервном копировании etc…
Information Management 45 Автоматизация автоматически! Включение множества автономных возможностей по умолчанию. Примеры: Configuration Advisor (2 second tuning) Adaptive Self Tuning Memory Автоматический сбор статистики. Автоматическое вычисление параметров I/O Значения вычисляются во время запуска Основываются на кол-ве CPU расположении дисков
Information Management 46 STMM в действии – Удаление важного индекса TPCH Query 21 - After drop index - Average times for the 10 streams Order of execution Time in seconds Avg = 959 Avg = 2285 Avg = 6205 Reduced 63% Indexes Dropped
Information Management 47 Security - Label Based Access Control Label Based Access Control (LBAC) label ассоциирован как с пользовательской сессией так и со строками Правила (Rules) проверяют метки пользователей и строк для выявления прав Labels могут состоять из множества компонентов Иерархия, группа и массив Метка на строку есть дополнительный вне зависимости от количества компонентов метки Пользовательские метки выдаются security administrator Похожа на поддержку LBAC в DB2 для z/OS v8
Information Management 48 LBAC Hierarchy Update/Read A 255 B 250 B1 100 B B B B2 100 C 254D 253 A1 254 A 255 B 250 B1 100 B B B B2 100 C 254D 200
Information Management 49 Hybrid Partitioning 999 Machines HASH RANGE 32K Partitions 64G A-C 64G D-M 64G N-Q 64G R-Z MDC
Information Management 50 Region Year East 97 NorthSouth West th Block BID = 0-0 Pg 0 Pg 1 Pg 2 Pg 3 Pg 20 Pg 21 5th Block BID = Pg 22 Pg 23 Block INDEX ANDing CREATE TABLE SALES (Customer VARCHAR(80), Region CHAR(5), Year INT) ORGANIZE BY DIMENSIONS (Region, Year) SELECT * FROM SALES WHERE Region = 'West' AND Year = 00 'West' BIDs: 16-0, 20-0 '00 BIDs: 16-0 Result of AND: 16-0 Retrieve block 16-0 in one I/O Mini-relation scan retrieves all records in block CREATE INDEX i1 ON SALES (Customer) SELECT * FROM SALES WHERE Region='East' AND Customer='Joe' 'East' BIDs: 0-0, 4-0 'Joe' RIDs: 0-3, 0-211, 2-97, 7-1, Filter out RIDs not in page range indicated by BIDs 0-3, 0-211, 2-97, 7-1 Directly fetch those records "AND"ing RID and Block INDEXes Примеры обработки запросов MDC изнутри
Information Management 51 Row Compression используется LZV John, Dept 500, 20000, Plano, TX, Компрессия множества строк в одну страницу не эффективно с точки зрения БД. Fred, Dept 500, 10000, Plano, TX, 24355, … Fred, Dept 500, 10000, Plano, TX, 24355, …John, Dept 500, 20000, Plano, TX, 24355
Information Management 52 Row Compression Using Side Tables John, Dept 500, 20000, Plano, TX, 24355, Site 3 Сторонние таблицы содержат повторяющуюся информацию из строк. Fred, Dept 500, 10000, Plano, TX, 24355… Fred, (01), 10000, (02), John, (01), 20000, (02) 01Dept Plano, TX, ……
Information Management 53 DB2 - More Compression Ratios (Customer Data) Compression Type32KB Page CountSpace Required on Disk No compression GB Row compression GB % Pages Saved: 76.4%
® Information Management © 2005 IBM Corporation IBM Software Group Informix Dynamic Server 10
Information Management Запросы рынка, Technology & заказчиков партнеров Интеграция с IBM Software Улучшения Автономности MDC MQT Март 2003 Производительность Backup & Restore HDR & ER сосуществование Удаление ограничений на размеры. Мониторинг, Утилиты IBM Informix Dynamic Server Roadmap IDS v10.5 IDS v9.40 IDS v10 IDS vNext 2H 2006 Запросы рынка, Technology & заказчиков партнеров Интеграция с IBM Software Автономность (Online Table Reorg, GUI, SQL) Q Безопасность Устойчивость/Высокая доступность Разработка Соответствие стандартам Автономность/ Простота администрирования Интеграция с IBM SWG Запросы клиентов и партнеров
Information Management 56 Increase in Nightly Builds and Tests (IDS(4), CSDK, GLS, 4GL)
Information Management 57 IDS Уменьшение кол-ва ошибок IDS 9.21 IDS 9.30 IDS 9.40 IDS 7.31 Defect Backlog 9.30.UC7 – 250 fixes 7.31.UD UD UC3
Information Management 58 Общие возможности Общие комопоненты Инвестиции В продукты Начальные продукты Re-factor to SWG Product Offerings Componentization and Formation of Substrates Product Specific Investment Product Specific Investment Product Specific Investment Product Specific Investment Product Specific Investment Lotus DB2/Informix WebSphere Tivoli Rational Lotus Tivoli Rational Tivoli Rational WebSphere DB2/Informix Lotus WebSphere components DB2/Informix Lotus WebSphere Tivoli DB2/Informix IBM Software Portfolio – использование компонентов
Information Management 59