Data Warehousing und Big Data

Ich entwerfe ein Data Warehouse-System. Ich brauche ein Programm, das: mehrere Datentypen erhält, sie verbindet und dann schnelle Abfragen an ihnen durchführt.

Da die Quellen in der Größenordnung von 250 GB (pro Tabelle) liegen, schätze ich, dass wir uns im Bereich Big Data befinden.

Ich kann die Arten von Abfragen, die auf diesem System ausgeführt werden, nicht im Voraus kennen, daher würde ich etwas ohne Schema benötigen. Außerdem muss dieses System dafür sorgen, dass wir tägliche Snapshots haben und sollte diese daher vernünftig abfragen können (mehr Infos hier ).

Ich kenne Apache Drill, aber es kann keine täglichen Snapshots abfragen (siehe Beispiel in der verknüpften Frage).

Antworten (2)

Wenn ich diesen Beitrag und Ihren anderen Beitrag lese, verstehe ich nicht ganz, warum Sie der Meinung sind, dass es schemalos sein muss. Schemalos ist im Allgemeinen ein Begriff, der mit Big Data (insbesondere Hadoop) verwendet wird, wenn Sie Daten aus mehreren Quellen haben, die Sie zur späteren Verwendung in ein Data Warehouse laden möchten. Anschließend konfigurieren Sie das Schema, wenn Sie bereit sind, die Daten zu verwenden.

Für Ihre großen Datensätze erwähnen Sie tägliche Snapshots, und obwohl dies die Arbeit erledigt, werden Sie am Ende mit einem massiven Overhead an Datenvolumen enden. Eine bessere Option besteht darin, die Änderungsdatenerfassung (CDC) zu aktivieren. CDC protokolliert nur die Änderungen an den Daten, anstatt eine vollständige Momentaufnahme aller darin enthaltenen Daten zu erstellen. Sie verschwenden also keinen Platz für alle unveränderten Datensätze. Einige Formen von CDC werden von den meisten modernen Datenbank-Engines unterstützt, aber es gibt auch Tools von Drittanbietern, die dies tun können.

Ich empfehle dringend, dass Sie den Rat eines externen Beratungsunternehmens einholen, das sich auf Data Warehousing spezialisiert hat, um Ihnen bei der Verwaltung zu helfen. Was Sie suchen, ist Fachwissen sowie Software-Empfehlungen.

Sie erhalten keine (normalen) Verknüpfungen in einer Datenbank wie MongoDB, das steht also außer Frage, aber warum sollte die Unfähigkeit, Abfragen im Voraus zu kennen, unbedingt kein Schema implizieren? Ihre Daten haben doch eine gewisse Struktur?

Aus dem Link zu einer anderen Frage geht hervor, dass Sie eine schnelle Textsuche benötigen (LIKE/ILIKE?).

Nun, dafür würden neue Versionen von Postgres gut passen, vorausgesetzt, Sie verwenden die pg_trgmErweiterung ( http://www.postgresql.org/docs/9.1/static/pgtrgm.html ). Es implementiert Indexsuchen (im Gegensatz zu sequentiellen Scans) mit LIKE/ILIKE-Operatoren mit Platzhaltern.

Dank dieser Erweiterung ist es mir gelungen, eine phänomenal schnelle Suchmaschine für eine ~ TB große PG-Datenbank zu erstellen.

Ich habe auch eine boolesche Abfrage-Engine geschrieben, die ein pyparsingPython-Modul verwendet, das typische AND, OR, NOTOperatoren und Schlüsselwörter hat, die ( pg_trgm-indizierten) Spalten entsprechen. Es übersetzt High-Level-Abfragen in SQL (eigentlich SQLAlchemy Core SQL-Ausdrücke). Auf diese Weise können Sie die DB recht flexibel abfragen und erhalten dennoch sehr schnell Ergebnisse. Ich weiß nicht, ob Sie eine suchmaschinenähnliche Funktionalität benötigen, aber ich bin sicher, dass eine Grammatik dafür ganz einfach mit entwickelt werden könnte pyparsing.

Wenn Sie etwas benötigen, das mehr numerische Berechnungen erfordert, ist PyTables extrem schnell für den Betrieb von Datensätzen außerhalb des Arbeitsspeichers (obwohl Zeichenfolgensuchoperatoren dort etwas rudimentär sind).