oxla header

Oxla

Erstellung von Big Data-Migratoren für die schnellste verteilte Datenbank der Welt

oxla logo white

Expertise

Custom Software Development

Platforms

Cloud

Industry

Data Processing

Über Oxla

Oxla ermöglicht Datenverarbeitung, Analytik und Speicherung, die leicht skalierbar, zuverlässig und einfach benutzerfreundlicher ist als andere OLAP-Lösungen. Von Grund auf neu entwickelt, hat es sich zum Ziel gesetzt, Big Data-Analytik zu nutzen und die Geschwindigkeit kommerzieller Datenbankmanagementsysteme zu erreichen, während es auf die Größe Ihres Unternehmens skaliert.

Die Herausforderung

Um seinen Namen als die schnellste verteilte Datenbank der Welt weiter auszubauen, benötigte Oxla eine neue Reihe von Werkzeugen, um den Datenmigrationsprozess von verschiedenen Arten von Datenbanken zu erleichtern, insbesondere im Hinblick auf Big Data. Das EL Passion-Team war für die Entwicklung der Werkzeuge verantwortlich und berücksichtigte dabei die drei bedeutendsten Datenbanklösungen: PostgreSQL, Snowflake und Clickhouse. 

 

Oxla zielt darauf ab, die Vorteile von drei Lösungen zu kombinieren: die Einfachheit der Kommunikation durch Ähnlichkeiten mit PostgreSQL, das Kommunikationsprotokoll und die Möglichkeit, große Datenmengen wie Snowflake und Clickhouse in einer skalierbaren Cloud-Umgebung zu speichern und zu verarbeiten. Und wir haben ihnen geholfen, dorthin zu gelangen.

Oxla General Architecture

Datenmapping, unterstützt von verschiedenen Datenbanksystemen

Der Prozess der Migration großer Datenmengen kann zeitaufwendig, kompliziert, fehleranfällig sein und benötigt in der Regel die Aufsicht des Benutzers. Die von uns entwickelten Migratoren machen den gesamten Prozess benutzerfreundlicher, indem sie in den ersten Schritten die Einrichtung einer Konfiguration für die Migration ermöglichen und dann den Prozess automatisch für Sie übernehmen. 

Die Migration verschiedener Datentypen, von Zahlen oder Zeichenfolgen bis hin zu komplizierteren wie JSONs, die ebenfalls aus verschiedenen Datenbanksystemen stammen, erfordert eine gründliche Analyse der Randfälle, die Probleme verursachen können. Nicht unterstützte Datentypen oder unterschiedliche Wertebereiche, die von verschiedenen Datenbanksystemen unterstützt werden, sind nur einige Beispiele, mit denen die Oxla-Migratoren umgehen mussten, ohne den Wert oder die Bedeutung der Daten zu verlieren.

oxla general flow

Logs und Metrikdaten zur Hand

Jedes Tool kann mit unvorhergesehenen Fällen konfrontiert werden, insbesondere bei lang laufenden Prozessen, die Tage oder in einigen Fällen Wochen dauern können. Die Oxla-Migratoren bieten eine Möglichkeit, den Benutzer auch bei der Lösung dieser Probleme zu unterstützen. 

Jede laufende Migration sammelt Logs und Metriken in jeder Phase des Prozesses, sodass der Benutzer Probleme mit seiner Datenmigration erkennen und identifizieren kann. Sie werden in SQLite-Dateien gespeichert, entweder nach Abschluss der Migration oder wenn sie vom System gestoppt wird, sodass keine Daten verloren gehen, egal wie groß der Prozess ist.

oxla mapping

Unterstützung großer Cloud-Speicherlösungen – AWS, Google Storage, Azure Blob Storage

Oxla funktioniert als verteilte Datenbank gut in der Cloud-Umgebung. Zunächst einmal ist es einfach schwierig, eine riesige Menge an Daten auf Ihrem persönlichen Computer während der Migration zu speichern. Um dieses Problem zu lösen, arbeiten Migratoren gut mit Cloud-Speicherlösungen wie AWS S3, Google Storage und Azure Blob Storage. Die Migratoren speichern die Daten während des gesamten Prozesses in den ausgewählten Cloud-Speichern in separaten Pfaden für jede Migration, zusammen mit Protokollen und Metriken. Auf diese Weise haben wir nach Abschluss des Migrationsprozesses, unabhängig davon, ob er fehlerhaft oder erfolgreich war, weiterhin Zugriff auf die Artefakte des Prozesses – Daten, Protokolle und Metrikdateien.


