SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
XML и реляционные СУБД
Хранение и работа с XML
в реляционных системах
управления базами данных

Самохвалов Николай
Компания «Постгресмен»
http://postgresmen.ru
rit2007@samokhvalov.com
XML и СУБД



       Зачем?




                www.rit2007.ru
XML и СУБД
• XML для общения с «внешним миром»




  Database     Web Service   XML




                                      www.rit2007.ru
Зачем хранить XML в РСУБД?


  • Системы документооборота
  • Полуструктурированные данные
  • Архивы документов




                                   www.rit2007.ru
Пример 1: система документооборота

Цель: работа с документами в оригинальном
формате



                                      Document
            XML                      Management
         documents                     System




                                                  www.rit2007.ru
Пример 2: разнородный каталог

Цель: работа с объектами с различными наборами
свойств




                  IRR.ru, раздел «Авто»



                                                 www.rit2007.ru
Пример 2: разнородный каталог

          item
obj_id            INT8
item_section_id   INT8
item_vendor_id    INT8                              item
item_model_id     INT8
item_year         INT2                  obj_id             INT8
item_price        NUMERIC(30,6)         item_section_id    INT8
item_prop1        INT4                  item_vendor_id     INT8
item_prop2        INT4                  item_model_id      INT8
item_prop3        INT4                  item_year          INT2
item_prop4        INT4                  item_price         NUMERIC(30,6)
...                                     item_props         hstore
item_prop21       TEXT
item_prop22       TEXT
item_prop23       TEXT            hstore – тип данных в PostgreSQL,
...                               множество пар «ключ – значение» (аналог хэшей
item_prop41       BOOLEAN         c поддержкой индексов (GiST)
...




                                                                    www.rit2007.ru
Пример 3: журнал действий

Цель: гибкость схемы (возможность добавить новые
свойства)

                     action
         action_id            SERIAL
         action_type_id       INT4
         action_status_id     INT4
         action_person_id     INT4
         action_data          hstore




                                                   www.rit2007.ru
SQL/XML (ISO/IEC 9075-14:2006)


●   тип данных XML (XQuery 1.0 and XPath 2.0 Data
    Model)
●   функции публикации (XMLDOCUMENT, XMLELEMENT,
    XMLATTRIBUTES, XMLFOREST, XMLAGG, XMLCONCAT,
    XMLPI, XMLCOMMENT)
●   поддержка XQuery (операция XMLQUERY)




                                             www.rit2007.ru
Тип данных XML

            doc
   PK   id        INTEGER
        data          XML
        created TIMESTAMP




CREATE TABLE doc (
    id INTEGER PRIMARY KEY,
    data XML,
    created TIMESTAMP WITH TIMEZONE
);



                                      www.rit2007.ru
Производительность
●   Выборка всего XML-значения по условию XPath
     SELECT xmlcol
     FROM tbl1
     WHERE (xpath('/a/@b', xmlcol))[1] = '123';

     SELECT xmlcol
     FROM tbl1
     WHERE (xpath('/a[@c=quot;squot;]/@b', xmlcol))[1] = '123';

●   Выборка произвольной части XML-значения
     SELECT xpath('/a/@b', xmlcol)
     FROM tbl1
     WHERE id = 111;

●   Модификация части XML-значения



                                                          www.rit2007.ru
Oracle 10g
• Тип XMLType. Варианты хранения:
    • object-relational storage
    • CLOB
• XML Schemas
• SQL/XML (включая ф-ции публикации, XMLQUERY, XMLVALIDATE, XMLTABLE
• XQuery
• XSLT
• DOM
• Node-level updates
• Индексы:
    • обычные B-деревья в случае object-relational storage
    • XMLIndex для обоих типов хранения (индексация путей, значений,
    • функциональные индексы
    • индексы для полнотекстового поиска




                                                         www.rit2007.ru
MS SQL 2005
• Тип XML. Хранение: BLOB.
• XML Schemas
• SQL/XML publishing functions
• XQuery
• XSLT
• Node-level updates
• Индексы:
    • «первичные» XML-индексы (ORDPATH)
    • «вторичные» XML-индексы
        • PATH
        • VALUE
        • PROPERTY
• Web services




                                          www.rit2007.ru
IBM DB2 version 9
• Тип XML. Собственное хранилище (native storage: pureXML)
• XML Schemas (с поддержкой эволюции)
• SQL/XML (включая ф-ции публикации, XMLQUERY, XMLVALIDATE, XMLTABLE
• XQuery
• XSLT
• Node-level updates
• Индексы:
    • XML value indexes
    • XML full text indexes
• Annotated XML Schemas для декомпозиции (XML->rel)




                                                         www.rit2007.ru
MySQL 5.1
mysql> SET @xml = '<a>111<b:c>222<d>333</d><e:f>444</e:f></b:c></a>';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT ExtractValue(@xml, '//e:f');
+-----------------------------+
| ExtractValue(@xml, '//e:f') |
+-----------------------------+
| 444                         |
+-----------------------------+
1 row in set (0.00 sec)

mysql> SELECT UpdateXML(@xml, '//b:c', '<g:h>555</g:h>');
+--------------------------------------------+
| UpdateXML(@xml, '//b:c', '<g:h>555</g:h>') |
+--------------------------------------------+
| <a>111<g:h>555</g:h></a>                   |
+--------------------------------------------+
1 row in set (0.00 sec)




                                                               www.rit2007.ru
PostgreSQL 8.3
• Тип XML (over VARCHAR), поддержка XML-фрагментов
• SQL/XML
    • SQL/XML publishing functions
    • XMLPARSE, XMLSERIALIZE
• XSLT (via contrib)
• XPath с поддержкой XML Namespaces (xpath())
• Индексы:
    • функциональные индексы над xpath()
    • XLABEL (GiST based; в разработке)
• Альтернативные функции отображения rel->XML
    • table_to_xml(), query_to_xml(), cursor_to_xml()
    • table_to_xmlschema(), ...
    • table_to_xml_and_xmlschema(), ...
    • database_to_xml(), database_to_xmlschema(), ...




                                                        www.rit2007.ru
PostgreSQL 8.3
xmltest=# SELECT XMLELEMENT(
         NAME quot;personquot;,
         XMLATTRIBUTES(
                  person_name || ' ' || person_lastname
                            AS quot;namequot;,
                  age(person_birthday) AGE quot;agequot;
         )
)
FROM person;
                       xmlelement
-----------------------------------------------------------
<person name=quot;Ivan Sidorovquot; age=quot;29 years 6 mons 6 daysquot; />
<person name=quot;Petr Ivanovquot; age=quot;22 years 8 mons 14 daysquot; />




                                                              www.rit2007.ru
PostgreSQL 8.3
xmltest=# CREATE TABLE table1(
         id INTEGER PRIMARY KEY,
         created TIMESTAMP NOT NULL
         DEFAULT CURRENT_TIMESTAMP,
         xdata XML
);
CREATE TABLE

xmltest=# INSERT INTO
         table1(id, xdata)
         VALUES(
         1,
         '<dept xmlns:smpl=quot;http://example.comquot; smpl:did=quot;DPT011-ITquot;>
                  <name>IT</name>
                  <persons>
                            <person smpl:pid=quot;111quot;>
                                      <name>John Smith</name>
                                      <age>24</age>
                            </person>
                            <person smpl:pid=quot;112quot;>
                                      <name>Michael Black</name>
                                      <age>28</age>
                            </person>
                  </persons>
         </dept>'
);
INSERT 0 1
                                                                        www.rit2007.ru
PostgreSQL 8.3
xmltest=# SELECT xpath('//person/name/text()', xdata)
FROM table1;
              xpath
-----------------------------------
{quot;John Smithquot;,quot;Michael Blackquot;}
(1 row)


xmltest=# SELECT xpath('//person/@smpl:pid', xdata,
         ARRAY[ARRAY['smpl', 'http://example.com']])
FROM table1;
   xpath
-------------
 {111,112}
(1 row)


xmltest=# CREATE INDEX i_table1_xdata ON table1 USING btree(
         xpath('//person/@name', xdata)
);
CREATE INDEX




                                                               www.rit2007.ru
