Darmowy fragment publikacji:
IDZ DO
IDZ DO
PRZYK£ADOWY ROZDZIA£
PRZYK£ADOWY ROZDZIA£
SPIS TREĎCI
SPIS TREĎCI
Oracle9i i XML
Autorzy: Ben Chang, Mark Scardina, Stefan Kiritzov
T³umaczenie: Bart³omiej Jab³oñski, Cezary Welsyng
ISBN: 83-7361-064-2
Tytu³ orygina³u: Oracle9i XML Handbook
Format: B5, stron: 432
KATALOG KSI¥¯EK
KATALOG KSI¥¯EK
KATALOG ONLINE
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
TWÓJ KOSZYK
DODAJ DO KOSZYKA
DODAJ DO KOSZYKA
Wykorzystaj do maksimum mo¿liwoġci XML w Oracle9i!
CENNIK I INFORMACJE
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
ZAMÓW INFORMACJE
O NOWOĎCIACH
O NOWOĎCIACH
ZAMÓW CENNIK
ZAMÓW CENNIK
CZYTELNIA
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Projektuj i uruchamiaj w Oracle9i niezale¿ne od platformy aplikacje oparte na
transakcjach wykorzystuj¹ce XML — standard opisu danych, umo¿liwiaj¹cy
integrowanie elektronicznych aplikacji biznesowych i wymianê danych typu
business-to-business. Z niniejszej ksi¹¿ki, napisanej przez cz³onków zespo³u Oracle XML
Development Team dowiesz siê, jak za pomoc¹ pakietu XML Developer Kit (XDK)
mo¿na tworzyæ, przekszta³caæ i przegl¹daæ dokumenty XML oraz u¿ywaæ ich zgodnie
z w³asnymi potrzebami. Zamieszczone w ksi¹¿ce przyk³ady rzeczywistych zastosowañ
tego standardu ilustruj¹ sposób, w jaki klienci Oracle mog¹ efektywnie wykorzystywaæ
wbudowane funkcje obs³ugi XML.
Z ksi¹¿ki dowiesz siê jak:
• korzystaæ z infrastruktury Oracle9i XML oraz pakietu XML Developer Kit (XDK),
u¿ywaæ parserów, procesorów, generatorów, przegl¹darek i innych narzêdzi
pakietu XDK,
• tworzyæ rozbudowane aplikacje Oracle9i oparte na komponentach XML dla
jêzyka Java,
• wykorzystywaæ wbudowane w Oracle9i nowe funkcje SQL i PL/SQL dla XML
oraz mechanizmy przesy³ania komunikatów oparte na XML,
• uwzglêdniaæ ró¿nice pomiêdzy serwerem OAS (Oracle Application Server)
i serwerem Oracle9iAS (Oracle9i Application Server),
• projektowaæ i wdra¿aæ aplikacje transakcyjne dla serwerów OAS i Oracle9i,
• umo¿liwiæ dostêp do dokumentów w skali ca³ego przedsiêbiorstwa poprzez
sk³adowanie ich w systemie iFS (Internet File System),
• zarz¹dzaæ za pomoc¹ narzêdzia Oracle Text ró¿nymi rodzajami danych — tekstem,
grafik¹, dĥwiêkiem i obrazem wideo — traktuj¹c je jak zwyk³e typy danych,
• tworzyæ e-biznesowe aplikacje internetowe za pomoc¹ komponentu Oracle
E-Business XML Services.
Spis treści
O Autorach...................................................h......................................... 13
Wprowadzenie ...................................................h.................................... 15
Rozdział 1. Oracle i XML ...................................................h...................................... 21
Podstawowe koncepcje i terminologia...................................................k...................................21
Prolog...................................................k...................................................k...................
Definicja typu dokumentu (DTD) ...................................................k...................................23
Treść dokumentu ...................................................k...................................................k..........25
API dla DOM...................................................k...................................................k................25
Proste interfejsy API dla XML (SAX) ...................................................k............................28
API dla przestrzeni nazw ...................................................k.................................................32
API parsera ...................................................k...................................................k...................35
API dla standardu XSLT ...................................................k.................................................36
API dla XML Schema ...................................................k...................................................k..36
.........23
Dlaczego XML?...................................................k...................................................k..................36
Strategia firmy Oracle dla standardu XML ...................................................k.............................38
Działalność firmy Oracle w zakresie XML ...................................................k...........................38
Obecność firmy Oracle w Komitetach Grup Roboczych W3C..........................................39
XML Developer’s Kit firmy Oracle ...................................................k................................40
Sieć OTN dla XML...................................................k...................................................k.............41
Przegląd produktów Oracle obsługujących XML...................................................k..................44
Produkty Oracle udostępniające interfejsy aplikacji ...................................................k.......44
Produkty Oracle wykorzystujące XML do wymiany danych.............................................45
Produkty Oracle wykorzystujące XML do konfigurowania aplikacji ................................46
Produkty Oracle wykorzystujące XML do zarządzania zawartośckią
i publikowania dokumentów ...................................................k.........................................47
Przegląd zastosowań komponentów XML firmy Oracle...................................................k.......48
Tworzenie i publikowanie dokumentów ...................................................k.........................48
Personalizowane usługi dostarczania informacji...................................................k.............48
Aplikacje sterowane danymi, które łatwo dostosować do potrzeb użytkownika ...............48
Handel elektroniczny za pomocą koszyka na zakupy opartego na XML...........................48
Komunikowanie typu B2B przez Internet ...................................................k.......................49
Integrowanie aplikacji dzięki wymianie komunikatów opartej na XML ...........................49
Przykładowa aplikacja ...................................................k...................................................k........49
6
Oracle9i i XML
Rozdział 2. Podstawowe technologie XML w Oracle ................................................. 53
Parser XML dla języka Java V2 ...................................................k............................................53
Obsługa SAX ...................................................k...................................................k................54
Obsługa DOM...................................................k...................................................k...............59
Obsługa XSLT ...................................................k...................................................k..............66
Obsługa XML Schema ...................................................k...................................................k.71
Generator klas Java ...................................................k...................................................k.............75
Wejściowy dokument DTD ...................................................k.............................................76
Przetwarzanie dokumentów DTD w celu generowania klas Java ......................................76
Tworzenie poprawnego dokumentu XML na podstawie klas Java ....................................78
Dokument XML utworzony przez aplikację Java ...................................................k...........79
Wejściowy dokument XML Schema...................................................k...............................79
Przeglądanie i przekształcanie dokumentów XML za pomocą narzędzi Java..........................82
Komponent DOMBuilder ...................................................k................................................83
Komponent XSLTransformer ...................................................k..........................................85
Komponent XMLSourceView...................................................k.........................................86
Komponent XMLTreeView...................................................k.............................................89
Komponent XMLTransformPanel...................................................k...................................89
Komponent DBView ...................................................k...................................................k....92
Komponent DBAccess...................................................k...................................................k..92
Parser XML dla PL/SQL...................................k...................................................k.....................92
Przykłady ...................................................k...................................................k......................93
Parser XML i procesor XSLT dla języka C...................................................k...........................95
Samodzielny parser i zintegrowany z nim procesor XSLT ................................................96
Parser XML i procesor XSLT w postaci bibliotek ...................................................k..........97
Interfejs aplikacji DOM ...................................................k.................................................101
Prosty API dla XML (SAX) ...................................................k..........................................102
Obsługa XSLT ...................................................k...................................................k............107
Obsługa XML Schema ...................................................k..................................................108
Procesor XML Schema w postaci bibliotek ...................................................k..................108
Parser XML, procesor XSLT i procesor XML Schema dla C++ ...........................................109
Generator klas C++ ...................................................k...................................................k...........109
Rozdział 3. Projektowanie aplikacji baz danych Oracle9i ........................................ 113
Oracle9i — baza danych z obsługą XML...................................................k............................114
Komponenty XML dla maszyny JServer i języka Java firmy Oracle.....................................115
Podstawowe informacje na temat architektury JServer...................................................k.115
Komponenty XML dla języka Java ...................................................k...............................117
Publikowanie i wywoływanie komponentów XML dla języka Java................................119
Schemat bazy danych a dokumenty XML ...................................................k...........................121
Odwzorowywanie dokumentów XML na schemat bazy danych .....................................123
Odwzorowywanie schematu bazy danych na wirtualne dokumenty XML ......................125
Zapamiętywanie i wyszukiwanie danych XML ...................................................k............127
XSQL — XSLT/SQL Server Pages...................................................k.....................................129
Architektura XSQL Pages ...................................................k.............................................131
Instalacja narzędzia XSQL Servlet ...................................................k................................132
Tworzenie dynamicznych dokumentów XML na podstawie zapytań SQL .....................133
Obsługa warunkowych instrukcji SQL w XSQL ...................................................k..........135
Przykład: sprzedaż książek ...................................................k..................................................136
Projektowanie schematu bazy danych ...................................................k...........................136
Projektowanie witryny WWW wykorzystującej XSQL...................................................k137
Spis treści
7
Rozdział 4. Projektowanie aplikacji w architekturze Oracle Application Server ........ 143
Architektura Oracle Application Server ...................................................k..............................145
Procesy nasłuchujące HTTP ...................................................k..........................................146
Komponenty OAS ...................................................k...................................................k......146
Kartrydże aplikacji...................................................k...................................................k......147
Architektura Oracle Internet Application Server ...................................................k.................148
Usługi komunikacyjne w architekturze iAS ...................................................k..................149
Usługi prezentacji w architekturze iAS ...................................................k.........................150
Usługi dla logiki biznesowej w architekturze iAS ...................................................k........152
Usługi zarządzania danymi w architekturze iAS...................................................k...........153
Usługi systemowe w architekturze iAS ...................................................k.........................154
Komponenty iAS po stronie klienta...................................................k.....................................155
Oracle Database Client Developer’s Kit...................................................k........................155
Oracle XML Developer’s Kit ...................................................k........................................155
Oracle LDAP Client Toolkit...................................................k..........................................155
Aplikacja Bookstore w postaci serwleta OAS ...................................................k.....................155
Aplikacja BookstoreServlet ...................................................k...........................................158
Rejestrowanie aplikacji i kartrydża BookstoreServlet...................................................k...160
Wywoływanie aplikacji BookstoreServlet ...................................................k....................160
Dostęp do bazy danych ...................................................k..................................................161
Korzystanie z usługi transakcyjnej ...................................................k................................165
Wywoływanie komponentów OAS ...................................................k...............................165
Aplikacja Bookstore w postaci serwleta iAS...................................................k.......................166
Konfigurowanie platformy Apache ...................................................k...............................166
Konfigurowanie motoru serwleta JServ ...................................................k........................166
Rozdział 5. System plików Oracle iFS ...................................................h................. 167
Cechy systemu ...................................................k...................................................k............
......167
Pamięć tabel...................................................k...................................................k................168
Parsery ...................................................k...................................................k........................168
Wizualizatory...................................................k...................................................k..............168
Nakładki...................................................k...................................................k......................168
Protokoły...................................................k...................................................k................
.....169
Korzyści ...................................................k...................................................k............................169
Komponenty...................................................k...................................................k...............
.......170
XML...................................................k...................................................k..................................170
Oracle8i interMedia Text i Oracle9i Text...................................................k............................171
Model dokumentu ...................................................k...................................................k..........
...172
Właściwości dokumentu ...................................................k...................................................k...173
Właściwości niezależne od wersji ...................................................k.................................173
Właściwości zwykłe ...................................................k...................................................k...173
Właściwości powiązań...................................................k...................................................k175
Właściwości użytkownika ...................................................k.............................................175
Przetwarzanie dokumentów ...................................................k.................................................175
Definiowanie typów dokumentów ...................................................k.......................................176
Przykładowa definicja typu ...................................................k...........................................177
Standardowe właściwości typu...................................................k......................................177
Niestandardowe właściwości typu...................................................k.................................179
Atrybuty właściwości ...................................................k...................................................k.180
Rozszerzenia plików ...................................................k...................................................k.........183
Korzystanie z systemu iFS...................................................k...................................................k184
Przykład 1.: Tworzenie i zapisywanie pliku Hello World................................................185
Przykład 2.: Tworzenie lepszej wersji pliku Hello World................................................185
8
Oracle9i i XML
Przykład 3.: Praca z plikami ...................................................k..........................................186
Przykład 4.: Wyszukiwanie plików ...................................................k...............................187
Pliki XML w systemie iFS...................................................k...................................................k188
Składowanie parsowanych plików XML...................................................k.......................188
Składowanie nieparsowanych plików XML...................................................k..................190
Wizualizacja plików XML ...................................................k............................................190
Inne istotne informacje na temat plików XML...................................................k....................191
Rozdział 6. Wyszukiwanie dokumentów XML za pomocą narzędzia Oracle Text ....... 193
Oracle Text — wyszukiwarka tekstowa następnej generacji..................................................194
Model indeksowania w Oracle Text ...................................................k....................................195
Skład danych...................................................k...................................................k...............196
Filtr ...................................................k...................................................k....................
.........196
Moduł podziału na sekcje ...................................................k..............................................197
Moduł podziału na leksemy...................................................k...........................................199
Praca z Oracle Text ...................................................k...................................................k...........199
Skład danych...................................................k...................................................k...............201
Sekcje pól i sekcje strefowe...................................................k...........................................203
Sekcje stop ...................................................k...................................................k..............
....206
Sekcje atrybutów ...................................................k...................................................k........207
Wyszukiwanie według składni XPATH w grupie PATH_SECTION_GROUP..............208
Dynamiczne dodawanie sekcji ...................................................k......................................209
Rozdział 7. Usługi XML dla e-biznesu w Oracle ...................................................h.... 211
Ogólne informacje na temat usług XML ...................................................k.............................211
Elementy składowe XML Services...................................................k......................................212
Interfejs administratora ...................................................k..................................................212
Serwer SOAP...................................................k...................................................k..............212
Interfejsy API klienta...................................................k...................................................k..212
Repozytorium usług i zdarzeń ...................................................k.......................................212
Terminologia...................................................k...................................................k.....................213
Usługa XML ...................................................k...................................................k...............213
Usługa sieciowa ...................................................k...................................................k..........213
Grupa usług...................................................k...................................................k.................213
Kluczowy punkt integracji...................................................k.............................................213
Punkt wywołania ...................................................k...................................................k........213
Rekord wywołania ...................................................k...................................................k......214
Zdarzenie ...................................................k...................................................k....................214
Subskrybent zdarzenia ...................................................k...................................................k214
Usługi XML i SOAP...................................................k...................................................k........
.215
Czym jest protokół SOAP ...................................................k.............................................215
Jak działa SOAP? ...................................................k...................................................k.......215
Jakie są zadania klienta SOAP?...................................................k.....................................217
Jakie są zadania serwera SOAP? ...................................................k...................................217
Wytyczne dotyczące grup usług ...................................................k..........................................218
Wytyczne dotyczące usług...................................................k...................................................k218
Model zabezpieczeń...................................................k...................................................k..........220
Szczegóły uruchamiania usługi...................................................k............................................221
Wytyczne dotyczące wywołań...................................................k.............................................221
Przykład wywołania usługi ...................................................k..................................................222
Wytyczne dotyczące zdarzeń ...................................................k...............................................223
Przykład sygnalizowania zdarzenia ...................................................k.....................................224
Przykład sygnalizowania zdarzenia podzbiorowi subskrybentów..........................................225
Usługi będące subskrybentami zdarzeń ...................................................k...............................227
Wdrażanie nowej usługi...................................................k...................................................k....227
Spis treści
9
Tworzenie profilu identyfikacji ...................................................k...........................................237
Tworzenie rekordu wywołania...................................................k.............................................238
Uruchamianie przykładowego programu...................................................k.............................241
Interfejsy API wywołań i zdarzeń...................................................k........................................244
Klasa oracle.apps.jtf.services.invocation.Client ...................................................k............244
Klasa oracle.apps.jtf.services.invocation.Param...................................................k............246
Klasa oracle.apps.jtf.services.invocation.ServiceResult...................................................k251
Rozdział 8. Oracle i XML w działaniu...................................................h................... 255
Narzędzie XML SQL ...................................................k...................................................k........255
Pobieranie danych w formacie XML...................................................k.............................256
Zapisywanie danych w formacie XML ...................................................k.........................257
Modyfikacja danych za pomocą narzędzia XML SQL ...................................................k.259
Usuwanie danych za pomocą narzędziu XML SQL...................................................k......260
Instalowanie narzędzia XML SQL ...................................................k................................261
Rozszerzanie możliwości narzędzia XML SQL...................................................k............262
Serwlet Oracle XSQL ...................................................k...................................................k.......262
Strony XSQL ...................................................k...................................................k..............263
Instalowanie serwleta XSQL ...................................................k.........................................264
Przekazywanie zapytań do serwleta XSQL ...................................................k...................265
Konwersja raportów XSQL za pomocą arkuszy stylów...................................................k267
Wstawianie nowych rekordów w serwlecie XSQL ...................................................k.......269
Modyfikowanie danych za pomocą serwleta XSQL ...................................................k.....270
Budowanie stron z wykorzystaniem technik XML...................................................k..............272
Wdrażanie rozwiązań XML...................................................k...........................................273
Wymagania projektowe ...................................................k.................................................273
Architektura ...................................................k...................................................k................274
Przykładowa aplikacja ...................................................k...................................................k274
Rozszerzenie możliwości przykładowej aplikacji ...................................................k.........276
Narzędzia Oracle Portal-to-Go ...................................................k......................................276
Przekazywanie komunikatów w XML...................................................k.................................277
Rozwiązanie — XML...................................................k...................................................k.277
Wymagania projektowe ...................................................k.................................................278
Architektura ...................................................k...................................................k................278
Przykład implementacji ...................................................k.................................................279
Rozszerzenie możliwości przykładowej aplikacji ...................................................k.........284
Serwer Oracle Integration Server ...................................................k..................................285
Rozdział 9. Studium przypadku: zastosowanie technologii XML w Oracle................. 287
Strona FAQ w XML ...................................................k...................................................k.........287
Wymagania aplikacji...................................................k...................................................k.........288
Projekt aplikacji ...................................................k...................................................k................288
Schemat bazy danych aplikacji ...................................................k............................................289
Generowanie schematu XML ...................................................k..............................................290
Generowanie klas Java...................................................k...................................................k......291
Przechowywanie dokumentów XML w bazie danych...................................................k.........292
Generowanie dokumentów XML za pomocą SYS_XMLGEN
i SYS_XML_LAGG ...................................................k...................................................k292
Pobieranie danych z dokumentu XML za pomocą funkcji Extrackt()
i ExistsNode()...................................................k...................................................k...........293
Wyszukiwanie skojarzonych FAQ ...................................................k................................293
Tworzenie aplikacji internetowej...................................................k.........................................296
Wprowadzanie nowych zgłoszeń do listy FAQ...................................................k...................297
Wyszukiwanie FAQ...................................................k...................................................k..........302
10
Oracle9i i XML
Przeszukiwanie dokumentów XML za pomocą funkcji HASPATH i INPATH ....................304
Wykorzystywanie indeksów opartych na funkcjach
do optymalizacji dostępu do dokumentów ...................................................k........................305
Adresowanie danych za pomocą URI...................................................k..................................305
Budowanie słownika ...................................................k...................................................k.........306
Rozszerzanie możliwości aplikacji ...................................................k......................................308
Rozdział 10. Aplikacje XML oferowane w sieci OTN.................................................. 311
Dostęp do aplikacji XML...................................................k...................................................k..312
Korzyści z przeglądania przykładowych aplikacji...................................................k...............313
Aplikacje XML ...................................................k...................................................k.................315
Aplikacja: Hello World...................................................k..................................................315
Aplikacja: Dane pracowników ...................................................k......................................318
Aplikacja: Polisy Ubezpieczeniowe ...................................................k..............................319
Aplikacja: Błędne klasy ...................................................k.................................................322
Aplikacja: Czy korzystasz z XML? ...................................................k...............................324
Aplikacja: Perspektywy obiektowe ...................................................k...............................326
Aplikacja: Sprawdzanie kodów portów lotniczych ...................................................k.......326
Aplikacja: Wyświetlanie kodów portów lotniczych...................................................k......332
Aplikacja: Usługa SOAP ...................................................k...............................................333
Aplikacja: Wyświetlanie wyników zapytań ad hoc...................................................k.......335
Aplikacja: Wykresy słupkowe ...................................................k.......................................335
Instalowanie i uruchamianie aplikacji XML...................................................k........................336
Rozdział 11. Przyszłe kierunki rozwoju ...................................................h.................. 341
Rola organizacji ustalających standardy ...................................................k..............................342
Rola konsorcjum W3C ...................................................k..................................................342
Rola organizacji OASIS ...................................................k................................................348
Standardy XML dla przemysłu ...................................................k............................................350
Najważniejsze jednostki tworzące standardy DTD i schematy ........................................350
Przykład korzyści ze stosowania przemysłowych standardów kDTD
i schematów XML...................................................k...................................................k....351
Wpływ technologii XML na Internet...................................................k...................................353
Najważniejsze podmioty związane z XML ...................................................k...................353
Dodatek A Specyfikacje XML, DOM, SAX i XSLT konsorcjum W3C ......................... 357
Specyfikacja XML ...................................................k...................................................k............357
Definicja XML...................................................k...................................................k............357
Dokumenty ...................................................k...................................................k................
.357
Definicje typu dokumentu DTD ...................................................k....................................358
Specyfikacja DOM...................................................k...................................................k............361
Definicja DOM ...................................................k...................................................k...........361
DOM Poziom 2. i Poziom 3. ...................................................k.........................................362
Jądro DOM ...................................................k...................................................k.................362
Specyfikacja SAX ...................................................k...................................................k.............368
Definicja SAX ...................................................k...................................................k............368
Interfejs i klasy SAX ...................................................k...................................................k..369
Specyfikacja przestrzeni nazw XML ...................................................k...................................371
Definicja przestrzeni nazw ...................................................k............................................371
Terminologia przestrzeni nazw...................................................k......................................372
Atrybuty przestrzeni nazw ...................................................k.............................................372
Specyfikacja XPath ...................................................k...................................................k...........374
Definicja XPath ...................................................k...................................................k..........374
Wyrażenia XPath ...................................................k...................................................k........374
Funkcje ...................................................k...................................................k..................
.....375
Obiekty XPath ...................................................k...................................................k............377
Spis treści
11
Specyfikacja XSLT ...................................................k...................................................k...........378
Definicja XSLT ...................................................k...................................................k..........378
Szablony ...................................................k...................................................k.................
....379
Instrukcje XSLT ...................................................k...................................................k.........379
Funkcje XSLT ...................................................k...................................................k............387
Dodatek B Specyfikacje XML Schema konsorcjum W3C ........................................ 389
Definicja schematu XML...................................................k...................................................k..389
Wstęp ...................................................k...................................................k................................390
Dodatek C Inne specyfikacje konsorcjum W3C ...................................................h... 395
Inne specyfikacje konsorcjum W3C ...................................................k....................................395
Definicja XMLQuery...................................................k...................................................k..395
Protokoł XML...................................................k...................................................k.............400
Słownik ...................................................h............................................ 403
Skorowidz ...................................................h........................................ 415
Rozdział 6.
Wyszukiwanie
dokumentów XML
za pomocą narzędzia
Oracle Text
Bazy danych przechodzą rewolucję. Dane przechowywane w tradycyjnych relacyjnych
bazach mają ściśle określoną strukturę a zapytania ich dotyczące muszą być zawsze zgod-
ne ze schematem bazy danych. Takie bazy danych są bardzo przydatne do składowania
informacji strukturalnych ale niezbyt nadają się do obsługiwania danych w innej postaci.
Klasyczny język SQL wystarcza do wysyłania niestrukturalnych zapytań dotyczących
wartości przechowywanych w niewielkich kolumnach ale taki sposób wyszukiwania nie
jest efektywny w przypadku długich kolumn, zawierających dane tekstowe. Wyszukiwa-
nie danych składowanych w niestrukturalnych dużych obiektach (ang. LOB — Large
Objects) tradycyjnie było nieefektywne i przebiegało bardzo wolno. Dlatego właśnie
obecne wysiłki wielu producentów oferujących rozwiązania w zakresie baz danych sku-
piają się na zapewnieniu użytkownikom wydajnego dostępu do informacji złożonego
typu. Dotychczasowe, rygorystyczne ograniczenia dostępu do danych zostały złagodzone,
zatem wymagania dotyczące struktury danych przechowywanych w bazach danych rów-
nież stały się nieco mniejsze.
W dzisiejszych nowoczesnych, internetowych bazach danych są przechowywane dane
różnego typu. Bardzo często bazy zawierają mnóstwo danych w formie klipów wideo,
plików graficznych i dokumentów tekstowych a rozmiar tych danych jest o rzędy wiel-
kości większy od rozmiaru danych strukturalnych. Wraz z upowszechnieniem się Inter-
netu pojawiła się potrzeba uzyskiwania natychmiastowego dostępu do danych, dzięki
czemu dokumenty HTML i XML stały się powszechnie stosowanym mechanizmem
wymiany danych tekstowych w Internecie. Z tego względu nowoczesne bazy danych,
stanowiące zaplecze witryn WWW, muszą być w stanie łatwo wyszukiwać i odczytywać
tego rodzaju dokumenty i nadal cechować się skalowaplnością i wydajnością.
Oracle Text jest komponentem systemu Oracle9i i pozwala użytkownikom na zarządza-
nie różnymi typami danych za pomocą standardowych mechanizmów dostępu opartych
na SQL. W przypadku komponentu Oracle Text, który zastąpił narzędzie interMedia Text
194
Oracle9i i XML
(ConText), dokumenty tekstowe, obrazy, pliki audio i klipy wideo są traktowane jako dane
określonych typów. Komponent ten umożliwia łatwe zarządzanie danymi i zapewnia
obsługę Internetu, udostępniając narzędzia do tworzenia stron WWW oraz serwery WWW.
Mówiąc bardziej dokładnie, Oracle Text rozszerza funkcjonalność bazy danych o obsługę
informacji tekstowych, poprzez zapewnienie płynnego wyszukiwania danych w ramach
standardowych zapytań SQL, przetwarzanych całkowicie przez jądro bazy danych i nie-
wymagających użycia dodatkowych komponentów.
W niniejszym rozdziale znajduje się opis mechanizmów indeksowania tekstowego kompo-
nentu Oracle Text, ze szczególnym uwzględnieniem funkcji obsługujących standard XML,
takich jak :/.A5 6+10A)4172, #761A5 6+10A)4172, nowej funkcji 2#6*A5 6+10A)4172
oraz operatorów *#52#6*
i +02#6*
wprowadzonych w wersji Oracle9i. Omówione
zostaną również sekcje strefowe, sekcje pól oraz sekcje atrybutów. Przykłady różnych
wersji przykładowej aplikacji Bookstore ilustrują praktyczne zastosowanie narzędzia
Oracle Text.
Oracle Text — wyszukiwarka tekstowa
następnej generacji
We współczesnym relacyjnym systemie baz danych są uwzględnione wszystkie aspekty
związane z indeksowaniem prostych typów danych, takich jak liczby całkowite (ang.
integer) i niewielkie ciągi tekstowe (ang. strings). Złożone typy danych, takie jak tekst
strukturalny, dane przestrzenne, pliki graficzne i dźwiękowe oraz klipy wideo wymagają
wyszukiwania informacji opartego na analizie zawartości. Każdy ze złożonych typów
danych jest charakteryzowany przez format specyficzny dla aplikacji, określone wyma-
gania dotyczące indeksowania oraz predykaty selekcji. Na przykład dokumenty ze znacz-
nikami, takie jak HTML i XML, mogą wymagać wyszukiwania opartego na znacznikach
lub wartościach atrybutów. To wszystko powoduje potrzebę zapewnienia mechanizmów
indeksowania złożonych typów danych i wypracowanie wyspecjalizowanych technik
indeksowania.
Rozwiązanie firmy Oracle polegało na wprowadzeniu koncepcji typu indeksu (ang.
indextype). Odpowiednie zaplecze oferowane przez Oracle pozwala na definiowanie
typów indeksów w zależności od potrzeb użytkowników. Typ indeksu jest odpowiada
posortowanym lub odwzorowanym bitowo typom indeksowym wbudowanym do serwera
Oracle, z jedną istotną różnicą. Typy indeksów nie są wbudowane lecz implementowane
przez programistę aplikacji. Model ten jest oparty na koncepcji indeksowania zespoło-
wego (ang. cooperative indexing). Zgodnie z tym modelem komponent interMedia i sys-
tem Oracle9i współpracują ze sobą w celu zbudowania i utrzymywania indeksów typów
danych, takich jak dane tekstowe, przestrzenne czy OLAP (ang. online analytical pro-
cessing). Komponent interMedia odpowiada za zdefiniowanie struktury indeksu, utrzy-
mywanie zawartości podczas wykonywania operacji ładowania i uaktualniania oraz za
przeszukiwanie indeksu podczas obsługi żądania. Sama struktura indeksu może być
zapamiętana w bazie danych Oracle w postaci tabeli indeksowej (ang. IOT — Index-
Organized Table) lub na zewnątrz, jako plik systemu operacyjnego. Prpogramista określa
szczegóły implementacji typu indeksu, natomiast jądro bazy danych implementuje wbudo-
wane indeksy (posortowane lub odwzorowane bitowo).
Rozdział 6. Wyszukiwanie dokumentów XML za pomocą narzędzia Oracle Text
195
Indeksy Oracle Text mogą być tworzone niemal w każdej kolumnie bazy danych. Gdy
dokument jest wczytywany do jednej lub wielu takich kolumn, zmiany są wykrywane
automatycznie i dokument ten zostaje oznaczony jako gotowy do indeksowania. Podczas
indeksowania, które może być wykonane natychmiast lub według harmonogramu okre-
ślonego przez użytkownika, wszystkie słowa i części dokumentu są zapisywane w tabelach
indeksowych, wykorzystywanych później podczas operacji wyszukiwania. Zapytania
tekstowe są realizowane na podstawie indeksu. Po przetworzeniu takiego zapytania jest
zwracana lista trafień opisujących dopasowane dokumenty. Indeksy są utrzymywane
w bazie danych, a wszystkie żądania są przetwarzane w bazie danych za pomocą poje-
dynczego interfejsu aplikacji.
Optymalizator kosztów Oracle (ang. CBO — Cost Based Optimizer) szacuje i wybiera
najszybszy plan wykonania, przy określonych właściwościach uruchomieniowych wyszu-
kiwanych danych. Optymalizator CBO może potokowo przetwarzać identyfikatory wierszy
(ang. rowids) zgodne z predykatem lub sprawdzać na początku, czy z takim predykatem
zgodny jest wiersz o podanym identyfikatorze. W tym drugim przypadku wykorzystuje
się specjalny algorytm, wprowadzony w systemie Oracle8i, za pomocą którego można
uzyskać dostęp do „odwrotnego” indeksu tekstowego dlpa podanego wiersza.
Baza Oracle8i była pierwszą relacyjną bazą danych, w której obsługę zapytań tekstowych
zawarto w jej jądrze. Ten w pełni zintegrowany system do przetwarzania całego żądania
wykorzystuje jądro RDBMS i to z tego powodu narzędzie Oracle Text zasłużyło na miano
„wyszukiwarki tekstowej następnej generacji” (ang. Next-Generation Text Engine).
Model indeksowania w Oracle Text
Przetwarzanie tekstu za pomocą narzędzia Oracle Text może być rozumiane jako prze-
twarzanie potokowe pomiędzy różnymi modułami, którego przebieg na każdym etapie
można modyfikować za pomocą dostępnych opcji. W wyniku przetwarzania potokowego
otrzymuje się indeks odwrócony (ang. inverted index), będący listą słów pobranych
z dokumentu. Przy każdym słowie znajduje się lista dokumentów, w których się ono poja-
wia. Indeks ten jest nazywa się „odwróconym”, ponieważ zazwyczaj jest to lista doku-
mentów, z których każdy zawiera listę słów. Każdy etap przetwarzania potokowego można
dopasować do własnych potrzeb za pomocą systemu preferencji (ang. Preference System)
lub grup sekcji (ang. Section Groups). Są one tworzone przy użyciu specjalnych inter-
fejsów aplikacji:
EVZAFFNETGCVGARTGHGTGPEG
EVZAFFNETGCVGAUGEVKQPAITQWR
a następnie wstawiane do potoku indeksującego za popmocą klauzuli RCTCOGVGTU:
ETGCVGKPFGZZONAKPFGZQP$QQMUVQTG
ZONAVGZV
KPFGZV[RGKUEVZU[UKPFGZ
RCTCOGVGTU
W kolejnych punktach znajduje się szczegółowe omówienie poszczególnych modułów
potoku, przepływu informacji w potoku a także opcji i poleceń, które można zastosować
na każdym z etapów procesu indeksowania. Na rysunku 6.1 znajduje się ogólny schemat
przepływu informacji w potoku.
196
Oracle9i i XML
Rysunek 6.1.
Przepływ informacji
w potoku
indeksującym
Skład danych
Filtr
Na początku potoku indeksującego znajduje się skład danych (ang. datastore), w którym
po przeszukaniu wierszy tabel są umieszczane dane odczytane z kolumny. Wiersze nie
są przeszukiwane w jakiejś określonej kolejności. Tekst indeksowany przez narzędzie
Oracle Text może zostać zapamiętany w bazie danych lub w zewnętrznym systemie plików
(wówczas będzie on zarządzany przez tę bazę). Skład danych z adresami URL pozwala
na zarządzanie w ramach bazy danych dokumentami odległymi, znajdującymi się na innych
serwerach, do których dostęp jest uzyskiwany za pośrednictwem protokołu HTTP lub
FTP. Są to zazwyczaj dane kolumn ale w niektórych składach danych są one tylko wskaź-
nikiem do danych dokumentu. Przykładowo, skład 74.A #6#5614 korzysta z danych
kolumn jak z adresów URL i za pomocą operacji ) 6 odczytuje dane i zwraca je do klienta,
który wysłał żądanie. Składy danych są tworzone i włączane do potoku za pomocą nastę-
pującego skryptu:
EVZAFFNETGCVGARTGHGTGPEG
ZONAWTNU 74.A #6#5614
EVZAFFNUGVACVVTKDWVG
ZONAWTNU *662A241:; YYYRTQZ[WUQTCENGEQO
ETGCVGAKPFGZZONAKPFGZQPDQQMUVQTG
ZONAVGZV
RCTCOGVGTU
FCVCUVQTGZONAWTNU
Filtr pobiera dane dokumentu ze składu danych i przekształca je na postać tekstową (XML,
HTML lub zwykły tekst). Jest to potrzebne w przypadku dokumentów binarnych, takich
jak pliki Microsoft Word czy Adobe Acrobat. Oracle Text posiada filtry dla ponad 100
formatów plików, które można przemieszać w pojedynczej kolumnie. Filtry w poniższym
kodzie generują wyniki wyłącznie w formacie HTML.
Do potoku można ponadto dołączyć własne filtry lub filtry oferowane przez innych pro-
ducentów. Filtr własny (ang. custom-built filter) jest po prostu programem wykonywal-
nym lub skryptem, który pobiera dwa argumenty: nazwę pliku zawierającego sformato-
wany tekst źródłowy oraz nazwę pliku, do którego ma zostać zapisany wynik filtrowania.
Podobnie jak składy danych, filtry są tworzone i włączane do potoku za pomocą syste-
mu preferencji, tak jak pokazano poniżej:
EVZAFFNETGCVGARTGHGTGPEG
ZONAHKNVGT 75 4A(+.6 4
EVZAFFNUGVACVVTKDWVG
ZONAHKNVGT : 76#$. ZONHKNVGTGZG
ETGCVGAKPFGZZONAKPFGZQPDQQMUVQTG
ZONAVGZV
RCTCOGVGTU
FCVCUVQTGZONAWTNUHKNVGTZONAHKNVGT
Rozdział 6. Wyszukiwanie dokumentów XML za pomocą narzędzia Oracle Text
197
Moduł podziału na sekcje
Moduł podziału na sekcje (ang. sectioner) pobiera wynik filtrowania i przekształca go na
zwykły tekst. Proces konwersji jest sterowany przez klasę reprezentującą grupę sekcji,
która przekazuje do modułu informację o sposobie parsowania danych wejściowych.
Dane te mogłyby zostać potraktowane jako kod XML, kod HTML lub jako zwykły tekst.
Grupa sekcji zwykle zawiera jedną lub więcej sekcji. Definiując proste odwzorowanie,
programiści aplikacji mogą każdej sekcji nadać wybraną nazwę. Moduł rozpoznaje
poszczególne sekcje w każdej jednostce tekstu i automatycznie indeksuje go według tych
sekcji. Mogą to być sekcje XML, HTML lub też sekcje zawarte pomiędzy znacznikami
PCEPKM1VYKGTCLæE[ PCEPKM CO[MCLæE[ w ramach grupy #761A5 6+10A)4172.
Korzystając z operatora 106#+05 można za pomocą poniższej instrukcji przeprowadzić
wyszukiwanie indeksowanych sekcji:
5 . 6RM(41/DQQMUVQTG
9* 4 106#+05
ZONAVGZV
6JG5R[9+6*+0VKVNG
Po wysłaniu tego zapytania zostaje wyszukany dokument zawierający znaczniki XML,
podobne do poniższych:
DQQM
KF KF
CWVJQT ,QJP.G CTTGCWVJQT
VKVNG 6JG5R[9JQ COGKPHTQOVJG QNFVKVNG
DQQM
Jeżeli grupa sekcji jest pusta, moduł przekształca tekst sformatowany na zwykły ale
nie indeksuje granic sekcji. Wynik działania modułu zawiera granice sekcji oraz treść
dokumentu, reprezentowane jako zwykły tekst. Treść ta jest następnie przekazywana do
modułu podziału na leksemy. Konwersja na zwykły tekst wiąże się również z wykrywa-
niem znaczników najważniejszych sekcji, usuwaniem „niewidocznych” informacji oraz
ponownym formatowaniem tekstu. Granice sekcji są następnie przekazywane do wyszu-
kiwarki. Kolejnym krokiem jest tworzenie grup sekcji, które są wstawiane do potoku za
pomocą odpowiednich interfejsów aplikacji:
EVZAFFNETGCVGAUGEVKQPAITQWR
ITQWRAPCOG ITQWRAV[RG
ETGCVGKPFGZ
RCTCOGVGTU
UGEVKQPITQWRZONAITQWR
Moduł podziału na sekcje uwzględnia typ grupy wtedy, gdy przekształca dane wejściowe
pobrane z filtra na zwykły tekst i gdy oblicza indeksy dla granic sekcji. W przypadku
dokumentów XML najważniejsze grupy sekcji są następująpce:
$#5+ A5 6+10A)4172 — rozpoznawane są tylko znaczniki otwierające
i zamykające. Nie są obsługiwane elementy 1 6;2 , encje i atrybuty znaczników.
Przetwarzanie polega na usunięciu znaczników (ang. markup tags) z wynikowego
tekstu zwykłego.
*6/.A5 6+10A)4172 — ta grupa sekcji jest oczywiście przeznaczona
dla dokumentów HTML. Obsługiwane są nie tylko znaczniki pHTML 4.0
ale i znaczniki nieznane. Usuwana jest zawartość elpementów 5 4+26 i 56;.
oraz komentarze. Zachowywana jest jednak treść sekcpji 6+6. .
198
Oracle9i i XML
:/.A5 6+10A)4172 — moduł podziału na sekcje traktuje tekst wejściowy
jako dokument XML. Obsługiwane są wewnętrzne encje, wewpnętrzne elementy
1 6;2 oraz atrybuty znaczników. Znaczniki są usuwane, natomiast wewnętrzne
encje w odpowiedni sposób przetwarzane na wyjściowąp postać tekstu zwykłego.
Indeksowaniu podlegają również sekcje użytkownika zdefiniowane w grupie sekcji.
#761A5 6+10A)4172 — bardzo podobna do grupy :/.A5 6+10A)4172. Tekst
wejściowy jest traktowany jako dokument XML ale nie spą obsługiwane sekcje
zdefiniowane przez użytkownika. Zamiast tego wszystkipe niepuste znaczniki
są automatycznie indeksowane jako sekcje strefowe, op nazwach sekcji takich
samych jak nazwy znaczników.
2#6*A5 6+10A)4172 — podobna do grupy #761A5 6+10A)4172 w zakresie
przetwarzania znaczników i atrybutów występujących w sekcji. W tym przypadku
moduł podziału na sekcje dopuszcza stosowanie nowychp operatorów *#52#6*
i +02#6*
do przeprowadzania wyszukiwań typu XPATH. Ponadto, podcpzas
wyszukiwania przeprowadzanego w ramach sekcji w nazpwach atrybutów
i znaczników są rozróżniane małe i wielkie litery.
Sekcje posiadają trzy ważne atrybuty: VCI, PCOG i V[RG. Atrybut VCI informuje moduł
o sposobie, w jaki sekcja ma zostać rozpoznana. Gdy moduł znajduje sekwencję PCEPKM
PCEPKM , wówczas automatycznie ją indeksuje. Znaczniki są niepowtarzalne
w ramach w sekcji należących do danej grupy. Odwołania do nazw sekcji znajdują się
w zapytaniach. Wiele znaczników może zostać odwzorowanych na tę samą nazwę sekcji.
Są wówczas traktowane jako instancje tej samej sekcji. Oto najważniejsze typy sekcji
w przypadku dokumentów XML:
sekcje strefowe (ang. zone sections) — mogą się powtarzać a każda instancja
jest w semantyce zapytań traktowana osobno. Sekcje sptrefowe mogą zawierać
inne sekcje (w tym również sekcje strefowe) oraz same pstanowić części innych
sekcji. W przypadku grup #761A5 6+10A)4172 i2#6*A5 6+10A)4172 moduł
podziału na sekcje automatycznie indeksuje niepustep znaczniki jako sekcje
strefowe, o nazwach takich samych jak nazwy znacznikpów.
sekcje pól (ang. field sections) — moduł podziału na sekcje wydziela zawartość
takiej sekcji i osobno indeksuje jej elementy. Dziępki temu zapytania odwołujące
się do sekcji pól są obsługiwane do trzech razy szybciej niż zapytania skierowane
do sekcji strefowych, zwłaszcza gdy znaczniki tej sekpcji występują w każdym
dokumencie. Większa szybkość oznacza zmniejszenie eplastyczności. Sekcje pól
są z założenia stosowane w przypadku sekcji niepowtaprzających się
i nienakładających się na siebie. Jeżeli sekcja pola ppowtarza się w tym samym
dokumencie, wówczas jest traktowana jako swoja kontypnuacja a nie jako
odrębna instancja. Jeżeli nakłada się z sobą samą lubp z inną sekcją pola, wtedy
jest niejawnie zamykana w tym miejscu, gdzie rozpocpzyna się tamta druga
sekcja. W jednej grupie sekcji może znajdować się dop 64 sekcji pól.
sekcje atrybutów (ang. attribute sections) — sekcje atrybutów mogą być
dodawane wyłącznie do grup :/.A5 6+10A)4172, #761A5 6+10A)4172
i 2#6*A5 6+10A)4172. Moduł podziału na sekcje przeprowadza indeksowanie
zawartości atrybutu sekcji i udostępnia ją dla zapyptań. W przypadku grupy
#761A5 6+10A)4172 lub 2#6*A5 6+10A)4172 moduł ten automatycznie indeksuje
wartości atrybutów jako sekcje atrybutów o nazwach PCEPKM CVT[DWV .
Rozdział 6. Wyszukiwanie dokumentów XML za pomocą narzędzia Oracle Text
199
sekcje stop (ang. stop sections) — sekcji tych można używać tylko w odniesieniu
do grup #761A5 6+10A)4172 i 2#6*A5 6+10A)4172. Sekcja stop oznacza,
że odpowiedni PCEPKM ma zostać zignorowany i nie powinien być indeksowapny
jako sekcja. Liczba sekcji stop w grupach #761A5 6+10A)4172 i 2#6*A5 6+10A)4172
jest nieograniczona.
Moduł podziału na leksemy
Moduł podziału na leksemy (ang. lexer) pobiera zwykły tekst od modułu podziału na
sekcje i dzieli go na dyskretne elementy leksykalne lub słowa. Oracle Text zawiera
moduły obsługi języków, w których słowa są rozgraniczane odstępami (ang. whitespa-
ce-delimited languages) a także wyspecjalizowane moduły dla języków azjatyckich,
w przypadku których segmentacja jest bardziej złożona. Domyślny moduł podziału na
leksemy (DCUKEANGZGT) posiada również funkcje obsługi tematów (ang. themes), co pozwala
na tworzenie ujednoliconych indeksów tekstowych i tematycznych. Podobnie jak składy
danych, moduły podziału na leksemy są tworzone i wstawiane do potoku za pomocą
poniższego systemu preferencji:
EVZAFFNETGCVGARTGHGTGPEG
O[ADCUKEANGZGT DCUKEANGZGT
ETGCVGAKPFGZZONAKPFGZQPDQQMUVQTG
ZONAVGZV
RCTCOGVGTU
NGZGTO[ADCUKEANGZGT
Pod koniec procesu system Oracle9i z modułu podziału na leksemy pobiera elementy
leksykalne, natomiast z modułu podziału na sekcje odczytuje pozycje sekcji (ang. section
offsets). Na ich podstawie zbudowany zostaje indeks odwrócony, w którym są przecho-
wywane informacje o elementach leksykalnych oraz dokumentach, w których te elementy
występują.
Praca z Oracle Text
Poniższy kod źródłowy zawiera typową sekwencję instrukcji SQL, której można użyć
w Oracle Text pracując z dokumentami strukturalnymi:
Listing 6.1. Typowa sekwencja instrukcji SQL w Oracle Text na pirzykładzie tabeli bookstore
ETGCVGVCDNGDQQMUVQTG
RM07/$ 424+/#4;- ;
ZONAVGZV .1$
KPUGTVKPVQDQQMUVQTGXCNWGU
$QQM
+F +F
#WVJQT ,QJP.G CTTG#WVJQT
6KVNG 6JG0KIJV/CPCIGT6KVNG
$QQM
KPUGTVKPVQDQQMUVQTGXCNWGU
$QQM
+F +F
200
Oracle9i i XML
#WVJQT ,QJP)TKUJCO#WVJQT
6KVNG 6JG NKGPV6KVNG
$QQM
FQFCYCPKGRQQUVCđ[EJMUKæľGMFQMUKúICTPK
EQOOKV
DGIKP
EVZAFFNETGCVGAUGEVKQPAITQWR
ZONAUGEVKQPU :/.A5 6+10A)4172
EVZAFFNCFFAQPGAUGEVKQP
ZONAUGEVKQPU VKVNGUGE VKVNG
EVZAFFNCFFAQPGAUGEVKQP
ZONAUGEVKQPU CWVJQTUGE CWVJQT
EVZAFFNETGCVGARTGHGTGPEG
O[ADCUKEANGZGT DCUKEANGZGT
EVZAFFNUGVACVVTKDWVG
O[ADCUKEANGZGT KPFGZAVGZV VTWG
EVZAFFNUGVACVVTKDWVG
O[ADCUKEANGZGT KPFGZAVJGOGU HCNUG
GPF
ETGCVGKPFGZZONAKPFGZQPDQQMUVQTG
ZONAVGZV
KPFGZV[RGKUEVZU[UEQPVGZV
RCTCOGVGTU
NGZGTO[ADCUKEANGZGT5 6+10)4172ZONAUGEVKQPU
UGNGEVRMHTQODQQMUVQTG
YJGTGEQPVCKPU
ZONAVGZV .G CTTG9+6*+0CWVJQTUGE
Powyższy kod, w którym wykorzystano odwołania do aplikacji Bookstore, jest prostym
przykładem zastosowania SQL w Oracle Text. Ilustruje on proces tworzenia i wypełniania
tabeli oraz tworzenia grupy sekcji i indeksu tekstowego. Zawiera ponadto jedno proste
zapytanie.
Najpierw jest tworzona tabela. Do identyfikacji każdego dokumentu użyto klucza głów-
nego. Dokument XML został zdefiniowany jako obiekt CLOB (ang. Character Large
Object) systemu Oracle. Składa się on ze znaków należących do zestawu znaków bazy
danych Oracle9i. Tabela jest wypełniana dokumentami zawierającymi dane o książkach,
których liczebność może sięgać dziesiątków tysięcy epgzemplarzy.
Następnie jest tworzona grupa :/.A5 6+10A)4172, zawierająca dwie sekcje: dla znacznika
CWVJQT oraz dla znacznika VKVNG :
EVZAFFNETGCVGAUGEVKQPAITQWR
ZONAUGEVKQPU :/.A5 6+10A)4172
EVZAFFNCFFAQPGAUGEVKQP
ZONAUGEVKQPU VKVNGUGE VKVNG
EVZAFFNCFFAQPGAUGEVKQP
ZONAUGEVKQPU CWVJQTUGE CWVJQT
W przypadku tej grupy sekcji następuje odwzorowanie na kolumnę ZONAVGZV. Oznacza
to, że tekst jest traktowany przez motor Oracle Text jako strukturalny dokument XML.
Znaczniki otwierające, znaczniki zamykające oraz wewnętrzna definicja typu dokumentu
(DTD) są rozpoznawane jako osobne elementy. Elementy CWVJQT i VKVNG zostają
ponadto przygotowane do procedury indeksowania dla celów późniejszego wyszukiwa-
nia. Potem jest budowany indeks tekstowy a do potoku zostają włączone podstawowy
moduł podziału na leksemy (DCUKEANGZGT) oraz grupa sekcji:
ETGCVGKPFGZZONAKPFGZQPDQQMUVQTG
ZONAVGZV
KPFGZV[RGKUEVZU[UEQPVGZV
RCTCOGVGTU
NGZGTO[ADCUKEANGZGT5 6+10)4172ZONAUGEVKQPU
Rozdział 6. Wyszukiwanie dokumentów XML za pomocą narzędzia Oracle Text
201
Klauzula KPFGZV[RG oznacza, że ma zostać zbudowany indeks tekstowy a nie zwykły indeks
w postaci drzewa zbalansowanego (ang. B-tree). Po jego utworzeniu, w bazie danych
zawierającej przykładowe dwa dokumenty można już przeprowadzać wyszukiwanie kon-
tekstowe, używając w tym celu funkcji EQPVCKPU:
UGNGEVRMHTQODQQMUVQTG
YJGTGEQPVCKPU
ZONAVGZV .G CTTG9+6*+0CWVJQTUGE
W wyniku zapytania zostają zwrócone wszystkie wiersze tabeli DQQMUVQTG, w których
kolumna tekstowa zawiera ciąg .G CTTG w elemencie CWVJQT . Język SQL w wersji Oracle
nie posiada (na razie) zaimplementowanego typu logicznego, dlatego należało użyć ope-
ratora . W powyższym przykładzie wynik zapytania byłby następpujący:
2-
W kolejnych punktach, na przykładzie aplikacji Bookstore, zostaną omówione poszcze-
gólne etapy przetwarzania potokowego. Pozwoli to na pokazanie zastosowania różnych
technik użycia narzędzia Oracle Text.
Skład danych
Skład danych w Oracle Text zarządza procesem odczytu dpanych z kolumn bazy danych.
Bezpośredni skład danych (ang. direct datastore) jest najprostszy. Operuje on na danych
składowanych w kolumnie indeksowanej. Nie wymaga on przystosowywania atrybutów
do potrzeb użytkownika. Bezpośredni skład danych jest składem domyślnym ( (#7.6A #
6#5614 ), dlatego nie trzeba go jawnie dodawać do potoku Oracle Text. W przykładzie
aplikacji Bookstore użyto właśnie bezpośredniego skłapdu danych.
Plikowy skład danych (ang. file datastore) odczytuje dane kolumn z pliku. Po otwarciu
pliku czyta dane, traktując jego zawartość jako kolumnę indeksowaną. Oto zmodyfiko-
wana tabela DQQMUVQTG, z plikowym składem danych:
Listing 6.2. Zmodyfikowana tabela bookstore z plikowym składem idanych
ETGCVGVCDNGDQQMUVQTG
KF07/$ 424+/#4;- ;
ZONAVGZVXCTEJCT
KPUGTVKPVQDQQMUVQTGXCNWGU
DQQMZON
KPUGTVKPVQDQQMUVQTGXCNWGU
DQQMZON
DGIKP
EVZAFFNETGCVGARTGHGTGPEG
ZONAHKNGU (+. A #6#5614
EVZAFFNUGVACVVTKDWVG
ZONAHKNGU 2#6* ZONHKNGU
GPF
ETGCVGKPFGZZONAKPFGZQPDQQMUVQTG
ZONAVGZV
KPFGZV[RGKUEVZU[UEQPVGZV
RCTCOGVGTU
Pobierz darmowy fragment (pdf)