'

Новые тенденции управления данными в продуктах компании IBM

Понравилась презентация – покажи это...





Слайд 0

Новые тенденции управления данными в продуктах компании IBM Nikolay_Kulikov@ru.ibm.com


Слайд 1

2 Agenda Part I – XML: Почему и Где Part II – Native XML в DB2 Viper Part III – Немного о других новых возможностях DB2 Viper Part III – Informix Dynamic Server 10 Part IV – Вопросы и ответы


Слайд 2

3 Гибкость Запросов Files Возрастающая важность XML Формат обмена документами Web Services Обмен метаданными Модель программирования Глубокая XML интеграция упрощает и объединяет инфраструктуру Объединяет данные и Content Расширяет использование активов Native XML хранилище Оптимизация производительности Предоставление гибкости Поддержка природы XML Сервисы БД XML and Information on Demand


Слайд 3

4 Типичные сценарии использования XML Интеграция разрозненных источников данных Обмен информацией между приложениями и организациями eForms и системы workflow Управление наполнением и документами Транзакции основанные на сообщениях, web services, SOA XML документы как бизнес объекты/ транзакционные записи (цифровая подпись, аудит, соответствие регулирующему законодательству) XML как модель данных лучше подходит для (множественных значений, иерархий и комплексных данных)


Слайд 4

5 Пример 1: Финансовые данные (FIXML) Покупка 1000 акций компании IBM. 8=FIX.4.2^9=251^35=D^49=AFUNDMGR^56=ABROKER^34=2 ^52=20030615-01:14:49^11=12345^1=111111^63=0^64=2003 0621^21=3^110=1000^111=50000^55=IBM^48=459200101^22= 1^54=1^60=2003061501:14:4938=5000^40=1^44=15.75^15=USD ^59=0^10=127 Новый FIXML протокол Расширяемый Снижает затраты на поддержку и разработку Старый протокол FIX


Слайд 5

6 Почему нужно использовать XML с БД ? Управление большими объемами это проблема для БД! Эффективный поиск и извлечение XML ACID Производительность, Масштабируемость …те же причины что и для реляционных данных! Интеграция Интеграция новых XML данных с существующими реляционными данными Публикация (реляционных) данных как XML Поддержка для web приложений, SOA, web служб (SOAP)


Слайд 6

7 XML-Enabled Databases: две опции XML DOC Извлечение определенных элементов/ атрибутов Сторонние таблицы CLOB/Varchar XML DOC XML DOC XML DOC XML DOC varchar CLOB Фиксированное отображение Shredder (regular tables for faster lookup) Обычные таблицы “Decompositon” Shredding


Слайд 7

8 Проблемы XML-enabled Databases Хранение как CLOB: Выполнение запроса требует разбора XML (Parsing) – медленно ! Нарезка: Отображение из XML в реляционные таблицы часто слишком сложно Часто требует десятки, а то и сотни таблиц Требуются сложные Complex разнонаправленные соединения(joins) для восстановления XML документа При изменение схемы XML ломается mapping Нет гибкости в схеме ! Например: изменение элемента, теперь он может встречаться в документе один и более раз. Это требует нормализации реляционной схемы и данных


Слайд 8

9 Нарезка: Простой пример <DEPARTMENT deptid="15" deptname="Sales"> <EMPLOYEE> <EMPNO>10</EMPNO> <FIRSTNAME>CHRISTINE</FIRSTNAME> <LASTNAME>SMITH</LASTNAME> <PHONE>408-463-4963</PHONE> <SALARY>52750.00</SALARY> </EMPLOYEE> <EMPLOYEE> <EMPNO>27</EMPNO> <FIRSTNAME>MICHAEL</FIRSTNAME> <LASTNAME>THOMPSON</LASTNAME> <PHONE>406-463-1234</PHONE> <SALARY>41250.00</SALARY> </EMPLOYEE> </DEPARTMENT>


Слайд 9

10 Нарезка: Изменение схемы… <DEPARTMENT deptid="15" deptname="Sales"> <EMPLOYEE> <EMPNO>10</EMPNO> <FIRSTNAME>CHRISTINE</FIRSTNAME> <LASTNAME>SMITH</LASTNAME> <PHONE>408-463-4963</PHONE> <PHONE>415-010-1234</PHONE> <SALARY>52750.00</SALARY> </EMPLOYEE> <EMPLOYEE> <EMPNO>27</EMPNO> <FIRSTNAME>MICHAEL</FIRSTNAME> <LASTNAME>THOMPSON</LASTNAME> <PHONE>406-463-1234</PHONE> <SALARY>41250.00</SALARY> </EMPLOYEE> </DEPARTMENT> Требует: Нормализации текущих данных ! Изменение отображения Изменения приложения Costly!


Слайд 10