Verbesserung des Migrationsprozesses durch parallele und Stream-Verarbeitung

Die Verarbeitung großer Datenmengen benötigt Zeit, Speicherressourcen und kostet Geld. Um die benötigten Ressourcen für die Migration zu reduzieren, haben wir die Datenverarbeitung durch die Implementierung von paralleler und Stream-Verarbeitung verbessert. Die Migratoren verarbeiten mehrere Tabellen oder Dateien gleichzeitig unter Verwendung mehrerer Kerne auf der Maschine. Darüber hinaus wird durch die Nutzung von Streams für den Datentransfer zu und von dem Migrator der Speicherbedarf für den gesamten Prozess auf das niedrigste Niveau reduziert, das möglich ist.

Oxla import
Oxla export

Testen der Leistung der Migratoren bei Big Data

Die Testung der Anwendung, die direkt mit verschiedenen Arten von Datenbanken interagiert, ist keine einfache Aufgabe. Um es überschaubarer zu machen, haben wir einen Datensatzgenerator vorbereitet, der verschiedene Arten von Daten als CSV-Dateien generiert, die in eine ausgewählte Datenbank geladen und für die Testung des Migrationsprozesses verwendet werden können. Die ausgewählten Datenbankanbieter wie Snowflake oder Clickhouse bieten Beispiel-Datensätze an, die wir ebenfalls verwendet haben, um die Leistung und Qualität der Migratoren zu testen. Um die reale Benutzerumgebung aus der Perspektive der HTTP-API zu simulieren, haben wir einen Proof of Concept (POC) der Webanwendung entwickelt, der die Migratoren als SaaS-Anwendung für den Migrationsprozess von der ausgewählten Datenbankquelle zu Oxla als Zieldatenbank präsentiert.

oxla release

Verteilung und Verfügbarkeit

Die Verteilung und Verfügbarkeit dieser Art von Anwendung sind nicht die gleichen wie bei einer Webanwendung. Die Migratoren können als eigenständige CLI-Anwendungen verwendet werden, die im Terminal in der Linux-, macOS- und Windows-Umgebung ausgeführt werden können, sowie als Dienste, die über die HTTP API-Schicht verfügbar sind. 

Jede Datenbank sollte ihren eigenen Migrator haben, der den Benutzern zur Verfügung steht. Um beide Verteilungswege zu erreichen, haben wir eine Anwendung entwickelt, die in einer NodeJs-Umgebung läuft und den Code als Pakete organisiert. Auf diese Weise können wir jeden Migrator als Anwendung mit einer eingebetteten NodeJs-Umgebung und Migrator-Code packen und als eine ausführbare Binärdatei verteilen, die als eigenständige CLI-Anwendung verwendet werden kann. 

Darüber hinaus ist derselbe Code dank PNPM Workspaces in Module und Pakete organisiert, und Nx kann verwendet werden, während die HTTP API-Schicht implementiert wird, ohne dass etwas anderes von Grund auf neu geschrieben oder separater Code für beide Verteilungswege gewartet werden muss. Außerdem werden die Migratoren auch mithilfe von Docker-Images mit Binärdateien innerhalb eines Images verteilt, sodass sie in einer isolierten Docker-Umgebung auf die gleiche Weise wie die CLI-Anwendung verwendet werden können. Alles geschieht automatisch über konfigurierte Github Actions, die als CI/CD-Lösung fungieren und die Build-, Test- und Bereitstellungsprozesse unterstützen.

Tools

  • nest-js

    NestJS

  • nodejs@3x

    NodeJS

  • typescript@3x

    TypeScript

  • react

    React

  • docker@3x

    Docker

  • sqlite

    SQLite

Deliverables

  • Binärdateien - jeweils eine für jeden Migrator-Typ (Snowflake, PostgreSQL, Clickhouse)

  • Docker-Images mit eingebettetem ausführbarem Migrator.

  • HTTP API für Migrationen als Docker-Image

  • Integration mit verschiedenen Cloud-Speicherlösungen: Google Cloud Storage, AWS S3 Storage und Azure Blob Storage

  • Detaillierte Protokoll- und Überwachungsdaten, die mit SQLite gespeichert sind.

  • Parallele Verarbeitung von Daten Dateien

Vielleicht ist es der Beginn einer schönen Freundschaft?

Wir sind für neue Projekte verfügbar.

Contact us