Dane semantyczne – rozwiązania bazodanowe

- autor: tsissput

Codziennie jest publikowane dziesiątki gigabajtów danych w Internecie. Większość z nich jest chaotyczna, nieuporządkowana a co za tym idzie – o małej użytecznej wartości, czyli mówiąc potocznie – są to po prostu dla nas śmieci. Dla zwiększenia efektywności przeszukiwania danych stworzono format XML, który miał na celu pewne usystematyzowanie danych, opisaniu ich struktury. Format ten stał się on standardem opisu dokumentów w różnych dziedzinach. Jednakże, to było za mało, aby system mający do dyspozycji dane w takim formacie, mógł być ekspertem – potrafiącym wnioskować i udzielać odpowiedzi na złożone zapytania. Formatowi XML brakowało semantycznych znaczeń i powiązań pomiędzy danymi. W celu uzupełnienia tego braku, opracowano format RDF, dzięki któremu dane „otrzymały” nowe znaczenie. Format ten umożliwia zdefiniowanie różnorakich relacji pomiędzy danymi. Dzięki stworzeniu takiej mapy powiązań, system może wnioskować nowe informacje, które są nie-wprost zawarte w jego bazie danych. Do przeszukiwania interesujących nas informacji, niezbędne są mechanizmy wyodrębniające te dane. Tak jak dla formatu XML opracowano języki zapytań XPath i XQuery eksplorujące dane, tak dla RDF opracowano technologię SPARQL. Obie te technologie są rekomendowane przez organizację W3C do tworzenia Semantycznej Sieci.

Jest wiele na rynku dostępnych frameworków do zarządzania danymi semantycznymi. Poprzez dostarczany interfejs programistyczny, mogą zostać skonfigurowane pod różne dostępne relacyjne SZBD. Istnieją także bazy danych, zapewniające wsparcie dla technologii RDF. Dzięki temu można połączyć zalety relacyjnego schematu baz danych dołączając dane semantyczne z zachowaniem pożądanej wysokiej wydajności. Ma to duże znaczenie – dane semantyczne mogą dochodzić w bilionach trójek RDF i ich przetwarzanie powinno być możliwie jak najefektywniejsze.

W tej części zostaną przedstawione opisy architektur oprogramowań semantycznych. Nie zabraknie też testów wydajności przeszukiwania na różnych ilościach danych. Te rozwiązania to m.in.:

  • AllegroGraph
  • Jena
  • Open Anzo
  • Oracle Semantic Technologies
  • Sesame

AllegroGraph został stworzony przez firmę Franz Inc. założoną w 1984 r. Oprogramowanie jest dostępne na dwóch licencjach: bezpłatnej – z maksymalnym limitem 50 mln trójek RDF oraz komercyjnej – bez żadnych ograniczeń. Aplikacja ma zamknięte źródła, więc nieznany jest sposób przechowywania danych semantycznych. Wszystkie operacje na danych jak przechowywanie i przetwarzanie jest realizowane wewnątrz AllegroGraph, tak więc nie jest wymagane posiadanie zewnętrznych SZBD czy innych oprogramowań do działania systemu. SPARQL jest wykorzystywany jako język zapytań, ale istnieje także możliwość bezpośredniego dostępu do trójek przez niskopoziomowy interfejs. Dostęp do API jest możliwy poprzez języki takie jak C#, Java, Python, Lisp. Istnieje także możliwość dostępu do AllegroGraph poprzez protokół HTTP. Poniższy schemat przedstawia architekturę Klient – Serwer tego systemu.

Jena została stworzona przez firmę HP w wydziale HP Labs powstałym w 1966 roku. Projekt został zaimplementowany w języku JAVA i wydany na licencji typu open source. Jena może współpracować z wieloma relacyjnymi bazami danych takich jak MySQL, PostgreSQL czy Oracle. Jest także możliwość trzymania danych RDF w pamięci. Do wyłuskiwania danych wykorzystywany jest język zapytań SPARQL, który został zaimplementowany w pakiecie ARQ. Zapytania mogą być wykonywane poprzez wbudowany w Framework graficzny interfejs Joseki, lub aplikację Java. API pozwala na współpracę z ontologiami w różnych formatach takich jak OWL czy RDFS. Rdzeń Jeny udostępnia metody na tworzenie, modyfikację, odczyt i zapis danych RDF. Poniższy schemat przedstawia architekturę Jeny.

Open Anzo został stworzony przez firmę IBM i wydany na licencji typu open source co umożliwia na rozszerzanie projektu o pożądane funkcjonalności. Możliwe są 3 tryby działania: osadzenie w aplikacji, uruchomienie jako zdalny serwer lub lokalnie. Poniższy schemat przedstawia architekturę Open Anzo.

