2013-02-07 9 views
6

Budujemy algorytm iteracyjny, używając zestawu zapytań SPARQL dla każdej iteracji. Ten algorytm działa świetnie, ale mamy problem z wykorzystaniem procesora. Silniki SPARQL, takie jak Fuseki, nie są prawdziwie wielowątkowe; umożliwiają wykonywanie wielu jednoczesnych zapytań w wielu wątkach, ale każde pojedyncze zapytanie jest jedno wątkowe. Patrząc na niektóre notatki Fuseki, odnoszę wrażenie, że Fuseki nie jest bezpieczny dla wątków, więc nie jest to trywialny problem.Czy istnieją wątkowe implementacje SPARQL?

Ponieważ nasz algorytm jest z natury szeregowy pod względem zapytań SPARQL i jesteśmy zainteresowani jednym uruchomieniem na raz, czy jest jakiś silnik SPARQL, który może skorzystać z, powiedzmy, 32 rdzeni?

+0

Fuseki jest bezpieczny dla wątków według projektu. Jeśli pojawią się jakieś problemy, prześlij zgłoszenie błędu. – AndyS

+1

@AndyS, z tego co wiem, jest wielowątkowy w tym sensie, że mogę mieć wiele wątków, każdy z własną transakcją. Jednak nie można podzielić tej samej transakcji między wiele wątków. Ta http://jena.apache.org/documentation/tdb/tdb_transactions.html mówi, że wielowątkowy dostęp do tej samej transakcji jest ograniczony do odczytu (lub jeden wątek robi zapis), stąd mój komentarz, że nie jest bezpieczny dla wątków (przynajmniej na to, co chcę). Zauważam również, że silnik NIE korzysta z wielu rdzeni dla jednego zapytania, czego właśnie szukam, stąd moje pytanie. – Adam

Odpowiedz

1

Tak, istnieje, BigData jest to przykład open source/komercyjny tego.

Mój własny projekt dotNetRDF wykorzystuje również wielowątkowy ciężko, w moim przypadku levarage funkcja Net PLINQ parallelize łączy, produktów, FILTER i BIND operacji choć nie zawsze są one podatne na to.

Na notatce Fuseki (Disclaimer Jestem również zaangażowany w projekt Apache Jena), ponieważ AndyS wskazuje, że Fuseki jest bezpieczny w użyciu. Problem polega na tym, że mechanizm zapytań (ARQ) nie jest zaprojektowany do równoległego działania, niektóre pomysły na ten temat były omawiane w przeszłości, ale w IMO wymagały dość znaczących przeróbek.

+0

Sprawdzę BigData. Nasza maszyna to bezgłowy Linux-a, a ja wolałbym uniknąć tego, aby dowiedzieć się, jak zainstalować system Windows, jeśli mogę tego uniknąć, więc najpierw sprawdzę alternatywę. Ale wygląda na to, że dotNetRDF zrobi to, czego potrzebuję. – Adam

+0

W zależności od wagi, podczas gdy dotNetRDF ma mechanizm z gwintem, skaluje się tylko do kilku milionów trójek w obecnym wcieleniu i jest nietrwałym magazynem (tj. Musisz ładować dane za każdym razem). BigData jest prawdopodobnie lepszą opcją, szczególnie w scenariuszach produkcyjnych. – RobV

1

Silnik Urika opracowany i sprzedawany przez YarcData jest wysoce wielowątkowy (do kilku tysięcy równoczesnych wątków) i pracuje w bardzo dużej pamięci. Prawdopodobnie nie nadaje się do budżetu hobbystów. :)

+0

Właściwie to pytanie pochodziło z czasu, gdy pracowaliśmy nad zgłoszeniem do YarcData Challenge, które zrobili jakiś czas temu, kiedy zaczęliśmy używać uRiKa. Ale chcieliśmy czegoś do A) bawić się przy debugowaniu, a B) porównywać uRiKa z klasyczną maszyną. – Adam

+0

Och, a uRiKa to całe urządzenie, a nie tylko oprogramowanie. Maszyna wykorzystuje procesory ThreadStorm (potomne ze starych XMT, jeśli jesteś zainteresowany), które robią swoje wątki w sposób zasadniczo odmienny od sposobu działania chipów x86. Więc nawet gdybyś miał gotówkę, nie mógłbyś naprawdę użyć silnika na standardowej maszynie. – Adam