11 Зачем native XML хранилище? Много данных в реляционных БД И это не будет меняться… так как SQL DBs быстрые XML формат обмена Web Services везде XML как артефакт транзакции Все больше и больше данных представляются в формате XML с самого начала… Держать XML как XML Каждая трансформация (нарезка) затратка И потенциально ведет к потерям информации XML может быть слишком сложным для нарезки Иерархический XML более адаптирован к человеческому мышлению


Слайд 11

12 XML в DB2


Слайд 12

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


Слайд 13

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”;


Слайд 14

15 Разбор документа dept name phone employee office id name phone employee office id 901 John Doe 344 408-555 1212 902 Peter Pan 216 408-555 9918 SYSIBM.SYSXMLPATHS XML Documents парсится в соответствии с XQuery Data Model Создаются дополнительная информация в каталоге Строки и пути хранятся в каталоге DB2 Компрессия строк сохраняет место SYSIBM.SYSXMLSTRINGS


Слайд 15

16 Хранение документа Иерархия узлов XML Документа хранится на страницах DB2 Если документ не помещается на одну страницу он разбивается на страницы/регионы Управляемый системой индекс регионов указывает на части документа page page page Regions index


Слайд 16

17 Размер страницы для хранения XML Большие документы разбиваются на регионы Максимальный размер документа 2GB


Слайд 17

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]


Слайд 18

19 Индексирование AS SQL VARCHAR (integer) CREATE index-name ON table-name(xml-column-name) GENERATE KEY USING XMLPATTERN xmlpattern UNIQUE 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)


Слайд 19

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%’


Слайд 20

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%’ ”)…


Слайд 21

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 $movie/@year RETURN <movie> {$movie/title, $actors} </movie> <movie> <title>Chicago</title> <actor>Renee Zellweger</actor> <actor>Richard Gere</actor> <actor>Catherine Zeta-Jones</actor> </movie>


Слайд 22

23 John Doe Peter Pan <namelist> <name>John Doe</name> <name>Peter Pan</name> </namelist> Выражение FLWOR <name>John Doe</name> <name>Peter Pan</name> for $d in xmlcolumn(‘deptdoc’)/dept where $d/@bldg = 101 return <namelist> {$d/employee/name} </namelist> Результат не обязательно XML ! for $d in xmlcolumn(‘deptdoc’)/dept where $d/@bldg = 101 return $d/employee/name/text() for $d in xmlcolumn(‘deptdoc’)/dept where $d/@bldg = 101 return $d/employee/name <dept bldg=“101”> <employee id=“901”> <name>John Doe</name> <phone>408 555 1212</phone> <office>344</office> </employee> <employee id=“902”> <name>Peter Pan</name> <phone>408 555 9918</phone> <office>216</office> </employee> </dept> create table dept (deptID char(8), deptdoc xml);


Слайд 23

24 XQuery с объединением for $book in db2-fn:xmlcolumn('BOOKS')/book for $entry in db2-fn:xmlcolumn('REVIEWS')/entry where $book/title = $entry/title return <review> {$entry/review/text()} </review>;


Слайд 24

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 xmlquery(‘$deptdoc/dept/@bldg’ passing d.deptdoc as “deptdoc“) = u.bldg and xmlexists(‘$deptdoc/dept/employee/name’ passing d.deptdoc as “deptdoc“)


Слайд 25

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 xmlquery(‘$deptdoc/dept/@bldg’ passing d.deptdoc as “deptdoc“) = u.bldg and xmlexists(‘$deptdoc/dept/name’ passing d.deptdoc as “deptdoc“) Dept Unit <dept bldg="G"> <name>Engineering</name> <manager>Anjul</manager> <backup>Susan</backup> <admin>Mary</admin> <chargecode>CW345</chargecode> </dept>


Слайд 26

27 SQL/XML – публикация XML документов 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;


Слайд 27

28 XMLTABLE - XML->relational SELECT X.* from XMLTABLE (‘db2-fn:xmlcolumn(“PORDERS.PO”)//customer’ COLUMNS “CID” INTEGER PATH ‘@id’, “Name” VARCHAR(30) PATH ‘name’, “ZipType” CHAR(2) PATH ‘zip/@type’, “Zip” XML PATH ‘zip’ ) AS “X”


Слайд 28

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


Слайд 29

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


Слайд 30

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-10646-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);