Patrząc od góry: warstwa Anzo Client Stack zapewnia interfejs programistyczny dla takich języków jak Java, C#, JavaScript. Moduł Anzo Node API służy do opisu danych RDF. Standardową technologią do wykonywania zapytań jest SPARQL, wykorzystując indeksy w celu zwiększenia efektywności przetwarzania. Komponent RealTime Update Manager jest odpowiedzialny za dostarczanie wiadomości o stanie przetwarzania. Z kolei Storage Services zajmuje się magazynem danych RDF, którym może być relacyjna baza danych jak Oracle bądź DB2.

Oracle – każdy zapewne kojarzy firmę Oracle, która od 30 lat tworzy rozwiązania bazodanowe. W niedawnym czasie dodała obsługę dla danych semantycznych do swoich baz 10g i 11g. Powstały specjalne wersje Jena Adapter dedykowane do nich. Poniższy schemat obrazuje zastosowane rozwiązania:

Oracle zapewnia wsparcie dla ogromnych ilości trójek RDF poprzez SPARQL, który jest podobny do SQL. Dzięki temu można łączyć dane relacyjne z danymi semantycznymi używając jednego rodzaju zapytania. Pełne wsparcie dla SPARQL jest możliwe poprzez Jena Adapter. Oracle postarał się o zaawansowane metody kompresji, do zredukowania objętości danych semantycznych.

Producentem Sesame jest Aduna. Została napisana w Javie i wydana na licencji open source typu BSD. Poniższy schemat przedstawia architekturę Sesame.

Patrząc od dołu: Warstwa RDF Model implementuje podstawowe założenia dot. danych RDF. Komponent Rio(RDF I/O) jest odpowiedzialny za parsowanie i obsługę zapisu danych RDF. SAIL API(Storage and Inference Layer API) – służy do inicjalizacji, wykonywaniu zapytań i modyfikowaniu danych RDF. Repository API – jest repozytorium adresów. Moduł HTTPRepository jest odpowiedzialny za zdalne połączenie z serwerem Sesame przez protokół HTTP.

Do wsparcia ontologii OWL jest dostępna wtyczka BigOWLIM. Poza obsługą SPARQL’a, Sesame posiada alternatywny rodzaj interpretera zapytań: SeRQL(Sesame RDF Query Language). Poza znanymi formatami RDF (N3, N – triples, RDF/XML) wspiera nowe rodzaje takie jak: TriG oraz TriX.

Poniższa tabelka przedstawia zebrane cechy architektur powyższych rozwiązań:

Nazwa Język progr. Język zapytań Typ magazynu Licencja
AllegroGraph Lisp SPARQL -natywne komercyjna
Jena Java SPARQL -pamięć-natywne

-RDBMS

Open source
Open Anzo Java SPARQL -RDBMS Eclipse Public License
Oracle Semantic Technologies Java SPARQL -RDBMS BSD
Sesame Java SPARQLSeRQL -pamięć-natywne

-RDBMS

BSD

Teraz przyszedł czas przetestować te rozwiązania.

Oprogramowanie:

  • AllegroGraph 3.3.1
  • Jena SDB 1.1
  • Open Anzo 3.1.0
  • Oracle Semantic Technologies (Jena Adapter 2.0)
  • Sesame 2.2.4

Sprzęt:

  • LAN 1Gbps
  • Intel Xeon 3,8GHz
  • 6GB Ram
  • 2x 136GB Ultra320-SCSI HDD

Dane testowe:

  1. 100 000 trójek N3 (10,3 MB)
  2. 1 000 000 trójek N3 (107MB)
  3. 5 000 000 trójek N3 (538 MB)

Zapytania oraz dane zostały wygenerowane przez benchmark SP2B, wykorzystując szereg konstrukcji znanych z SQL takich jak: DISTINCT, LIMIT, UNION i inne. Poniższe wykresy przedstawiają wyniki testów:

Wyniki testów przedstawiają dużą różnorodność czasów wykonania. Przy większej ilości danych, AllegroGraph przekraczał dopuszczalny limit (1000000 ms). Tak duże zróżnicowanie spowodowane jest m. in. strukturą tabel jakie tworzą poszczególne Frameworki przy imporcie danych RDF. Sesame stworzył od 70-90 tabel(w zależności od ilości danych), gdzie podczas Jena tylko 4 tabele. W zapytaniach wykorzystujących SQL’owe konstrukcje typu Join, Jena ma dużą przewagę wydajnościową. Oracle korzysta z Jena Framework tak więc struktury danych mają identyczne. Po krótkim przeanalizowaniu wszystkich testów, widać że najlepiej sobie radzą Jena oraz Oracle. W przypadku zamiaru przechowywania dużych ilości danych i oczekiwaniu szybkiego ich przetwarzania, najlepiej wybrać, któryś z tych dwóch produktów.

Oryginalny dokument pt.: „Evaluation of Current RDF Database Solutions” jest dostępny na stronie: http://ceur-ws.org/Vol-539/paper_7.pdf. Wszystkie rysunki pochodzą z tego źródła.

Autor: Tomasz Maciejewski(83721)

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: