IBM Software Group ® Разработка Приложений с помощью pureXML Николай Куликов, IBM EE/A Nikolay_Kulikov@ru.ibm.com.

Презентация:



Advertisements
Похожие презентации
Work with databases in Java. JDBC Tutorial for students of universities Author: Dudnik Oxana.
Advertisements

Understanding Record and Table Locking In OpenEdge ® SQL Applications Jeff Owen Principle Software Engineer, OESQL Progress Software Session 132.
© 2001, Cisco Systems, Inc. CSIDS Chapter 6 Alarm Management.
© 2005, Cisco Systems, Inc. All rights reserved. IPS v Lesson 4 Using IPS Device Manager.
© 2006 Cisco Systems, Inc. All rights reserved. CIPT1 v Administration of Cisco Unified CallManager Release 5.0 Performing General Administration.
© 2009 Avaya Inc. All rights reserved.1 Chapter Three, Voic Pro Advanced Functions Module One – Text to Speech.
© 2005 Cisco Systems, Inc. All rights reserved. IPTX v Configuring Additional Cisco CallManager Express Features Configuring Cisco CallManager Express.
© 2006 Cisco Systems, Inc. All rights reserved. HIPS v Administering Events and Generating Reports Managing Events.
© 2006 Cisco Systems, Inc. All rights reserved.ISCW v Cisco IOS Threat Defense Features Configuring Cisco IOS IPS.
© 2001, Cisco Systems, Inc. CSIDS Chapter 9 Signature and Intrusion Detection Configuration.
© 2005 Cisco Systems, Inc. All rights reserved.INTRO v Managing Your Network Environment Managing Cisco Devices.
© 2009 Avaya Inc. All rights reserved.1 Chapter Two, Voic Pro Components Module Two – Actions, Variables & Conditions.
© Luxoft Training 2013 Annotations. © Luxoft Training 2013 Java reflection / RTTI // given the name of a class, get a "Class" object that // has all info.
© 2006 Cisco Systems, Inc. All rights reserved. MPLS v MPLS VPN Implementation Configuring Small-Scale Routing Protocols Between PE and CE Routers.
Structured Error Handling in the ABL Sarah Marshall QA Architect, OpenEdge Session 128.
© 2009 Avaya Inc. All rights reserved.1 Chapter Three, Voic Pro Advanced Functions Module Four – Voic Campaigns.
© 2003, Cisco Systems, Inc. All rights reserved. CSVPN Lesson 17 Configure the Cisco Virtual Private Network 3000 Series Concentrator for LAN-to-LAN.
Java Server Pages(JSP). JavaServer Pages (JSP) позволяют вам отделить динамическую часть ваших страниц от статического HTML. Вы, как обычно, пишете обычный.
AVVID Troubleshooting Tools © 2004 Cisco Systems, Inc. All rights reserved. Using Database Tools IPTT v
© 2006 Cisco Systems, Inc. All rights reserved. CVOICE v Configuring Voice Networks Configuring Dial Peers.
Транксрипт:

IBM Software Group ® Разработка Приложений с помощью pureXML Николай Куликов, IBM EE/A

IBM Software Group | DB2 Information Management Software 2 Agenda Немного основ Интеграция в различные среды/языки разработки Java.Net Ruby, PHP, Python Рекомендации по использованию pureXML Планы на будущее Viper II

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

IBM Software Group | DB2 Information Management Software 4 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

IBM Software Group | DB2 Information Management Software 5 0dept 4employee 1name 5id 2phone 3office Strings table 0/ 1/dept 2/dept/employee 4/dept/employee/name 5/dept/employee/phone 6/dept/employee/office Paths table 0/ 1/0 2/0/4 3/0/4/5 4/0/4/1 5/0/4/2 6/0/4/3 Paths table Таблицы строк и путей dept name phone employee office id name phone employee office id 901 John Doe Peter Pan Strings & Paths table per database Database wide dictionary… …for all documents in all XML columns SYSIBM.SYSXMLSTRINGS SYSIBM.SYSXMLPATHS

IBM Software Group | DB2 Information Management Software 6 Компрессия" John Doe Peter Pan dept 4employee 1name 5id 2phone 3office Strings table dept name phone employee office id name phone employee office id 901 John Doe Peter Pan

IBM Software Group | DB2 Information Management Software 7 DDL for Index on XML column Declaration & use of namespace prefix supported (not shown above) AS SQL VARCHAR (integer) CREATE index-name ON table-name (xml-column-name) GENERATE KEY USING XMLPATTERN xmlpattern-constant UNIQUE / // element-tag * / // INDEX DOUBLE DATE TIMESTAMP VARCHAR (HASHED) xmlpattern-constant: xmlpattern = XPath without predicates, only child axis (/) and descendent-or-self axis (//) create index idx1 on T(xmlcol) generate key using xmlpattern as sql date

