In den letzten zwei Jahren haben die großen Cloud Data Warehouses immer wieder Verbesserungen vorgenommen, die den Kunden eine schnellere Leistung und niedrigere Kosten bieten. Entgegen der landläufigen Meinung nehmen diese Anbieter] kontinuierliche Effizienzverbesserungen vor, durch die Kunden trotz der kurzfristigen Auswirkungen auf die Einnahmen Geld sparen[1]. Da die großen Anbieter bei der Leistung fast gleichauf liegen, sollten sich Kunden bei der Auswahl eines Data Warehouse auf die Benutzerfreundlichkeit konzentrieren.
Fivetran ist eine Datenpipeline, die Daten aus Anwendungen, Datenbanken und Dateispeichern mit den Data Warehouses unserer Kunden synchronisiert. Die Frage, die uns am häufigsten gestellt wird, lautet: „Welches Data Warehouse soll ich wählen?“ Um diese Frage besser beantworten zu können, haben wir uns mit Brooklyn Data Co. zusammengetan, um die Geschwindigkeit und die Kosten von fünf der gängigsten Data Warehouses zu vergleichen:
- Amazon Redshift
- Snowflake
- Google BigQuery
- Databricks
- Azure Synapse
Bei Benchmarks geht es um Entscheidungen: Welche Art von Daten werde ich verwenden? Wie viele? Welche Arten von Abfragen? Wie Sie diese Entscheidungen treffen, ist sehr wichtig: Ändern Sie die Form Ihrer Daten oder die Struktur Ihrer Abfragen, und das schnellste Warehouse kann zum langsamsten werden. Wir haben versucht, diese Auswahl so zu treffen, dass sie einen typischen Fivetran-Benutzer repräsentiert, sodass die Ergebnisse für die Art von Unternehmen, die Fivetran verwenden, nützlich sind.
Ein typischer Fivetran-Benutzer synchronisiert vielleicht Salesforce, JIRA, Marketo, Adwords und seine Oracle-Produktionsdatenbank mit einem Data Warehouse. Diese Datenquellen sind nicht besonders groß: Eine typische Quelle enthält Dutzende bis Hunderte von Gigabytes. Sie sind komplex. Sie enthalten Hunderte von Tabellen in einem normalisierten Schema, und unsere Kunden schreiben komplexe SQL-Abfragen, um diese Daten zusammenzufassen.
Der Quellcode für diesen Benchmark ist verfügbar unter https://github.com/fivetran/benchmark, und Rohdaten sind hier einsehbar.
Welche Daten haben wir abgefragt?
Wir haben den TPC-DS[2] -Datensatz in einem Maßstab von 1 TB erstellt. TPC-DS hat 24 Tabellen in einem Snowflake-Schema; die Tabellen repräsentieren Web-, Katalog- und Ladenverkäufe eines imaginären Einzelhändlers. Die größte Faktentabelle hatte 4 Milliarden Zeilen[3].
Welche Abfragen haben wir durchgeführt?
Von Mai bis Oktober 2022 [4]führten wir 99 TPC-DS-Abfragen durch. Diese Abfragen sind komplex: Sie haben viele Verknüpfungen, Aggregationen und Unterabfragen. Wir haben jede Abfrage nur einmal ausgeführt, um zu verhindern, dass das Warehouse vorherige Ergebnisse zwischenspeichert. Die Abfragen wurden sequenziell, eine nach der anderen, ausgeführt, anders als bei einem typischen realen Anwendungsfall, bei dem viele Benutzer gleichzeitig Abfragen ausführen.
Wie haben wir die Warehouses konfiguriert?
Wir haben jedes Warehouse in drei Konfigurationen ausgeführt, um den Kompromiss zwischen Kosten und Leistung zu untersuchen.
Kostenvergleiche zwischen den Systemen sind schwierig, da jedes System unterschiedliche Funktionen bietet, die zur Kostensenkung genutzt werden können. Diese Zahlen spiegeln nicht den Vorteil von Folgendem wider:
- Databricks Spot-Instance-Preise.
- Automatische Skalierung von Snowflake-Multiclustern.
- BigQuery On-Demand-Preise.
Diese und andere plattformspezifische Funktionen können zur Kostensenkung bei vielen Workloads eingesetzt werden.
Wie haben wir die Warehouses feinabgestimmt?
Diese Data Warehouses bieten jeweils erweiterte Funktionen wie Sortierschlüssel, Clustering-Schlüssel und Datumsaufteilung. Wir haben uns entschieden, keine dieser Funktionen in diesem Benchmark zu verwenden[7]. Wir haben Spaltenkomprimierungskodierungen in Redshift und Spaltenspeicherindizierung in Synapse angewendet; Snowflake, Databricks und BigQuery wenden die Komprimierung automatisch an.
Ergebnisse
Alle Warehouses hatten eine ausgezeichnete Ausführungsgeschwindigkeit, die für interaktive Ad-hoc-Abfragen geeignet war[8]. Um die Kosten zu berechnen, haben wir die Laufzeit mit den Kosten pro Sekunde der Konfiguration multipliziert.
Wie stark hat sich die Leistung verbessert?
Wir haben den gleichen Benchmark im Jahr 2020 durchgeführt. Die Leistung aller Systeme hat sich in den letzten zwei Jahren verbessert[9]:
Databricks hat die größten Verbesserungen erzielt, was nicht verwunderlich ist, da es seine SQL-Ausführungsengine komplett neu geschrieben hat.
Warum unterscheiden sich unsere Ergebnisse von früheren Benchmarks?
TPC-DS-Benchmark von Databricks
Im November 2021 veröffentlichte Databricks einen offiziellen TPC-DS-Benchmark, der die Leistung seiner neuen „Photon“-SQL-Ausführungsengine zeigt. Das Unternehmen hat auch einen Vergleich zwischen Databricks und Snowflake veröffentlicht und festgestellt, dass sein System 2,7-mal schneller und 12-mal billiger ist. Es gibt viele Unterschiede zwischen dem Benchmark von Databricks und unserem:
- Sie verwendeten einen 100-TB-Datensatz, während wir einen 1-TB-Datensatz verwendeten.
- Sie verwendeten einen 4XL-Endpoint, während wir einen L-Endpoint verwendeten.
- In einigen Tabellen haben Sie die Datumsaufteilung verwendet, sowohl für Databricks als auch für den Vergleich mit Snowflake.
- Sie führten den Befehl „analyze“ unmittelbar nach dem Laden aus, um die Spaltenstatistiken zu aktualisieren.
- Databricks gab die Gesamtlaufzeit an, während wir die Geomean Runtime angaben. Die Gesamtlaufzeit wird von den am längsten laufenden Abfragen dominiert, während Geomean allen Abfragen das gleiche Gewicht beimisst.
Databricks hat den Code zur Reproduktion seines Benchmarks auf der TPC-DS-Website veröffentlicht, was sehr hilfreich ist, wenn es darum geht, die wichtigsten Unterschiede zwischen unserem und ihrem Benchmark zu verstehen.
Cloud Data Warehouse-Leistungsbenchmark von Gigaom
Im April 2019 hat Gigaom eine Version der TPC-DS-Abfragen auf BigQuery, Redshift, Snowflake und Azure SQL Data Warehouse ausgeführt. Dieser Benchmark wurde von Microsoft gesponsert. Sie haben 30-mal mehr Daten verwendet (30 TB gegenüber 1 TB). Sie konfigurierten unterschiedlich große Cluster für verschiedene Systeme und beobachtete viel langsamere Laufzeiten als wir:
Es ist seltsam, dass sie eine so langsame Leistung beobachtet haben, wenn man bedenkt, dass ihre Cluster 5- bis 10-mal größer waren, ihre Daten aber nur 3-mal so groß waren wie unsere.
Redshift von Amazon im Vergleich zu BigQuery – Benchmark
Im Oktober 2016 führte Amazon eine Version der TPC-DS-Abfragen sowohl auf BigQuery als auch auf Redshift aus. Amazon berichtete, dass Redshift 6-mal schneller war und dass die Ausführungszeiten von BigQuery in der Regel mehr als eine Minute betrugen. Die wichtigsten Unterschiede zwischen ihrem und unserem Benchmark sind:
- Sie verwendeten einen 10-mal größeren Datensatz (10 TB gegenüber 1 TB) und einen 2-mal größeren Redshift-Cluster (38,40 USD/Stunde gegenüber 19,20 USD/Stunde).
- Sie haben das Warehouse mit Hilfe von Sortier- und Entfernungsschlüsseln abgestimmt, während wir das nicht getan haben.
- BigQuery Standard-SQL befand sich im Oktober 2016 noch in der Beta-Phase. Möglicherweise war es Ende 2018, als wir diesen Benchmark durchführten, schon schneller geworden.
Benchmarks von Anbietern, die behaupten, ihr eigenes Produkt sei das beste, sind mit Vorsicht zu genießen. Es gibt viele Details, die im Blogbeitrag von Amazon nicht aufgeführt sind. Sie haben zum Beispiel einen riesigen Redshift-Cluster verwendet – haben sie den gesamten Speicher einem einzigen Benutzer zugewiesen, um diesen Benchmark superschnell durchzuführen, obwohl das keine realistische Konfiguration ist? Wir wissen es nicht. Es wäre großartig, wenn AWS den zur Reproduktion des Benchmarks erforderlichen Code veröffentlichen würde, damit wir beurteilen können, wie realistisch er ist.
Redshift von Periscope im Vergleich zu Snowflake und BigQuery – Benchmark
Ebenfalls im Oktober 2016 verglich Periscope Data Redshift, Snowflake und BigQuery anhand von drei Varianten einer stündlichen Aggregationsabfrage, die eine Faktentabelle mit 1 Milliarde Zeilen mit einer kleinen Dimensionstabelle verband. Sie fanden heraus, dass Redshift etwa gleich schnell war wie BigQuery, aber Snowflake war 2-mal langsamer. Die wichtigsten Unterschiede zwischen ihrem und unserem Benchmark sind:
- Sie führten dieselben Abfragen mehrmals aus, wodurch die langsamen Kompilierungszeiten von Redshift eliminiert wurden.
- Ihre Abfragen waren viel einfacher als unsere TPC-DS-Abfragen.
Das Problem bei einem Benchmark mit „einfachen“ Abfragen ist, dass jedes Warehouse bei diesem Test ziemlich gut abschneidet. Es spielt keine Rolle, ob Snowflake eine einfache Abfrage schnell und Redshift eine einfache Abfrage sehr, sehr schnell durchführt. Entscheidend ist, ob sich die schwierigen Abfragen schnell genug erledigen lassen.
Periscope hat die Kosten ebenfalls verglichen, sie haben jedoch einen etwas anderen Ansatz zur Berechnung der Kosten pro Anfrage verwendet. Wie wir haben sie sich die tatsächlichen Nutzungsdaten seiner Kunden angeschaut, aber statt den Prozentsatz der Leerlaufzeit zu verwenden, haben sie die Anzahl der Abfragen pro Stunde betrachtet. Sie stellten fest, dass die meisten (aber nicht alle) Periscope-Kunden Redshift günstiger fanden, aber der Unterschied war nicht sehr groß.
Mark Litwintschiks 1,1 Milliarden Taxifahrten – Benchmarks
Mark Litwintshik hat BigQuery im April 2016 und Redshift im Juni 2016 einem Benchmarking unterzogen. Er führte vier einfache Abfragen gegen eine einzige Tabelle mit 1,1 Milliarden Zeilen durch. Er fand heraus, dass BigQuery ungefähr die gleiche Geschwindigkeit hat wie ein Redshift-Cluster, der etwa 2-mal so groß ist wie unserer (41 USD/Stunde). Beide Warehouses erledigten seine Abfragen in 1–3 Sekunden, sodass dies wahrscheinlich die „Leistungsuntergrenze“ darstellt: Selbst für die einfachsten Abfragen gibt es eine Mindestausführungszeit.
Fazit
Diese Warehouses haben alle ein ausgezeichnetes Preis-Leistungs-Verhältnis. Wir sollten nicht überrascht sein, dass sie ähnlich sind: Die grundlegenden Techniken zur Erstellung eines schnellen spaltenbasierten Data Warehouse sind seit der Veröffentlichung des C-Store-Papers im Jahr 2005 bekannt. Diese Data Warehouses verwenden zweifellos die Standardleistungstricks: spaltenorientierte Speicherung, kostenbasierte Abfrageplanung, Pipeline-Ausführung und Just-in-Time-Kompilierung. Wir sollten skeptisch sein, wenn ein Benchmark behauptet, ein Data Warehouse sei wesentlich schneller als ein anderes.
Die wichtigsten Unterschiede zwischen den Warehouses sind die qualitativen Unterschiede, die durch die Wahl des Designs verursacht werden: Einige Warehouses legen Wert auf Einstellbarkeit, andere auf Benutzerfreundlichkeit. Wenn Sie Data Warehouses evaluieren, sollten Sie mehrere Systeme ausprobieren und dasjenige auswählen, das für Sie das richtige Gleichgewicht darstellt.
Korrekturen
20. Dezember 2022: Wir haben einige Beschreibungen auf der Grundlage von Rückmeldungen der Anbieter präzisiert.
22. Dezember 2022: Wir haben unsere Preiskalkulation für Databricks korrigiert und unsere Konfiguration so geändert, dass sie besser zu den anderen Systemen passt.
24. Dezember 2022: Wir wechselten zu BigQuery-Flatratepreisen und führten Redshift und BigQuery erneut durch.
4. Januar 2023: Wir haben einen Link zu Rohdaten und eine Fußnote zur Redshift-Leistung hinzugefügt.
[CTA_MODULE]