20 Milliarden Zeilen / Monat - Hbase / Hive / Greenplum / Was?

stimmen
31

Ich mag Ihre Weisheit für ein Data-Warehouse-System zur Aufnahme, die richtige Lösung verwenden. Hier sind einige Details besser zu verstehen das Problem:

Die Daten werden in einem Sternschema Struktur mit einem großen Tatsache organisiert und ~ 15 Dimensionen.
20B Tatsache Zeilen pro Monat
10 Abmessungen mit hundert Zeilen (etwas Hierarchie)
5 Dimensionen mit Tausenden Zeilen
2 Maße mit ~ 200K Zeilen
2 große Abmessungen mit 50M-100M Reihen

Zwei typische Abfragen ausführen gegen diese DB

Top Mitglieder in DIMQ:

select    top X dimq, count(id) 
from      fact 
where     dim1 = x and dim2 = y and dim3 = z 
group by  dimq 
order by  count(id) desc

Maßnahmen gegen ein Tupel:

select    count(distinct dis1), count (distinct dis2), count(dim1), count(dim2),...
from      fact 
where     dim1 = x and dim2 = y and dim3 = z 

Fragen:

  1. Was ist die beste Plattform solche Abfragen ausführen
  2. Welche Hardware benötigt
  3. Wo kann es gehostet (EC2?) Werden


    (Bitte ignorieren Import und Probleme beim Laden im Moment)

Tnx,
Haggai.

Veröffentlicht am 09/12/2008 um 22:05
quelle vom benutzer
In anderen Sprachen...                            


7 antworten

stimmen
55

Ich kann nicht genug betonen: Holen Sie sich etwas , das schön mit off-the-shelf Reporting - Tool spielt.

20 Milliarden Zeilen pro Monat bringt Sie in VLDB Gebiet, so müssen Sie Partitionierung. Die geringe Mächtigkeit Dimensionen würden auch vorschlagen, dass Bitmap-Indizes eine Leistung gewinnen würden.

  • Vergessen Sie die Cloud - Systeme ( Hive , Hbase ) , bis sie reifen SQL - Unterstützung haben. Für eine Data - Warehouse - Anwendung mögen Sie etwas , das mit herkömmlichen Reporting - Tool arbeitet. Ansonsten werden Sie sich ständig verzetteln Schreiben und Aufrechterhaltung Ad-hoc - Bericht Programme.

  • Die Datenmengen sind überschaubar mit einer konventionelleren DBMS wie Oracle - Ich weiß von einem großen europäischem Telco , die 600 GB pro Tag in eine laden Oracle - Datenbank. Alle anderen Dinge gleich sind , das ist um zwei Größenordnungen größer als Ihr Datenvolumen, so Shared - Disk - Architekturen immer noch Spielraum für Sie haben. Eine Shared-Nothing - Architektur wie Netezza oder Teradata wird wahrscheinlich noch schneller sein , aber diese Mengen sind nicht auf einem Niveau , das über ein herkömmliches Shared-Disk - System ist. Bedenken Sie aber, dass diese Systeme sind recht teuer.

  • Auch bedenken , dass MapReduce ist keine effiziente Abfrage Auswahlalgorithmus . Es ist grundsätzlich ein Mechanismus Brute-Force - Berechnungen für die Verteilung. Greenplum hat ein MapReduce Back-End, aber ein speziell konzipierter Shared - Nothing - Motor viel effiziente und mehr Arbeit für weniger Hardware durchgeführt werden.

Meine Meinung dazu ist , dass Teradata oder Netezza wahrscheinlich das ideale Werkzeug für den Job sein würde , aber auf jeden Fall die teuerste. Oracle , Sybase IQ oder auch SQL Server würde auch die Datenmengen beteiligt handhaben, aber langsamer sein wird - sie gemeinsam genutzte Plattenarchitekturen sind , aber trotzdem diese Art von Datenvolumen verwalten. Siehe diesen Beitrag für einen Überblick über VLDB bezogene Funktionen in Oracle und SQL Server, und bedenken Sie, dass Oracle hat gerade die Einführung Exadata Storage - Plattform auch.

Mein Rücken-of-a-Kippe-Paket Kapazitätsplan schlägt vor, vielleicht 3-5 TB oder so pro Monat einschließlich Indizes für Oracle oder SQL Server. Wahrscheinlich weniger auf Oracle mit Bitmap-Indizes, obwohl ein Indexblatt einen 16-Byte-ROWID auf Oracle im Vergleich zu einem 6-Byte-Seite Verweis auf SQL Server verfügt.

Sybase IQ macht ausgiebig Gebrauch von Bitmap-Indizes und wird für Data-Warehouse-Abfragen optimiert. Obwohl eine Shared-Disk-Architektur, ist es sehr effizient für diese Art der Abfrage (IIRC war es die ursprüngliche Spalt-orientierte Architektur). Dies wäre wahrscheinlich besser als Oracle oder SQL Server, da es für diese Art von Arbeit spezialisiert ist.

Greenplum könnte eine billigere Option sein, aber ich habe es tatsächlich nie verwendet, so kann ich auf nicht kommentieren, wie gut es funktioniert in der Praxis.

Wenn Sie 10 Dimensionen mit nur ein paar hundert Zeilen betrachten sie zu einer einzigen verschmelzen Junk - Dimension die wird abspecken Ihre Faktentabelle durch die zehn Tasten in nur ein verschmelzen. Sie können immer noch Hierarchien auf einer Dschunke Dimension implementieren und dies würde 1/2 oder mehr von der Größe der Faktentabelle klopft und eine Menge Festplattennutzung durch Indizes beseitigen.

