(rd)ffreak — dialog — odcinek #3: o bazach danych

Dyskusji odcinek trzeci.

kt:
Napisałeś: „dane są przechowywane w postaci grafu RDF na zasadzie analogicznej jak w dzisiejszych bazach danych” i teraz „analogicznej”, tzn. jakiej?

ms:
„Analogicznej” = „wtórnej względem aplikacji”. Chodziło mi o to, że baza danych jest magazynem przechowującym to, co się tam wsadzi i tyle. Wewnętrzna struktura tego mechanizmu nie jest jakoś szczególnie ważna dla jego użytkownika. Interesujesz się jak jest zorganizowane przechowywanie danych np. w MySQL i dlaczego? Jeśli nie jesteś adminem tej bazy to raczej nie. Bardziej interesujące jest jak te dane wyglądają z poziomu aplikacji, czyli co ten magazyn danych może Ci zaoferować.

Przez analogię — istnieją mechanizmy przechowujące dane RDF. Jak to jest zorganizowane wewnętrznie (baza danych? jaka? może pliki? jakie?) nie ma znaczenia na poziomie abstrakcji o jakim mówiłem — po prostu ma być „RDF data store”, ma umożliwiać sprawne przechowywanie grafów i tyle... Takie rozwiązania już działają.

kt:
To oczywiste, że dużych zbiorów wiedzy, która ma być szybko przeszukiwalna nie trzyma się w rozproszonych plikach, tylko jakiejś formie bazy danych. Ze względu na ich popularność najczęściej zapewne używa się klasycznych relacyjnych baz danych

ms:
Po pierwsze, to wcale nie jest takie oczywiste. Wszystko zależy od rozmiarów Twoich grafów i od tego tego jakiego „silnika” zechcesz użyć do ich przetwarzania. Frameworki do obsługi oprogramowania Sieci Semantycznej radzą sobie z wieloma plikami nie najgorzej. Nie do wszystkiego jest zaraz konieczna baza danych...

Sam problem przechowywania grafów w bazie danych jest zdecydowanie zbyt ogromy żeby go streścić w kilku zdaniach ;-) Baza relacyjna ma w tym zakresie zarówno zalety jak i wady. Tak naprawdę najbardziej by się nadawała baza sieciowa lub „mieszana” (poszukaj na stronach Oracle informacji o przechowywaniu grafów RDF w Oracle Spatial 10g — to serio działa). Bazy obiektowe również mogą się przydać (na zasadzie sugestii, że hierarchie obiektów czy tabel to to samo co hierarchie klas w RDF) ale czasem także prowadzą do rozczarowań (np. przy implementacji bazy danych dla Sesame okazało się, że takie mechanizmy w bazie PostgreSQL jedynie pogarszają wydajność[1])...

Słowem - problem jest ogromny i nie ma jednego, oczywistego rozwiązania.

Dlatego powstają rozwiązania specyficzne dla poszczególnych zastosowań. Jak obejrzysz Developers Guide to Semantic Web Toolkits to okazuje się, że zakres wspieranych baz danych jest bardzo różny... Wspomniany wcześniej RAP posiada możliwość przechowywania grafów w relacyjnej bazie danych (np. MySQL, co pewnie Cię zainteresuje). Zajrzyj do dokumentacji. ARC zapewne również, chociaż tego nie trenowałem...

Komentarze

Brak komentarzy do tego wpisu.

 

Uwaga: Ze względu na bardzo intensywną działalność spambotów komentowanie zostało wyłączone po 60 dniach od opublikowania wpisu. Jeżeli faktycznie chcesz jeszcze skomentować skorzystaj ze strony kontaktowej.