2012-10-31 9 views
7

Ich suche nach einem NoSQL System (vorzugsweise Open Source), das analytische Funktionen unterstützt (AF für kurz) wie Oracle/SQL Server/Postgres tut. Ich habe keine mit eingebauten Funktionen gefunden. Ich habe etwas über Hive gelesen, aber es hat keine tatsächliche Funktion von AF (Windows, First_last Werte, Ntiles, Verzögerung, Blei und so weiter) nur Histogramme und Ngrams. Auch einige NoSQL-Systeme (Redis zum Beispiel) unterstützen map/reduce, aber ich bin mir nicht sicher, ob AF damit ersetzt werden kann.NoSQL mit analytischen Funktionen

Ich möchte einen Leistungsvergleich machen, um entweder Postgres oder NoSQL-System zu wählen.

Also, kurz gesagt:

  1. für die Suche NoSQL Systeme mit AF
  2. Kann ich auf der Karte verlassen/reduzieren AF zu ersetzen? Ist es schnell, zuverlässig, einfach zu fahren?

ps. Ich habe versucht, meine Frage konstruktiver zu machen.

Antwort

1

Einige Funktionen verwenden das Wissen aller vorhandenen Daten, wenn es sich um einen König der Aggregation handelt (Mittelwert, Mittelwert, Standardabweichung) oder um eine Reihenfolge (erster, letzter).

Wenn Sie eine verteilte NOSQL-Lösung benötigen, die AF sofort unterstützt, muss das System auf eine zentralisierte Indizierung und Metadaten angewiesen sein, um Informationen über die Daten in allen Knoten zu behalten der Punkt des Versagens.

Sie müssen sich fragen, was Sie mit NoSQL erreichen möchten. Sie möchten schemalosen Tabellen? Verteilte Daten? Bessere rohe Leistung für sehr einfache Abfragen?

Abhängig von Ihren Bedürfnissen, ich sehe drei Alternativen hier:

1 - verwenden, um eine verteilte NoSQL ohne Single Point of Failure (dh: Cassandra) Ihre Daten zu speichern und verwenden Karte/reduzieren die Daten zu verarbeiten, und produzieren die Ergebnisse für die gewünschte Funktion (fast jede wichtige NoSQL-Lösung unterstützt Hadoop). Der Nachteil ist, dass Abfragen in Map/Reduced keine Echtzeit sind (das Ausführen der Abfrage kann Minuten oder Stunden dauern) und erfordert zusätzliche Einrichtung und Lernen.

2 - eine traditionelle RDBMS verwenden, die mehrere Server wie MySQL Cluster

3 unterstützen - verwenden, um eine NoSQL mit Master/Slave-Topologie, die Ad-hoc-und Aggregationsanfragen wie Mongo

Was die zweite Frage unterstützt: Ja, Sie können sich darauf verlassen, dass M/R AF ersetzt. Mit M/R können Sie fast alles machen.

+0

Sie können zwar den Durchschnitt einer verteilten Architektur berechnen, aber dazu müssen Sie den Durchschnittswert zusammen mit der Anzahl speichern. –

+0

@ Aurélien In der Tat – lstern

+0

@Ist, ja, Sie haben Recht. Ich würde eher interessant sein, kann ich mich auf map/reduce verlassen, um integrierte analytische Funktionen zu ersetzen (ich erwähne es in der zweiten Agenda) – ravnur

2

Sobald Sie wirklich verstanden haben, wie MapReduce funktioniert, können Sie erstaunliche Dinge mit ein paar Zeilen Code tun.

Hier ist ein schöner Video-Kurs:

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

Der eigentliche Schwierigkeit Faktor zwischen Funktionen sein, die Sie mit einem einzigen MapReduce implementieren können und diejenigen, die angekettet MapReduces müssen. Außerdem erlauben einige nette MapReduce-Implementierungen (wie CouchDB) nicht, MapReduces (einfach) zu verketten.