PostgreSQL 8.3
Планы по развитию:
   • XLABEL
   • XML Schemas catalogue
   • полнотекстовый поиск по XML-данным
   • decomposition with annotated XML Schemas
   • XQuery (XMLQUERY)




                                                www.rit2007.ru
Пример использования
Хранение метаданных в наблюдательных архивах
International Virtual Observatory




                                               www.rit2007.ru
Спасибо за
внимание!




             www.rit2007.ru
Ссылки, литература
● SQL:200x, 2006, Part 14: XML-Related Specifications (SQL/XML), ISO/IEC JTC
   CD 9075-14:200x(E). International Standard, ISO, ANSI.
• R. Bourret. XML Database Products. http://www.rpbourret.com/xml/XMLDatabas
● M. Nicola and B. van der Linden. Native XML Support in DB2 Universal Data


   In VLDB, pages 1164 1174, Trondheim, Norway, 2005.
● P. O Neil, E. O Neil, S. Pal, I. Cseri, G. Schaller, and N. Westbury. ORDPATHs


   insert-friendly XML node labels. // In SIGMOD 04: Proceedings of the 2004 ACM S
   international conference on Management of data, pages 903 908, New York, NY, USA
   ACM Press.
● Бартунов О. С. Что такое PostgreSQL? // Корпоративные базы данных-2005. C


   М.: 2005. http://www.citforum.ru/database/postgres/what_is/