IBM Software Group | DB2 Information Management Software 8 Требования разработчиков Быстрая разработка приложений БД Работа в рамках одной среды Eclipse/Visual Studio/Zend Core/Ruby Эффективное использования API надстроек над ним Разработка и отладка клиентской и серверной логики в рамках среды Eclipse/.NET/Zend Core/Ruby Управление новыми требованиями к данным Интеграция с гетерогенными системами

IBM Software Group | DB2 Information Management Software 9 Интеграция в среды Eclipse

IBM Software Group | DB2 Information Management Software 10 Интеграция в среды.Net

IBM Software Group | DB2 Information Management Software 11 Новые возможности Add-ins для MS VS 2005 Возможность генерации DB2 Web Services без кодирования Возможность создания и отладки SQL и CLR процедур Регистрация и работа со схемами в DB2 Поддержка других серверов БД DB2 Informix IDS, DB2/iSeries, DB2 z/Series.

IBM Software Group | DB2 Information Management Software 12 DB2 data provider for.NET Version 2.0 Поддержка базовых классов System.Data.Common Эквивалентность типов данных DB2 и.NET Поддержка 64-bit Scrollable and updateable result sets Data Paging Класс DB2Command теперь имеет ExecutePageReader Bulk Data Copy Update batch size Позволяет приложению определять сколько операторов за раз будет отправлятся на сервер DB2 для обработки

IBM Software Group | DB2 Information Management Software 13 Поддержка репозитория XML схем (XSR) Новый узел в.Net server explorer Полная интеграция с редактором XML схем в.NET Регистрация XML в XSR Удаление XML из XSR Модификация или аннотация XML схемы IBM DB2 XML

IBM Software Group | DB2 Information Management Software 14 ……. ….

IBM Software Group | DB2 Information Management Software 15 Concurrent Data Readers //Open connection to the database DB2Connection conn = new DB2Connection ("database=sample;"); conn.Open(); //Create 2 commands from the same connection DB2Command cmd1 = conn.CreateCommand(); DB2Command cmd2 = conn.CreateCommand(); cmd1.CommandText = "SELECT SALES_PERSON, SALES FROM SALES"; cmd2.CommandText = "SELECT DEPTNUMB, DEPTNAME FROM ORG" //Execute the first query DB2DataReader dr1 = cmd1.ExecuteReader(); //Execute the second query while the first one is still open DB2DataReader dr2 = cmd2.ExecuteReader(); //Get results from both data readers while (dr1.Read()) { Console.WriteLine(" Sales Person {0}, Sales {1}" dr1.GetString(0), dr1.GetInt16(1)); } while (dr2.Read()) { Console.WriteLine(" Department Number {0}, Department Name {1}" dr2.GetInt16(0), dr2.GetString(1)); } //Close both data readers dr1.Close(); dr2.Close(); conn.Close();

IBM Software Group | DB2 Information Management Software 16 JDBC и XML обзор JDBC и XML сегодня Расширения DB2 для JDBC XML JDBC и XML Завтра (JDBC v4) Java's XML APIs DOM, SAX, StAX, and Transform (XSLT)

IBM Software Group | DB2 Information Management Software 17 JDBC and XML today JDBC сегодня имеет минимальные возможности по поддержке pureXML Извлечение/обновление XML значений XML как параметры SQL поддерживаются через JDBC XQuery встроен в SQL Параметры XQuery сначала проходят через SQL Java 1.4 и выше полностью Unicode Нет проблем с перекодировкой

IBM Software Group | DB2 Information Management Software 18 JDBC краткий обзор 1.Connection – соединение с БД connection = DriverManager.getConnection(url, user, pass); 2.Statement – Оператор для выполнения PreparedStatement stmt = connection.prepareStatement(sql); 3.ResultSet – результат выполнения ResultSet resultSet = stmt.executeQuery(); Stream – значение XML InputStream inputStream = resultSet.getBinaryStream(1); или DB2XML или SQLXML DB2Xml db2xml = (DB2Xml) resultSet.getObject(1);

IBM Software Group | DB2 Information Management Software 19 Расширения DB2's XML Функциональность совместима с будущим JDBC SQLXML XML LOB возвращается с ResultSet.getObject() Преобразование кодовых страниц Несколько методов для удобства как и в ResultSet

