SQLite ist gleich ETL-lastig
Actian Germany GmbH
18. Mai 2020

Vor zwei Wochen habe ich die Leistung von SQLite mit der einer Bananenschnecke verglichen. Nun mögen einige das für übertrieben halten (und einige Ehemalige der UC Santa Cruz mögen meinen, dass ich den guten Namen ihres Maskottchens in den Schmutz gezogen habe, was nicht meine Absicht war), aber die Zahlen lügen nicht. Der messbare Unterschied in der lokalen Verarbeitungsleistung zwischen SQLite und einem modernen Datenmanagement wie Actian Zen liegt bei zwei bis drei Größenordnungen. Der Vergleich zwischen Gepard und Bananenschnecke ist also quantitativ korrekt.
Ich werde den Geparden (mit einer Höchstgeschwindigkeit von 70 mph) gegen einen Wanderfalken mit einer Höchstgeschwindigkeit von 240 mph eintauschen. Der Grund dafür? Wenn Sie ein modernes Datenmanagement für das IoT oder eine beliebige Cloud in Betracht ziehen, müssen Sie die Leistung in Bezug auf verteilte Datenlese- und -schreibvorgänge berücksichtigen - über Geräte, Gateways, Workstations und Server On-Premises und natürlich die Cloud. Eine solche Verteilung bringt Komplikationen mit sich, die SQLite einfach nicht mit einer auch nur annähernd schnellen Geschwindigkeit bewältigen kann.
Lassen Sie mich Ihnen ein Beispiel geben: SQLite funktioniert nur als serverlose Datenbank, was die Integration mit einer Client-Server-Datenbank und damit die Umwandlung der Daten in eine solche voraussetzt. Sie werden SQLite oft in Kombination mit Microsoft SQL Server, MySQL, Oracle oder Postgres sehen. Darüber hinaus gibt es Stealth-Paarungen, bei denen SQLite zwar vorhanden, aber scheinbar unsichtbar ist. Man sieht SQLite zum Beispiel nicht in Verbindung mit MongoDB oder Couchbase, aber die mobile Client-Version dieser beiden Datenbanken ist in Wirklichkeit SQLite. "Sync-Server" zwischen dem mobilen Client und den Datenbankservern führen die erforderlichen ETL-Funktionen (Extrahieren, Transformieren und Laden) aus, um Daten aus SQLite in die Hauptdatenbanken MongoDB oder Couchbase zu übertragen.
Aber halt, sagen Sie: Geht es beim modernen Datenmanagement nicht darum, dass Daten am Edge erfasst, geteilt und von intelligenteren Komponenten am Edge verarbeitet werden? Und dass einige dieser Daten von den Geräten am Netzwerkrand an Server in der Cloud gesendet werden? Warum haben Sie es auf SQLite abgesehen?
Die Antwort auf Ihre Einwände lautet also: Ja, ja, und ich werde es Ihnen sagen.
Modernes Datenmanagement ist geteilt und verteilt
Ja, wir sollten es als gegeben hinnehmen, dass IoT und mobile Umgebungen Daten von Geräten und IoT am Rand an Server in der Cloud senden werden. Und ja, neue Netzwerkstandards wie 5G (und industrielle Varianten von 4G-LTE), gekoppelt mit KI, die auf mehr Edge-Geräten läuft, werden zu mehr lokaler und Peer-to-Peer-Verarbeitung führen. Das wird die Verwaltung von Geräten und Metadaten aus der Cloud zu Edge-Gateways auf On-Premises Servern bringen. In beiden Szenarien werden riesige Datenmengen gemeinsam genutzt und verteilt, und wenn SQLite involviert ist, wird dies zu einer Explosion von ETL führen, da SQLite nicht auf den größeren Servern am Rande oder in der Cloud laufen wird. Hier finden Sie SQL Server, MySQL, Oracle, Postgres und andere (einschließlich Actian Zen Edge-, Enterprise- und Cloud ).
Das bringt uns zu der Frage, warum ETL wichtig ist. Wenn man über die Eigenschaften der Systeme nachdenkt, die all diese Daten gemeinsam nutzen und verteilen werden, fallen drei wichtige Dinge auf: Leistung, Integration und Sicherheit. Wir haben bereits über die tatsächliche Verarbeitungsleistung unserer Bananenschnecke gesprochen, wenn es um lokale Datenoperationen geht. Wenn wir SQLite im breiteren Kontext der data sharing und Verteilung von data sharing betrachten, wird deutlich, dass die Verwendung von SQLite tiefgreifende Auswirkungen auf die betriebliche Leistung und Sicherheit haben kann.
Es geht um das "T" in ETL
Aus der Sicht eines Datenmanagement ist die Transformationsaktion in ETL das kritischste Element dieses Initialismus. Im Gegensatz zu E und L, die von Datenmanagement nicht beeinflusst werden, da die Datenübertragung eine Funktion der virtuellen Maschine, des Betriebssystems, der Hardware-Abstraktionsschichten und natürlich der E/A-Subsysteme ist, diktieren die Datenmanagement , ob, wann und wie Datentransformationen stattfinden. Beim Verschieben von Daten von einem Datenbank- oder Dateiverwaltungssystemformat in ein anderes ist es immer notwendig, die Daten neu zu formatieren, damit das System, das die Daten empfängt, sie lesen kann. SQLite wirbt mit der Beständigkeit seines zugrundeliegenden Dateisystems auf allen Plattformen, was darauf schließen lässt, dass die Übertragung von Daten von einer Plattform auf eine andere keine Transformation erfordert. Für eine SQLite-Anwendung, die als einfacher Datencache in einem mobilen Gerät oder auf Websites mit mäßigem Datenverkehr betrieben wird, mag dies zutreffen. Aber so sieht eine gemeinsam genutzte und verteilte IoT nicht aus. Die modernen Datenmanagement von heute sind voll gemanagt, sicher und darauf ausgelegt, komplexe Datenverarbeitung und -analyse auf einer Vielzahl von Systemen an einer Vielzahl von Orten durchzuführen - auf dem Gerät, am Edge und in der Cloud. Diese Umgebungen sind voll mit Datenaggregation, Peer-to-Peer-Freigabe und anderen Datenmanagement , die eine Umwandlung von einem SQLite-Format in ein anderes Format erfordern - möglicherweise sogar in mehrere andere Formate.
Und Sie dachten, die Bananenschnecke sei langsam
Das ist die zweite Dimension, in der SQLite einfach zu träge wird. Actian hat eine Reihe von Tests durchgeführt, in denen die Transformationsleistung von Zen Core und SQLite verglichen wurde. In einer Reihe von Tests wurde die Leistung von Datenübertragungen zwischen SQLite und MS SQL Server mit der gleichen Datenübertragung zwischen Zen Core und Zen Enterprise Server verglichen. Sowohl der SQLite- als auch der Zen Core-Client liefen auf einem Raspberry Pi, während SQL Server und Zen Enterprise auf einem Windows-Server basierten System liefen.
Die Leistungsergebnisse sind atemberaubend: Das Einfügen eines Blocks mit 25 000 Zeilen aus Zen Core in Zen Enterprise dauerte durchschnittlich 3 ms. Das Einfügen desselben Blocks aus SQLite in Microsoft SQL Server dauerte 73 ms, d. h. etwa 24-mal so lange. Andere Tests, bei denen indizierte und nicht indizierte Aktualisierungen, Lesevorgänge und Löschvorgänge verglichen wurden, ergaben ähnliche Ergebnisse. Und warum? Wegen der erforderlichen Transformationen. Beim Verschieben von Daten zwischen SQLite und SQL Server mussten die Daten aus SQLite in ein Format umgewandelt werden, das SQL Server, das ein anderes Format und ein anderes Datenmodell hat, lesen kann. Beim Verschieben der Daten von Zen Core zu Zen Enterprise Server, die auf demselben Format und Datenmodell basieren, ist keine derartige Umwandlung erforderlich.
So viel zu Schneller, Besser, Billiger
Zen ist nicht die einzige Datenbank mit einer gemeinsamen Architektur, die vom Client bis zum Server reicht. Microsoft SQL Server hat eine solche Architektur, läuft aber nur auf Windows-basierten Geräten. Actian Zen läuft auf so ziemlich allem - von Android-basierten IoT und Mobilgeräten über Windows-basierte Edge-Geräte bis hin zu Rechenzentrums- und Cloud , auf denen eine breite Palette von Linux-Implementierungen läuft. Zen verfügt über eine einheitliche, sichere und modulare Architektur, die es der serverlosen Version ermöglicht, mit den Edge-, Enterprise- und Cloud über dieselben APIs, Datenformate und Dateisysteme zu interagieren, sodass keine Transformationen erforderlich sind.
Und das ist der Punkt, an dem der Unterschied zwischen dem Wanderfalken und der Bananenschnecke wirklich greifbar wird. Wäre SQLite in der Lage, direkt mit anderen Elementen der modernen Datenmanagement zu interagieren, könnte jeder, der SQLite verwendet, auf Datentransformationen und schweres ETL verzichten. Aber das ist nicht die Welt, in der wir arbeiten. SQLite wird immer mit schwerem ETL verbunden sein, und es wird eine Bananenschnecke bleiben.
In der Welt der technischen Entwicklung gibt es einen uralten Kompromiss, der folgendermaßen aussieht: Wir können Sie schneller, besser oder billiger machen. Wählen Sie zwei. SQLite verspricht schneller, ist aber in der Praxis langsamer, wie die obigen Benchmarks beweisen. Bleiben also nur noch besser und billiger - nur dass wir mit SQLite, wie wir sehen werden, weder besser noch billiger werden. Bleiben Sie dran für den nächsten Beitrag in dieser Serie, in dem wir erörtern werden, warum SQLite nicht besser ist. Danach werden wir einen scharfen, falkenartigen Blick auf die Gesamtbetriebskosten werfen.
Sie können mehr über Actian Zen erfahren. Oder Sie können Zen Core kostenlos testen, da es für die Entwicklung und den Vertrieb lizenzfrei ist.
Abonnieren Sie den Actian Blog
Abonnieren Sie den Blog von Actian, um direkt Dateneinblicke zu erhalten.
- Bleiben Sie auf dem Laufenden - Holen Sie sich die neuesten Informationen zu Data Analytics direkt in Ihren Posteingang.
- Verpassen Sie keinen Beitrag: Sie erhalten automatische E-Mail-Updates, die Sie informieren, wenn neue Beiträge veröffentlicht werden.
- Ganz wie sie wollen: Ändern Sie Ihre Lieferpräferenzen nach Ihren Bedürfnissen.