2012-10-31 13 views
7

Poszukuję dowolnego systemu NoSQL (najlepiej open source), który obsługuje funkcje analityczne (w skrócie AF), podobnie jak Oracle/SQL Server/Postgres. Nie znalazłem żadnych funkcji wbudowanych. Czytałem coś o Hive, ale nie ma rzeczywistej funkcji AF (Windows, wartości first_last, ntiles, opóźnienie, lead i tak dalej) tylko histogramy i ngrams. Również niektóre systemy NoSQL (na przykład Redis) obsługują mapowanie/zmniejszanie, ale nie jestem pewien, czy można go zastąpić AF.NoSQL z funkcjami analitycznymi

Chcę dokonać porównania wydajności, aby wybrać system Postgres lub NoSQL.

Więc w skrócie:

  1. wyszukiwania NoSQL systemów z AF
  2. mogę polegać na mapę/zmniejszenia zastąpić AF? Jest szybki, niezawodny, łatwy do przejścia.

ps. Próbowałem uczynić moje pytanie bardziej konstruktywnym.

Odpowiedz

1

Niektóre funkcje wykorzystują znajomość wszystkich istniejących danych, gdy dotyczą jakiegoś króla agregacji (średnia, mediana, odchylenie standardowe) lub jakiegoś porządku (pierwszego, ostatniego).

Jeśli potrzebujesz rozproszonego rozwiązania NOSQL, które obsługuje technologię AF po rozpakowaniu, system będzie musiał polegać na scentralizowanym indeksowaniu i metadanych, aby zachować informacje o danych we wszystkich węzłach, tym samym mając węzeł główny i prawdopodobnie pojedynczy punkt awarii.

Musisz zapytać, czego się spodziewasz, używając NoSQL. Chcesz tabele schemaless? Rozproszone dane? Lepsza nieprzetworzona wydajność dla bardzo prostych zapytań?

W zależności od potrzeb, widzę trzy główne alternatywy tutaj:

1 - użyć rozproszonego NoSQL bez pojedynczego punktu awarii (tzn Cassandra) do przechowywania danych i wykorzystać mapę/zmniejszenia do przetwarzania danych i produkują wyniki dla pożądanej funkcji (prawie każda większa obsługa NoSQL Hadoop). Ograniczeniem jest to, że kwerendy map/reduce nie są w czasie rzeczywistym (wykonanie kwerendy może potrwać kilka minut lub godzin) i wymagają dodatkowej konfiguracji i nauki.

2 - użyć tradycyjnych RDBMS, które obsługują wiele serwerów jak MySQL Cluster

3 - użyć NoSQL z topologii master/slave, który obsługuje zapytań ad-hoc i agregacja jak Mongo

Co do drugiego pytania: tak, możesz polegać na M/R, aby zastąpić AF. Możesz wykonać prawie wszystko za pomocą M/R.

+0

Rzeczywiście można obliczyć średnią na architekturze rozproszonej, ale aby to zrobić, należy przechowywać średnią wraz z liczbą. –

+0

@ Aurélien Indeed – lstern

+0

@Istern, tak masz rację. Raczej interesuje mnie, czy mogę polegać na mapie/zredukować, aby zastąpić wbudowane funkcje analityczne (wspominam o tym w drugim porządku). – ravnur

2

Kiedy już zrozumiesz, jak działa MapReduce, możesz robić niesamowite rzeczy za pomocą kilku linii kodu.

Oto miły kurs wideo:

http://code.google.com/intl/fr/edu/submissions/mapreduce-minilecture/listing.html

Rzeczywisty współczynnik trudności będzie między funkcjami, które można wdrożyć w jednym MapReduce i tych, które będą musiały łańcuchu MapReduces. Co więcej, niektóre ładne implementacje MapReduce (takie jak CouchDB) nie pozwalają na łatwe połączenie MapReduces.