● N. Samokhvalov. XML Support in PostgreSQL. // Proceedings of the SYRCoDIS-2


   Moscow, Russia, 2007.
● I. Zolotukhin, N. Samokhvalov, F. Bonnarel, and I. Chilingarian. Comprehens


   Metadata Query Interface for Heterogeneous Data Archives Based on Open
   PostgreSQL ORDBMS. // In Astronomical Data Analysis Software & Systems XVI, p.
   Tucson, Arizona, USA, 2006.




                                                                      www.rit2007.ru

Mais conteúdo relacionado

Mais procurados

Pontos para criar_instancia_data guard_11g
Pontos para criar_instancia_data guard_11gPontos para criar_instancia_data guard_11g
Pontos para criar_instancia_data guard_11g
Leandro Santos
 
2. ใบความรู้ที่ 6
2. ใบความรู้ที่ 62. ใบความรู้ที่ 6
2. ใบความรู้ที่ 6
Chainarong Ngaosri
 

Mais procurados (10)

Oracle Database - JSON and the In-Memory Database
Oracle Database - JSON and the In-Memory DatabaseOracle Database - JSON and the In-Memory Database
Oracle Database - JSON and the In-Memory Database
 
Pontos para criar_instancia_data guard_11g
Pontos para criar_instancia_data guard_11gPontos para criar_instancia_data guard_11g
Pontos para criar_instancia_data guard_11g
 
Quebec pdo
Quebec pdoQuebec pdo
Quebec pdo
 
NDC London 2013 - Mongo db for c# developers
NDC London 2013 - Mongo db for c# developersNDC London 2013 - Mongo db for c# developers
NDC London 2013 - Mongo db for c# developers
 
Nantes Jug - Java 7
Nantes Jug - Java 7Nantes Jug - Java 7
Nantes Jug - Java 7
 
OakTable World 2015 - Using XMLType content with the Oracle In-Memory Column...
OakTable World 2015  - Using XMLType content with the Oracle In-Memory Column...OakTable World 2015  - Using XMLType content with the Oracle In-Memory Column...
OakTable World 2015 - Using XMLType content with the Oracle In-Memory Column...
 
Droidjam 2019 flutter isolates pdf
Droidjam 2019 flutter isolates pdfDroidjam 2019 flutter isolates pdf
Droidjam 2019 flutter isolates pdf
 
2. ใบความรู้ที่ 6
2. ใบความรู้ที่ 62. ใบความรู้ที่ 6
2. ใบความรู้ที่ 6
 
MoSQL: More than SQL, but less than ORM
MoSQL: More than SQL, but less than ORMMoSQL: More than SQL, but less than ORM
MoSQL: More than SQL, but less than ORM
 
