2010-09-27 9 views
15

Czy można używać Lucene jako pełnoprawnego magazynu danych (tak jak inne warianty nosql (mongo, couch)).Lucene jako magazyn danych

Wiem, że istnieją pewne ograniczenia, takie jak nowo zaktualizowane dokumenty przez jednego indeksatora, nie będą wyświetlane w innym indeksatorze. Musimy więc ponownie uruchomić narzędzie indeksujące, aby uzyskać aktualizacje.

Ale natknąłem się na solr ostatnio, wydaje się, że te problemy są unikane przez jakąś migawkową replikację.

Więc pomyślałem, że mogę użyć lucene jako magazynu danych, ponieważ używa tego samego rodzaju dokumentów (opartych na JSON) używanych przez mongo i wewnętrznie do zarządzania dokumentami, a jego sprawdzony algorytm indeksowania bardzo szybko pobiera dane.

Ale ciekawi mnie, czy ktoś próbował tego przed ..? jeśli nie, to powody, dla których nie wybiera się tego podejścia.

+1

Nie wiem zbyt wiele o Lucene, ale myślałem, że to głównie indeksator; że nie przechowuje dokumentu, po prostu je indeksuje. Więc i tak potrzebujesz magazynu danych poza Lucene ... Czy mam jakiś sens? – pascal

+1

@pascal, jej błąd .. lucene może również przechowywać dokumenty. Po zdefiniowaniu pól możemy określić, czy musimy przechowywać element, czy tylko indeks ... – RameshVel

+2

Zobacz http://stackoverflow.com/questions/3215029/nosql-mongodb-vs-lucene-or-solr-as-your -database/3216550 # 3216550 – Mikos

Odpowiedz

4

Pracowałem tylko z Solr, pochodną Lucene'a (i polecam używanie Solr prawie każdemu), więc moja opinia może być trochę stronnicza, ale powinno być możliwe użycie Solr jako magazynu danych tak, jednak nie byłoby zbyt użyteczne bez czegoś bardziej stałego w tle.

Problem, który możesz napotkać, polega na tym, że wprowadzanie danych do Solr nie gwarantuje, że otrzymasz je z powrotem, kiedy tego oczekujesz. Po zastosowaniu dość ścisłego faceting może wystąpić problem z odzyskiwaniem danych po prostu dlatego, że indeksator zdecydował się zgrupować wyniki w określony sposób.

Eksperymentowałem trochę z tym podejściem, ale jedyną realną korzyścią, jaką zobaczyłem, była sytuacja, w której indeks wyszukiwania po stronie klienta, aby mógł szybko wyszukiwać wewnętrznie, a następnie wysłać zapytanie do bazy danych w celu uzyskania rozszerzonych informacji.

Moja sugestia to użycie metody solr do wyszukiwania, a następnie zwrócenie jej krótkiej próbki danych, a także indeks do dalszych zapytań w tradycyjnym magazynie danych.

TL; DR: Tak, ale nie polecam.

15

Istnieje również problem trwałości. Podczas gdy indeks Lucene nigdy nie powinien ulec uszkodzeniu, widziałem, jak to się stało. A podejście, które Lucene podejmuje, aby naprawić uszkodzony indeks, to "wyrzuć go i odbuduj z oryginalnych danych". To ma sens dla narzędzia indeksującego. Ale wymaga to przechowywania danych w innym miejscu.

+0

To dobry punkt ... – RameshVel

3

The Guardian uses Solr as their data store. Możesz zobaczyć niektóre z ich przyczyn w tym pokazie slajdów.

W każdym razie uważam, że ich strona internetowa jest bardzo intensywnie traffickowana (z pewnością bardziej niż wszystko, nad czym pracuję), więc myślę, że czułbym się komfortowo mówiąc, że Solr prawdopodobnie będzie dla ciebie działać, ponieważ dostosowuje się do ich wymagań .

+0

Zgodnie z pokazem slajdów, Guardian wciąż używa relacyjnego magazynu danych. Solr jest używany jako baza danych, która zasila ich API. – anon