Ich empfehlen , dass Sie mit etwas gehen, die sich gut mit einem angemessenen Querschnitt von Reporting - Tools spielt. Das bedeutet , einen SQL - Frontend. Kommerzielle Systeme wie Crystal Reports ermöglichen Berichte und Analysen , die von Menschen mit einer leicht zugänglichen Gruppe von SQL - Fähigkeiten durchgeführt werden. Die Open-Source - Welt hat sich auch erzeugt BIRT , Jasper Reports und Pentaho. . Hive oder HBase setzen Sie in das Geschäft ein eigenes Front-End des Gebäudes, die Sie wirklich nicht wollen , es sei denn , Sie sind glücklich , die nächsten 5 Jahre zu verbringen benutzerdefinierten Bericht Formatierer in Python zu schreiben.

Schließlich Host es irgendwo kann man leicht einen schnelles Daten-Feed von Ihren Produktionssystemen erhalten. Das bedeutet wahrscheinlich, eigene Hardware in Ihrem eigenen Rechenzentrum. Dieses System wird I / O gebunden sein; es tut einfache Verarbeitung auf große Datenmengen. Das heißt, Sie Maschinen mit schnellen Disk-Subsystemen benötigen. Cloud-Anbieter sind in der Regel nicht diese Art von Hardware zu unterstützen, da es sich um eine Größenordnung teurer als die Art von Einweg-1U-Box ist traditionell von diesen Outfits verwendet. Schneller Disk I / O ist nicht eine Stärke von Cloud-Architekturen.

Beantwortet am 09/12/2008 um 22:49
quelle vom benutzer

stimmen
0

Eine Alternative für eine geringe Anzahl von Benutzern wäre ein (Beowulfs) -Cluster sein. 20K kauft man 50 Nettops mit 500G jeder. Das ist ungefähr 3 kW Spitzenleistung. Oder 4 Monate von Cloud-Storage.

Beantwortet am 11/12/2008 um 14:41
quelle vom benutzer

stimmen
0

NXC, sind Sie sicher über diese 600 Milliarden Zeilen pro Tag? Selbst wenn eine Zeile nur ein Byte sein würde, das ist 600 GB täglich von Daten. Unter der Annahme einer angemesseneren 100 Byte pro Zeile, reden wir über 60 TB Daten pro Tag, 1,8 PB pro Monat. Ich bezweifle wirklich jemand, dass viele Daten durch Oracle zu pumpen.

Andere Quellen scheinen zu bestätigen , dass Oracle recht schwierig zu handhaben, wenn das Datenvolumen 2-stellige TB Zahlen erreicht.

Beantwortet am 12/12/2008 um 14:42
quelle vom benutzer

stimmen
2

Lesen Sie die Website von Monash: http://www.dbms2.com/ Er über große Datenbanken schreibt.

Vielleicht können Sie Oracle Exadata (verwenden http://www.oracle.com/solutions/business_intelligence/exadata.html und http://kevinclosson.wordpress.com/exadata-posts/ ) oder vielleicht können Sie Hadoop verwenden. Hadoop ist frei.

Beantwortet am 20/12/2008 um 01:17
quelle vom benutzer

stimmen
9

Ich habe großen Erfolg mit hatte vertica . Ich bin derzeit irgendwo zwischen 200,000,000-1000000000 Zeilen in einem Tag laden - durchschnittlich etwa 9 billons einen Monat Reihe - obwohl ich als als 17 Milliarden in einem Monat hoch gegangen sind. Ich habe die Nähe von 21 Dimensionen und die Abfragen laufen unglaublich schnell. Wir zogen auf von dem älteren System , wenn wir einfach nicht die Fenster der Zeit haben die DATALOAD- zu tun.

wir haben eine sehr umfassende Studie und Untersuchung verschiedener Lösungen - und praktisch alles, was auf dem Markt sah. Während beide Teradata und Netezza haben uns geeignet wäre, waren sie einfach zu teuer für uns. Vertica schlug sie beide auf dem Preis / Leistungsverhältnis. Es ist übrigens eine säule Datenbank.

Wir haben etwa 80 Benutzer jetzt - und es wird erwartet, dass etwa 900 bis zum Ende des nächsten Jahres wachsen, wenn wir vollständig Ausrollen beginnen.

Wir verwenden ausgiebig ASP.NET/dundas/reporting Dienste für Berichte. Es spielt auch schön mit Dritten Reporting-Lösungen - obwohl wir es nicht versucht haben.

Durch die Art und Weise , was Sie für DATALOAD- verwenden werden? Wir sind mit Informatica und haben mit ihm sehr zufrieden. SSIS fuhr uns die Wand.

Beantwortet am 20/12/2008 um 01:50
quelle vom benutzer

stimmen
2

Ich bin gespannt, was Sie schließlich ausgewählt. Ihre Frage war auf das hintere Ende des Jahres 2008. Heute ist die Situation anders mit HBase, Greenplum, Schwein usw. geben SQL wie Zugang.

Beantwortet am 25/01/2012 um 17:22
quelle vom benutzer

stimmen
3

Mit HBase und JapserServer hbase Bericht pluging können anständige Berichte erstellt werden. Low-Latency-OLAP können in HBase erstellt werden. Dies wird das gleiche wie die SQL arbeiten. JapserServer HBase Plugin bietet Hbase Abfragesprache, die eine Verlängerung Hbase Scan-Befehl.

Beantwortet am 01/10/2012 um 10:23
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more