Narzędzia użytkownika

Narzędzia witryny


pl:ztb:xml

Bazy danych i XML

PostgreSQL

PostgreSQL umożliwia zarówno generację dokumentów XML na podstawie danch relacyjnych, jak i gromadzenie i przetwarzanie dokumentów XML. Opis funkcji umożliwiających dostęp do danych XML znajduje się pod adresem: http://www.postgresql.org/docs/9.1/static/functions-xml.html

Publikacja XML

Dana jest tabela kompozycje w bazie danych Internetowej Kwiaciarni:

             Table "public.kompozycje"
    Column    |          Type          | Modifiers 
--------------+------------------------+-----------
 idkompozycji | character(5)           | not null
 nazwa        | character varying(40)  | not null
 opis         | character varying(100) | 
 cena         | numeric(7,2)           | 
 minimum      | integer                | 
 stan         | integer                | 

Napisz odpowiednie zapytanie tworzące w/w tabelę.

Wykonaj skrypt kwiaciarnia-kompozycje.sql umieszczający przykładowe dane w w/w tabeli.

Napisz odpowiednie zapytanie, które zwróci kompletny dokument XML reprezentujący kompozycje, których stan jest większy niż 4. Dokument ma być zgodny z przykładem poniżej.

<flowers>
  <bouquet id="ko2" quant="12" price="120">
    <name>Kosz rozyczek</name>
    <description>tuzin czerwonych rozyczek, molucella, gips, sizal, koszyk czerwony z palakiem</description>
  </bouquet>
...
</flowers>

Przechowywanie XML

Utwórz tabelę printers umożliwiającą przechowywanie informacji o drukarkach tj. nazwę oraz dokument XML opisujący jej parametry. Zbuduj również odpowiedni klucz główny. Informacje o drukarkach dane są w postaci zbioru plików XML.

Załaduj w/w dokumenty XML do tabeli printers. Możesz zainspirować się poniższym skryptem:

#!/bin/bash
 
for i in *.xml
do
 
cat <<EOT
INSERT INTO printer (name,description) VALUES( '$i', '`cat $i`');
EOT
 
done

Sprawdź czy operacja ładowania się powiodła i informacje o drukarkach znajdują sie w tabeli.

Uwaga: używając powyższej metody może pojawić się problem z apostrofami w dokumentach XML! Aby problem rozwiązać można zamienić wszystkie apostrofy na podwójne apostrofy przy tworzeniu odpowiednich zapytań INSERT.

Przetwarzanie XML

Posłuż się przykładem z wykładu, aby zbudować odpowiednie wyrażenia XPath mające zastosowanie poniżej.

Napisz zapytanie, które znajdzie nazwy i rozdzielczości poziome wszystkich drukarek. Rozdzielczość reprezentowana jest przez element x w dpi w resolution w mechanism w printer

Napisz zapytanie, które znajdzie nazwy i rozdzielczości poziome wszystkich drukarek i uporządkuj je rosnąco z uwagi na rozdzielczość zakłądająć, że rozdzielczość jesty typu text (dokonaj odpowiedniego rzutowania). Rozdzielczość reprezentowana jest przez element x w dpi w resolution w mechanism w printer

Napisz zapytanie, które znajdzie nazwy i rozdzielczości poziome wszystkich drukarek i uporządkuj je rosnąco z uwagi na rozdzielczość zakłądająć, że rozdzielczość jesty typu int (dokonaj odpowiedniego rzutowania). Rozdzielczość reprezentowana jest przez element x w dpi w resolution w mechanism w printer

Napisz zapytania, które znajdzie nazwy wszystkich kolorowych drukarek o rozdzielczości poziomej większej niż 1200. Rozdzielczość reprezentowana jest przez element x w dpi w resolution w mechanism w printer Drukarka kolorowa będzie zawierała element color w mechanism w printer.

Indeksowanie XML

Zweryfikuj wydajność zapytań z poprzedniego ćwiczenia z użyciem EXPLAIN.

Utwórz indeks na wartości rozdzielczości poziomej (skorzystaj z przykładu z wykładu).

Zweryfikuj wydajność zapytań z poprzedniego ćwiczenia.

Uwaga, może zaistnieć konieczność przekonania bazy danych o użyciu indeksów:

SET ENABLE_SEQSCAN TO OFF;

Uwaga, zwróć uwagę na typ danych tworzonego indeksu i typ danych używany w zapytaniach. Indeks zostanie użyty jedynie gdy typy będą takie same.

pl/ztb/xml.txt · ostatnio zmienione: 2021/01/08 14:09 (edycja zewnętrzna)