資料視覺化 - D3 的第一堂課 | WeiYuan
資料視覺化 - D3 的第一堂課 | WeiYuan資料視覺化 - D3 的第一堂課 | WeiYuan
資料視覺化 - D3 的第一堂課 | WeiYuan
 

Destaque

20070524 Pgcon2007 Roadtoxmltype
20070524 Pgcon2007 Roadtoxmltype20070524 Pgcon2007 Roadtoxmltype
20070524 Pgcon2007 Roadtoxmltype
Nikolay Samokhvalov
 
Sales Trng Product Power
Sales Trng Product  PowerSales Trng Product  Power
Sales Trng Product Power
rkonte
 
Sales Trng Product Physical Security
Sales Trng Product Physical SecuritySales Trng Product Physical Security
Sales Trng Product Physical Security
rkonte
 
Sales Trng Product Cooling
Sales Trng Product  CoolingSales Trng Product  Cooling
Sales Trng Product Cooling
rkonte
 

Destaque (6)

20070524 Pgcon2007 Roadtoxmltype
20070524 Pgcon2007 Roadtoxmltype20070524 Pgcon2007 Roadtoxmltype
20070524 Pgcon2007 Roadtoxmltype
 
Placa Madre
Placa MadrePlaca Madre
Placa Madre
 
Sales Trng Product Power
Sales Trng Product  PowerSales Trng Product  Power
Sales Trng Product Power
 
Tarzan
TarzanTarzan
Tarzan
 
Sales Trng Product Physical Security
Sales Trng Product Physical SecuritySales Trng Product Physical Security
Sales Trng Product Physical Security
 
Sales Trng Product Cooling
Sales Trng Product  CoolingSales Trng Product  Cooling
Sales Trng Product Cooling
 

Semelhante a 20070407 Rit2007 Xmltype Samokhvalov

20080424 Cdb2008 Postgresql News Bartunov
20080424 Cdb2008 Postgresql News Bartunov20080424 Cdb2008 Postgresql News Bartunov
20080424 Cdb2008 Postgresql News Bartunov
Nikolay Samokhvalov
 
How To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPHow To Create Custom DSLs By PHP
How To Create Custom DSLs By PHP
Atsuhiro Kubo
 
bioinfolec_5th_20070713
bioinfolec_5th_20070713bioinfolec_5th_20070713
bioinfolec_5th_20070713
sesejun
 
bioinfolec_7th_20071005
bioinfolec_7th_20071005bioinfolec_7th_20071005
bioinfolec_7th_20071005
sesejun
 
bioinfolec7th20071005
bioinfolec7th20071005bioinfolec7th20071005
bioinfolec7th20071005
guest0fd313
 
11 Things About 11gr2
11 Things About 11gr211 Things About 11gr2
11 Things About 11gr2
afa reg
 
No SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in RubyNo SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in Ruby
sbeam
 
Zurich2007 MySQL Query Optimization
Zurich2007 MySQL Query OptimizationZurich2007 MySQL Query Optimization
Zurich2007 MySQL Query Optimization
Hiệp Lê Tuấn
 

Semelhante a 20070407 Rit2007 Xmltype Samokhvalov (20)

20080424 Cdb2008 Postgresql News Bartunov
20080424 Cdb2008 Postgresql News Bartunov20080424 Cdb2008 Postgresql News Bartunov
20080424 Cdb2008 Postgresql News Bartunov
 
20071113 Msu Vasenin Seminar
20071113 Msu Vasenin Seminar20071113 Msu Vasenin Seminar
20071113 Msu Vasenin Seminar
 
How To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPHow To Create Custom DSLs By PHP
How To Create Custom DSLs By PHP
 
Postgre Sql 8 4
Postgre Sql 8 4Postgre Sql 8 4
Postgre Sql 8 4
 
bioinfolec_5th_20070713
bioinfolec_5th_20070713bioinfolec_5th_20070713
bioinfolec_5th_20070713
 
使いこなそうGUC
使いこなそうGUC使いこなそうGUC
使いこなそうGUC
 
20070329 Phpconf2007 Training
20070329 Phpconf2007 Training20070329 Phpconf2007 Training
20070329 Phpconf2007 Training
 