IBM Software Group | DB2 Information Management Software 20 Выботка из XML столбца String sql = "SELECT PID, DESCRIPTION from XMLPRODUCT where PID = ?"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString(1, " "); ResultSet resultSet = stmt.executeQuery(); String xml = resultSet.getString("DESCRIPTION"); // or InputStream inputStream = resultSet.getBinaryStream("DESCRIPTION"); // or Reader reader = resultSet.getCharacterStream("DESCRIPTION"); // or DB2Xml db2xml = (DB2Xml) resultSet.getObject("DESCRIPTION");

IBM Software Group | DB2 Information Management Software 21 Вставка из файла XML String sql = "INSERT INTO xmlproduct VALUES(?, ?)"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString(1, " "); File binFile = new File("productBinIn.xml"); InputStream inBin = new FileInputStream(xmlFile); stmt.setBinaryStream(2, inBin, (int) binFile.getLength()); stmt.execute();

IBM Software Group | DB2 Information Management Software 22 JDBC и XML завтра (JDBC v4) (JSR 221) SQLXML объект добавлен к спецификации JDBC getSQLXML() возвращает SQLXML объект getObject() возвращает SQLXML объект Объекты SQLXML являются также объектами DB2XML Представляет XML значение Похоже на BLOB/CLOB Доступ из ResultSet SQLXML getSQLXML(int columnIndex) SQLXML getSQLXML(String columnName) void updateSQLXML(int columnIndex, SQLXML xmlObject) void updateSQLXML(String columnName, SQLXML xmlObject)

IBM Software Group | DB2 Information Management Software 23 Source and Result Examples DOM get a Document DOMSource domSource = sqlxml.getSource(DOMSource.class); Document document = (Document) domSource.getNode(); DOM set a Document DOMResult domResult = sqlxml.setResult(DOMResult.class); domResult.setNode(myNode); Run an XSLT on an XML result File xsltFile = new File("my.xslt"); File myFile = new File("result.xml"); Transformer xslt = TransformerFactory.newInstance(). newTransformer(new StreamSource(xsltFile)); Source source = sqlxml.getSource(null); Result result = new StreamResult(myFile); xslt.transform(source, result);

IBM Software Group ® Производительность

IBM Software Group | DB2 Information Management Software 25 Размер страницы для XML 4K Pages 8K Pages 32k Pages Большие документы разбиваются на регионы Макс док: 2GB, может находится на множестве страниц Меньше регионов лучше производительность. Выбирайте размер страницы в зависимости от размера документа ! …. Regions Index

IBM Software Group | DB2 Information Management Software 26 Отдельные табличные пространства для XML Используйте DMS табличные пространства для лучше производительности ! Используйте большие размеры страниц! Расположение XML данных и индексов в отдельных табличных пространствах позволяет делать более тонкую настройку… …но только если это действительно нужно! Иначе пусть будет проще ! CREATE TABLE mytable(c1 integer, c2 char(8),…,c9 double, c10 XML) IN mytspace1 INDEX IN mytspace2 LONG IN mytspace3

IBM Software Group | DB2 Information Management Software 27 New Snapshot Monitor Counters for XML Проверяйте XDA счетчики для оценки XML активности ! Buffer pool data logical reads = 253 Buffer pool data physical reads = 70 Buffer pool temporary data logical reads = 145 Buffer pool temporary data physical reads = 0 Buffer pool data writes = 0 Buffer pool index logical reads = Buffer pool index physical reads = 0 Buffer pool temporary index logical reads = 0 Buffer pool temporary index physical reads = 0 Buffer pool index writes = 0 Buffer pool xda logical reads = 2837 Buffer pool xda physical reads = 174 Buffer pool temporary xda logical reads = 0 Buffer pool temporary xda physical reads = 0 Buffer pool xda writes = 0 Data Counters (relational) Relational and XML Index Counters XML Data Counters Активности с XML Regions включается в index counters. New !

IBM Software Group | DB2 Information Management Software 28 Проверка на основе XML схем create table dept(deptID char(8), deptdoc xml); Validation is optional, and per document (per row): insert into dept values (?, ?) insert into dept values (?, xmlvalidate(?)) No Validation With Validation Валидация увеличивает процессорное время CPU для вставок, и уменьшает пропускную способность.

IBM Software Group | DB2 Information Management Software 29 Примеры XML индексов create unique index idx1 on customer(info) generate key using xmlpattern as sql double; create index idx2 on customer(info) generate key using xmlpattern '/customerinfo/name' as sql varchar(40); Matt Foreman 1596 Baseline Toronto Ontario M3Z-5H Peter Smith create index idx3 on customer(info) generate key using xmlpattern '//name' as sql varchar(40); create table customer( info XML);