Слайд 31

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 $info/*:customerinfo/*:addr[@country=\"England\"] "+ "return $info/*:customerinfo/*:phone/text()"; stmt = conn.prepareStatement(sqls); stmt.setInt(1, cidToFilter); rs = stmt.executeQuery(); create table customer (customerinfo xml);


Слайд 32

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


Слайд 33

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 <deptlist> </deptlist> XmlReader xrdr = xcmd.ExecuteXmlReader(); //Retrieve the result of the xquery expression as a Stream Stream xmlstream = xcmd.ExecuteStream() create table employee (empinfo XML))


Слайд 34

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 ‘http://my.world.com’)


Слайд 35

36 Управление XML Schema Репозиторий XML Schema (XSR) Хранит зарегистрированные схемы Управляется как часть каталога DB2 Таблицы и представления создаются автоматически SYSCAT.XSROBJECTS, SYSCAT.XSROBJECTCOMPONENTS SYSCAT.XSROBJECTAUTH, SYSCAT.XSROBJECTHIERARCHIES Интерфейс командной строки, API, Хранимые процедуры


Слайд 36

37 Аннотация схемы для Нарезки Отображение из XML в реляционные таблицы Отображение контролируется аннотациями XML в DB2 XSR


Слайд 37

38


Слайд 38

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


Слайд 39

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


Слайд 40

41 MS Visual Studio .NET – DB2 XML add-in .NET Server Explorer XML Editor XML Schema Editor XSR Registration XML Index Builder


Слайд 41

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.


Слайд 42

43 Partner Solutions


Слайд 43

44 Немного о других новых возможностях STTM – самонастраиваемая и конфигурируемая память DBMS LBAC – Ограничение доступа на уровне строк Hybrid Partitioning Компрессия данных Улучшения в Резервном копировании etc…


Слайд 44

45 Автоматизация автоматически! Включение множества автономных возможностей по умолчанию. Примеры: Configuration Advisor (2 second tuning) Adaptive Self Tuning Memory Автоматический сбор статистики. Автоматическое вычисление параметров I/O Значения вычисляются во время запуска Основываются на кол-ве CPU расположении дисков


Слайд 45

46 STMM в действии – Удаление важного индекса TPCH Query 21 - After drop index - Average times for the 10 streams 0 1000 2000 3000 4000 5000 6000 7000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 Order of execution Time in seconds Avg = 959 Avg = 2285 Avg = 6205 Reduced 63% Indexes Dropped


Слайд 46

47 Security - Label Based Access Control Label Based Access Control (LBAC) “label” ассоциирован как с пользовательской сессией так и со строками Правила (Rules) проверяют метки пользователей и строк для выявления прав Labels могут состоять из множества компонентов Иерархия, группа и массив Метка на строку есть дополнительный вне зависимости от количества компонентов метки Пользовательские метки выдаются security administrator Похожа на поддержку LBAC в DB2 для z/OS v8


Слайд 47

48 LBAC Hierarchy Update/Read


Слайд 48

49 Hybrid Partitioning 999 Machines HASH RANGE 32K Partitions MDC


Слайд 49

50 Region Year East 97 North South West 98 99 00 0th Block BID = 0-0 Pg 0 Pg 1 Pg 2 Pg 3 Pg 20 Pg 21 5th Block BID = 20-0 01 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, 11-33 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 изнутри


Слайд 50

51 Row Compression используется LZV John, Dept 500, 20000, Plano, TX, 24355 Компрессия множества строк в одну страницу не эффективно с точки зрения БД. Fred, Dept 500, 10000, Plano, TX, 24355, … Fred, Dept 500, 10000, Plano, TX, 24355, …John, Dept 500, 20000, Plano, TX, 24355


Слайд 51

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)


Слайд 52

53 DB2 - More Compression Ratios (Customer Data) Compression Type 32KB Page Count Space Required on Disk No compression 5893888 179.9GB Row compression 1392446 42.5GB % Pages Saved: 76.4%


Слайд 53

Informix Dynamic Server 10


Слайд 54

55 2008 Запросы рынка, Technology & заказчиков партнеров Интеграция с IBM Software Улучшения Автономности MDC MQT Март 2003 Производительность Backup & Restore HDR & ER сосуществование Удаление ограничений на размеры. Мониторинг, Утилиты IBM Informix Dynamic Server Roadmap 2004 2005 2006 2007 2008 2003 IDS v10.5 IDS v9.40 IDS v10 IDS vNext 2H 2006 Запросы рынка, Technology & заказчиков партнеров Интеграция с IBM Software Автономность (Online Table Reorg, GUI, SQL) Q1 2005 Безопасность Устойчивость/Высокая доступность Разработка Соответствие стандартам Автономность/ Простота администрирования Интеграция с IBM SWG Запросы клиентов и партнеров


Слайд 55

56 Increase in Nightly Builds and Tests (IDS(4), CSDK, GLS, 4GL) 57000 4000 74 4


Слайд 56

57 IDS Уменьшение кол-ва ошибок 2001 2002 2003 2004 IDS 9.21 IDS 9.30 Defect Backlog 9.30.UC7 – 250 fixes 7.31.UD7 7.31.UD6 9.40.UC3


Слайд 57

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 – использование компонентов


Слайд 58

59


×

HTML:





Ссылка: