Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
XML + relacyjne bazy danych
Krzysztof Kamyczek
2
Wstep Można by wyróżnić następujące przypadki stosowania łączenia Relacyjnych Baz Danych z XML-em: Dodanie interfejsu XML do istniejących baz danych (do działających aplikacji). Tworzenie nowej aplikacji, projektując ją do działania z relacyjną bazą danych i interfejsem XML-owym.
3
Komercyjne rozwiązania
Każdy z wielkich producentów baz danych umożliwił w swoim produkcie stosowanie XML-a. Uczynił to IBM w DB2: DB2 XML Extender and DB2 Text Extender; Microsoft w SQL Server 2000; Oracle w Oracle 8i, 9i; a także Informix
4
Niekomercyjne rozwiązania
Dla niekomercyjnych baz danych takich jak PostgreSQL czy MySQL istnieje oprogramowanie pośredniczące pomiędzy bazą a aplikacją kożystającą z XML-a zwane middleware. Middleware komunikuje się z takimi (jak i komercyjnymi) bazami danych przez ODBC, OLE DB lub JDBC. Middleware pozwala na dwukierunkową wymianę danych w postaci XML między dowolną bazą danych wyposażoną w sterownik JDBC, ODBC czy OLE DB a aplikacją. Pozwala także na usuwanie danych z bazy.
5
Mapowania Kierowane-Szablonowo
<?xml version="1.0"?> <FlightInfo> <Wstęp>W następujących lotach są wolne miejsca: </Wstęp> <SelectInstrukcja>SELECT Airline, FltNumber, Depart, Arrive FROM Flights </SelectInstrukcja> <Zakończenie>Mamy nadzieję, że spełnią twoje oczekiwania </Zakończenie> </FlightInfo>
6
Po przetworzeniu przez middleware transformujący dane
<?xml version="1.0"?> <FlightInfo> <Wstęp>W następujących lotach są wolne miejsca:</Wstęp> <Flights> <Row> <Airline>LOT</Airline> <FltNumber>123</FltNumber> <Depart>Dec 12, :43</Depart> <Arrive>Dec 13, :21</Arrive> </Row> ... </Flights> <Zakończenie>Mamy nadzieję, że spełnią twoje oczekiwania</Zakończenie> </FlightInfo>
7
Model Tabelowy (ang. Table Model)
< bazaDanych > <tabela> <wiersz> <kolumna1>...</kolumna1> <kolumna2>...</kolumna2> </wiersz> ... </tabela> ... </ bazaDanych >
8
Przykład mapowania z użyciem modelu obiektów określających dane
<Zamówienia> <ZamówienieHandlowe ZHNumer="12345"> <Klient KlientNumer="543"> <KlientNazwa>F.U.H ABC</KlientNazwa> <Ulica>Kosciuszki 1</Ulica> <Miasto>Kraków</Miasto> <Województwo>Małopolskie</Województwo> <KodPocztowy>30-071</KodPocztowy> </Klient> <DataZamówienia>981215</DataZamówienia> <Linia LiniaNumer="1"> <Towar TowarNumer="123"> <Opis> <P><B>Klucz francuski:</B><BR /> Nierdzewna stal, odlany w jednym kawałku, dożywotnia gwarancja.</P> </Opis> <Cena>9.95</Cena> </Towar> <ilość>10</ilość> </Linia> <Linia LiniaNumer="2"> <Towar TowarNumer="456"> <Opis> <P><B>Nożyce do blachy:<B><BR /> Stal hartowana, rok gwarancji.</P> </Opis> <Cena>13.27</Cena> </Towar> <ilość>5</ilość> </Linia> </ZamówienieHandlowe> </Zamówienia>
9
Oprogramowanie pośredniczące (ang. middleware)
ADO Developer: Microsoft URL: Licencja: Komercyjna Typ bazy danych: Relacyjna (OLE DB, ODBC) Kierunki przekształceń: baza danych XML, XML baza danych. Środowisko/Platforma: Windows.
10
DB2XML Developer: Volker Turau URL: Licencja: Open Source Typ bazy danych: Relacyjne (JDBC) Kierunki przekształceń: baza danych XML Środowisko/Platforma: Java
11
iConnector Developer: infoteria URL: Licencja: Komercyjna Typ bazy danych: Relacyjne (ODBC), Lotus Notes/Domino Kierunki przekształceń: Baza danych XML, XML Baza danych Środowisko/Platforma: Windows (COM lub Windows service), Java.
12
ODBC2XML Developer: Intelligent Systems Research URL: Licencja: Shareware Typ bazy danych: Relacyjne (ODBC) Kierunki przekształceń: Baza danych XML Środowisko/Platforma: wykonywalny program Windows 32 lub DLL.
13
Przykład współpracy z Postgresem
Utwórzmy tabelę ``Pogoda'': create table Pogoda(dzien int, stan varchar(25)); insert into Pogoda(dzien, stan) values (1, 'sloneczna'); insert into Pogoda(dzien, stan) values (2, 'pochmurnie'); insert into Pogoda(dzien, stan) values (3, 'leje');
14
import java.sql.*; import java.math.*; import oracle.xml.sql.query.*; public class smplPstgrs { //======================================== // main() - public static void public static void main(String args[]) throws SQLException // Postgre JDBC Driver DriverManager.registerDriver(new org.postgresql.Driver()); // Postgre JDBC connection String user = "NazwaUżytkownika"; String password = "Hasło"; String tabName = "Pogoda"; Connection conn = DriverManager.getConnection("jdbc:postgresql://URLSerwera/NazwaBD", user, password);
15
//tworzone jest zapytanie, następnie jest ono wykonywane, rezultat będzie
//przechowywany w obiekcie ResultSet Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery("select * from "+tabName ); /* zainicjowanie OracleXMLQuery. Należy zauważyć, że można podać zapis kwerendy sql zamiast obiektu ResultSet */ OracleXMLQuery qry = new OracleXMLQuery(conn,rset); // określenie kształtu generowanego dokumentu XML qry.setRowsetTag("ZAPIS_POGODY"); // set the tags encapsulating the whole doc qry.setRowTag("RECORD"); // sets the row separator tag qry.setRowIdAttrName("NRdnia"); // sets the id attribute of the row element qry.useUpperCaseTagNames(); // use upper case tag names qry.setErrorTag("ERR"); // tag for errors writen to XML doc // Wydobycie dokumentu XML w postaci tekstu String xmlString = qry.getXMLString(); // Wydrukowanie rezultatu System.out.println(xmlString); }
16
Wynik Aplikacja wygeneruje następujący dokument XML:
<?xml version = '1.0'?> <ZAPIS_POGODY> <REKORD NRDNIA="1"> <DZIEN>1</DZIEN> <STAN>sloneczna</STAN> </REKORD> <REKORD NRDNIA="2"> <DZIEN>2</DZIEN> <STAN>pochmurnie</STAN> <REKORD NRDNIA="3"> <DZIEN>3</DZIEN> <STAN>leje</STAN> </ZAPIS_POGODY>
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.