Tutorial On Database Management System
Tutorial On Database Management SystemTutorial On Database Management System
Tutorial On Database Management System
 
bioinfolec_7th_20071005
bioinfolec_7th_20071005bioinfolec_7th_20071005
bioinfolec_7th_20071005
 
bioinfolec7th20071005
bioinfolec7th20071005bioinfolec7th20071005
bioinfolec7th20071005
 
The Real Time Web with XMPP
The Real Time Web with XMPPThe Real Time Web with XMPP
The Real Time Web with XMPP
 
Zh solaris-11-whatsnew-201111-1388248
Zh solaris-11-whatsnew-201111-1388248Zh solaris-11-whatsnew-201111-1388248
Zh solaris-11-whatsnew-201111-1388248
 
11 Things About 11gr2
11 Things About 11gr211 Things About 11gr2
11 Things About 11gr2
 
No SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in RubyNo SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in Ruby
 
Going reactive in java
Going reactive in javaGoing reactive in java
Going reactive in java
 
PostgreSQL Portland Performance Practice Project - Database Test 2 Series Ove...
PostgreSQL Portland Performance Practice Project - Database Test 2 Series Ove...PostgreSQL Portland Performance Practice Project - Database Test 2 Series Ove...
PostgreSQL Portland Performance Practice Project - Database Test 2 Series Ove...
 
静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム
 
Zurich2007 MySQL Query Optimization
Zurich2007 MySQL Query OptimizationZurich2007 MySQL Query Optimization
Zurich2007 MySQL Query Optimization
 
Zurich2007 MySQL Query Optimization
Zurich2007 MySQL Query OptimizationZurich2007 MySQL Query Optimization
Zurich2007 MySQL Query Optimization
 
GDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしようGDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしよう
 

Mais de Nikolay Samokhvalov

Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Nikolay Samokhvalov
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхПромышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Nikolay Samokhvalov
 
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San JoseThe Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
Nikolay Samokhvalov
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
Nikolay Samokhvalov
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
Nikolay Samokhvalov
 
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
Nikolay Samokhvalov
 
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Nikolay Samokhvalov
 
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.42014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
Nikolay Samokhvalov
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 

Mais de Nikolay Samokhvalov (20)

Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхПромышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
 
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San JoseThe Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
 
Nancy CLI. Automated Database Experiments
Nancy CLI. Automated Database ExperimentsNancy CLI. Automated Database Experiments
Nancy CLI. Automated Database Experiments
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
 
Database First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДDatabase First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБД
 
2016.10.13 PostgreSQL in Russia
2016.10.13 PostgreSQL in Russia2016.10.13 PostgreSQL in Russia
2016.10.13 PostgreSQL in Russia
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов
 
#PostgreSQLRussia в банке Тинькофф, доклад №1
#PostgreSQLRussia в банке Тинькофф, доклад №1#PostgreSQLRussia в банке Тинькофф, доклад №1
#PostgreSQLRussia в банке Тинькофф, доклад №1
 
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
 
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
 
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
 
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
 
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
 
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.42014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru
 
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 