IBM Software Group | DB2 Information Management Software 30 XML Indexing Examples create unique index idx1 on customer(info) generate key using xmlpattern as sql double; create index idx2 on customer(info) generate key using xmlpattern '/customerinfo/name' as sql varchar(40); Matt Foreman 1596 Baseline Toronto Ontario M3Z-5H Peter Smith create index idx3 on customer(info) generate key using xmlpattern '//name' as sql varchar(40); create table customer( info XML); create index idx4 on customer(info) generate key using xmlpattern '//text()' as sql varchar(40); Не индексируйте все! Слишком дорого для insert, update, delete !

IBM Software Group | DB2 Information Management Software 31 Optimizer Tips Гибридный оптимизатор основан на стоимости Вы должны запускать runstats на ваших XML данных XML Статистика включает наиболее часто встречаемые пары path/value Проверяйте планы на основе db2exfmt, Visual Explain

IBM Software Group | DB2 Information Management Software 32 Рекомендации по XML Запросам Если возможно полностью указывайте точный XPath, а не шаблон. /customerinfo/phone вместо //phone /customerinfo/addr/state вместо /customerinfo/ * /state Matt Foreman 1596 Baseline Toronto Ontario M3Z-5H Matt Foreman 1596 Baseline Toronto Ontario M3Z-5H Peter Smith

IBM Software Group | DB2 Information Management Software 33 SQL/XML c XMLEXISTS Для каждой строки: XMLEXISTS возвращает FALSE если встроенный XQuery возвращает Пустую последовательность, иначе XMLEXISTS возвращает TRUE, и строка возвращается select c.info from customer c where xmlexists($i/customerinfo [ name = Matt Foreman ] passing c.info as i) Строка возвращается имя Matt Foreman: XQuery вернет пустую строку если […] удовлетворено create table customer( info XML); Без индекса! Индекс! select c.info from customer c where xmlexists($i/customerinfo/name = Matt Foreman passing c.info as i) Все строки выбираются : Встроенный XQuery всегда вернет или Boolean вне зависимости путая последовательность или нет

IBM Software Group | DB2 Information Management Software 34 SQL/XML with XMLQUERY Matt Foreman Peter Jones Mary Poppins select xmlquery($i/customerinfo[phone = ]/name passing c.info as i) from customer c; select xmlquery($i/customerinfo/name passing c.info as i) from customer c where xmlexists($i/customerinfo[phone = ] passing c.info as i) Matt Foreman customer table: 1 record(s) selected 3 record(s) selected Индекс! Без индекса!

IBM Software Group | DB2 Information Management Software 35 Viper II Ограничения целостности на XML Передача параметров в SQLQuery –XQuery нет возможности передачи параметров в SQL XQUERY for $docid in (1,2,3), $j in db2-fn:sqlquery('select xmlcol from t1 where docid = parameter(1)', $docid)/bib/book where count($j/author) > 1 return $j;

IBM Software Group | DB2 Information Management Software 36 Viper II Репликация XML Поддержка триггеров для XML Before Trigger сможет работать перед валидацией на вставку Обновление части документа update T set doc = XMLQuery (' transform copy $r := $doc do delete {$r/score}, replaceValue of {$r/salary} with $r/salary * 1.1, insert { Ph.D. } into $r//emp, rename ($r/status[1]) to "state" return $r' passing doc as "doc", cast (? as double) as "raise", id as "i");

IBM Software Group | DB2 Information Management Software 37 Questions? Matthias Nicola, IBM SVL

IBM Software Group | DB2 Information Management Software 38 New XML Statistics Gathered by runstats when run on XML column and XML index Cannot be modified via update For each of the most frequent paths in an XML column we collect - The total number of times the path is seen - Top-k Pathid node counts - In how many documents it is seen - Top-k Pathid doc counts Same is collected for most frequent paths that lead to values including the value itself - Top-k Pathid-Value node counts - Top-k Pathid-Value doc counts Catch all stats for paths that are not frequent New registry variables for fine tuning, db2cat for inspection

IBM Software Group | DB2 Information Management Software IBM Confidential 39 XANDOR Join Example: … B=5, docid=3 B=5, docid=4 B=5, docid=5 B=5, docid=7 B=5, docid=8 B=5, docid=9 B=5, docid=10 B=5, docid=11 B=5, docid=15, nodeID=1.1.1 B=5, docid=16 B=5, docid=17 B=5, docid=19 nodeID=1.1.1 … F=6, docid=1 F=6, docid=2 F=6, docid=6 F=6, docid=15, nodeID= , F=6, docid=12 F=6, docid=13 F=6, docid=19 nodeID= … docID=15 docID=19 Query: /doc/A[B=5 and C/F=6] XML Index 1 /doc/A/B = 5 ? XML Index 2 /doc/A/C/F = 6 ? New !