20070407 Rit2007 Xmltype Samokhvalov

  • 1. XML и реляционные СУБД Хранение и работа с XML в реляционных системах управления базами данных Самохвалов Николай Компания «Постгресмен» http://postgresmen.ru rit2007@samokhvalov.com
  • 2. XML и СУБД Зачем? www.rit2007.ru
  • 3. XML и СУБД • XML для общения с «внешним миром» Database Web Service XML www.rit2007.ru
  • 4. Зачем хранить XML в РСУБД? • Системы документооборота • Полуструктурированные данные • Архивы документов www.rit2007.ru
  • 5. Пример 1: система документооборота Цель: работа с документами в оригинальном формате Document XML Management documents System www.rit2007.ru
  • 6. Пример 2: разнородный каталог Цель: работа с объектами с различными наборами свойств IRR.ru, раздел «Авто» www.rit2007.ru
  • 7. Пример 2: разнородный каталог item obj_id INT8 item_section_id INT8 item_vendor_id INT8 item item_model_id INT8 item_year INT2 obj_id INT8 item_price NUMERIC(30,6) item_section_id INT8 item_prop1 INT4 item_vendor_id INT8 item_prop2 INT4 item_model_id INT8 item_prop3 INT4 item_year INT2 item_prop4 INT4 item_price NUMERIC(30,6) ... item_props hstore item_prop21 TEXT item_prop22 TEXT item_prop23 TEXT hstore – тип данных в PostgreSQL, ... множество пар «ключ – значение» (аналог хэшей item_prop41 BOOLEAN c поддержкой индексов (GiST) ... www.rit2007.ru
  • 8. Пример 3: журнал действий Цель: гибкость схемы (возможность добавить новые свойства) action action_id SERIAL action_type_id INT4 action_status_id INT4 action_person_id INT4 action_data hstore www.rit2007.ru
  • 9. SQL/XML (ISO/IEC 9075-14:2006) ● тип данных XML (XQuery 1.0 and XPath 2.0 Data Model) ● функции публикации (XMLDOCUMENT, XMLELEMENT, XMLATTRIBUTES, XMLFOREST, XMLAGG, XMLCONCAT, XMLPI, XMLCOMMENT) ● поддержка XQuery (операция XMLQUERY) www.rit2007.ru
  • 10. Тип данных XML doc PK id INTEGER data XML created TIMESTAMP CREATE TABLE doc ( id INTEGER PRIMARY KEY, data XML, created TIMESTAMP WITH TIMEZONE ); www.rit2007.ru
  • 11. Производительность ● Выборка всего XML-значения по условию XPath SELECT xmlcol FROM tbl1 WHERE (xpath('/a/@b', xmlcol))[1] = '123'; SELECT xmlcol FROM tbl1 WHERE (xpath('/a[@c=quot;squot;]/@b', xmlcol))[1] = '123'; ● Выборка произвольной части XML-значения SELECT xpath('/a/@b', xmlcol) FROM tbl1 WHERE id = 111; ● Модификация части XML-значения www.rit2007.ru
  • 12. Oracle 10g • Тип XMLType. Варианты хранения: • object-relational storage • CLOB • XML Schemas • SQL/XML (включая ф-ции публикации, XMLQUERY, XMLVALIDATE, XMLTABLE • XQuery • XSLT • DOM • Node-level updates • Индексы: • обычные B-деревья в случае object-relational storage • XMLIndex для обоих типов хранения (индексация путей, значений, • функциональные индексы • индексы для полнотекстового поиска www.rit2007.ru
  • 13. MS SQL 2005 • Тип XML. Хранение: BLOB. • XML Schemas • SQL/XML publishing functions • XQuery • XSLT • Node-level updates • Индексы: • «первичные» XML-индексы (ORDPATH) • «вторичные» XML-индексы • PATH • VALUE • PROPERTY • Web services www.rit2007.ru
  • 14. IBM DB2 version 9 • Тип XML. Собственное хранилище (native storage: pureXML) • XML Schemas (с поддержкой эволюции) • SQL/XML (включая ф-ции публикации, XMLQUERY, XMLVALIDATE, XMLTABLE • XQuery • XSLT • Node-level updates • Индексы: • XML value indexes • XML full text indexes • Annotated XML Schemas для декомпозиции (XML->rel) www.rit2007.ru
  • 15. MySQL 5.1 mysql> SET @xml = '<a>111<b:c>222<d>333</d><e:f>444</e:f></b:c></a>'; Query OK, 0 rows affected (0.00 sec) mysql> SELECT ExtractValue(@xml, '//e:f'); +-----------------------------+ | ExtractValue(@xml, '//e:f') | +-----------------------------+ | 444 | +-----------------------------+ 1 row in set (0.00 sec) mysql> SELECT UpdateXML(@xml, '//b:c', '<g:h>555</g:h>'); +--------------------------------------------+ | UpdateXML(@xml, '//b:c', '<g:h>555</g:h>') | +--------------------------------------------+ | <a>111<g:h>555</g:h></a> | +--------------------------------------------+ 1 row in set (0.00 sec) www.rit2007.ru
  • 16. PostgreSQL 8.3 • Тип XML (over VARCHAR), поддержка XML-фрагментов • SQL/XML • SQL/XML publishing functions • XMLPARSE, XMLSERIALIZE • XSLT (via contrib) • XPath с поддержкой XML Namespaces (xpath()) • Индексы: • функциональные индексы над xpath() • XLABEL (GiST based; в разработке) • Альтернативные функции отображения rel->XML • table_to_xml(), query_to_xml(), cursor_to_xml() • table_to_xmlschema(), ... • table_to_xml_and_xmlschema(), ... • database_to_xml(), database_to_xmlschema(), ... www.rit2007.ru
  • 17. PostgreSQL 8.3 xmltest=# SELECT XMLELEMENT( NAME quot;personquot;, XMLATTRIBUTES( person_name || ' ' || person_lastname AS quot;namequot;, age(person_birthday) AGE quot;agequot; ) ) FROM person; xmlelement ----------------------------------------------------------- <person name=quot;Ivan Sidorovquot; age=quot;29 years 6 mons 6 daysquot; /> <person name=quot;Petr Ivanovquot; age=quot;22 years 8 mons 14 daysquot; /> www.rit2007.ru
  • 18. PostgreSQL 8.3 xmltest=# CREATE TABLE table1( id INTEGER PRIMARY KEY, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, xdata XML ); CREATE TABLE xmltest=# INSERT INTO table1(id, xdata) VALUES( 1, '<dept xmlns:smpl=quot;http://example.comquot; smpl:did=quot;DPT011-ITquot;> <name>IT</name> <persons> <person smpl:pid=quot;111quot;> <name>John Smith</name> <age>24</age> </person> <person smpl:pid=quot;112quot;> <name>Michael Black</name> <age>28</age> </person> </persons> </dept>' ); INSERT 0 1 www.rit2007.ru
  • 19. PostgreSQL 8.3 xmltest=# SELECT xpath('//person/name/text()', xdata) FROM table1; xpath ----------------------------------- {quot;John Smithquot;,quot;Michael Blackquot;} (1 row) xmltest=# SELECT xpath('//person/@smpl:pid', xdata, ARRAY[ARRAY['smpl', 'http://example.com']]) FROM table1; xpath ------------- {111,112} (1 row) xmltest=# CREATE INDEX i_table1_xdata ON table1 USING btree( xpath('//person/@name', xdata) ); CREATE INDEX www.rit2007.ru
  • 20. PostgreSQL 8.3 Планы по развитию: • XLABEL • XML Schemas catalogue • полнотекстовый поиск по XML-данным • decomposition with annotated XML Schemas • XQuery (XMLQUERY) www.rit2007.ru
  • 21. Пример использования Хранение метаданных в наблюдательных архивах International Virtual Observatory www.rit2007.ru
  • 23. Ссылки, литература ● SQL:200x, 2006, Part 14: XML-Related Specifications (SQL/XML), ISO/IEC JTC CD 9075-14:200x(E). International Standard, ISO, ANSI. • R. Bourret. XML Database Products. http://www.rpbourret.com/xml/XMLDatabas ● M. Nicola and B. van der Linden. Native XML Support in DB2 Universal Data In VLDB, pages 1164 1174, Trondheim, Norway, 2005. ● P. O Neil, E. O Neil, S. Pal, I. Cseri, G. Schaller, and N. Westbury. ORDPATHs insert-friendly XML node labels. // In SIGMOD 04: Proceedings of the 2004 ACM S international conference on Management of data, pages 903 908, New York, NY, USA ACM Press. ● Бартунов О. С. Что такое PostgreSQL? // Корпоративные базы данных-2005. C М.: 2005. http://www.citforum.ru/database/postgres/what_is/ ● N. Samokhvalov. XML Support in PostgreSQL. // Proceedings of the SYRCoDIS-2 Moscow, Russia, 2007. ● I. Zolotukhin, N. Samokhvalov, F. Bonnarel, and I. Chilingarian. Comprehens Metadata Query Interface for Heterogeneous Data Archives Based on Open PostgreSQL ORDBMS. // In Astronomical Data Analysis Software & Systems XVI, p. Tucson, Arizona, USA, 2006. www.rit2007.ru