oxla header

Oxla

Budowanie migratorów Big Data dla najszybszej rozproszonej bazy danych na świecie

oxla logo white

Expertise

Custom Software Development

Platforms

Cloud

Industry

Data Processing

O Oxla

Oxla umożliwia przetwarzanie danych, analitykę i przechowywanie, które są łatwo skalowalne, niezawodne i po prostu łatwiejsze w użyciu niż inne rozwiązania OLAP dostępne na rynku. Napisana od zera, jej misją jest wykorzystanie analityki big data i osiągnięcie prędkości komercyjnych systemów zarządzania bazami danych przy jednoczesnym skalowaniu do rozmiaru Twojego biznesu.

Wyzwanie

Chcąc umocnić swoją pozycję jako najszybsza rozproszona baza danych na świecie, Oxla potrzebowała nowego zestawu narzędzi, aby uprościć proces migracji danych z różnych rodzajów baz danych, szczególnie w kontekście Big Data. Zespół EL Passion był odpowiedzialny za rozwój narzędzi, biorąc pod uwagę trzy najważniejsze rozwiązania bazodanowe: PostgreSQL, Snowflake i Clickhouse. 

 

Oxla ma na celu połączenie zalet trzech rozwiązań: prostoty komunikacji przypominającej PostgreSQL, protokołu komunikacyjnego oraz możliwości przechowywania i przetwarzania ogromnych ilości danych, jak w Snowflake i Clickhouse, w skalowalnym środowisku chmurowym. A my pomogliśmy im to osiągnąć.

Oxla General Architecture

Mapowanie danych wspierane przez różne systemy baz danych

Proces migracji ogromnych ilości danych może być czasochłonny, skomplikowany, podatny na błędy i zazwyczaj wymaga nadzoru użytkownika. Stworzone przez nas migratory sprawiają, że cały proces staje się bardziej przyjazny dla użytkownika, umożliwiając skonfigurowanie ustawień migracji w pierwszych krokach, a następnie automatyczne przeprowadzenie procesu za Ciebie. 

Migracja różnych typów danych, od liczb czy ciągów tekstowych po bardziej skomplikowane, takie jak JSON, pochodzące z różnych systemów baz danych, wymaga dokładnej analizy przypadków brzegowych, które mogą powodować problemy. Nieobsługiwane typy danych lub różne zakresy wartości obsługiwane przez różne systemy baz danych to tylko niektóre z przykładów, z którymi migratory Oxla musiały sobie poradzić w sposób, który nie utraci wartości ani znaczenia danych.

oxla general flow

Dane logów i metryk w zasięgu ręki

Każde narzędzie może napotkać przypadki, których nie przewidziano wcześniej, szczególnie w długoterminowych procesach, które mogą trwać dni, a w niektórych przypadkach nawet tygodnie. Migratory Oxla mają sposób, aby wspierać użytkownika w rozwiązywaniu tych problemów.  

Każda uruchomiona migracja zbiera logi i metryki na każdym etapie procesu, aby użytkownik mógł wykryć i zidentyfikować problemy z migracją danych. Są one zapisywane w plikach SQLite, zarówno po zakończeniu migracji, jak i w momencie, gdy zostanie ona zatrzymana przez system, więc żadne dane nie zostaną utracone, niezależnie od tego, jak duży jest proces.

oxla mapping

Wsparcie dużych rozwiązań do przechowywania w chmurze – AWS, Google Storage, Azure Blob Storage

Oxla, jako rozproszona baza danych, działa dobrze w środowisku chmurowym. Przede wszystkim, trudno jest przechować ogromną ilość danych na własnym komputerze podczas migracji. Aby rozwiązać ten problem, migratory dobrze współpracują z rozwiązaniami do przechowywania w chmurze, takimi jak AWS S3, Google Storage i Azure Blob Storage. Migratory przechowują dane w wybranym magazynie chmurowym przez cały proces w oddzielnych ścieżkach dla każdej migracji, razem z logami i metrykami. W ten sposób, po zakończeniu procesu migracji, niezależnie od tego, czy zakończył się on niepowodzeniem, czy sukcesem, nadal mamy dostęp do artefaktów procesu – danych, logów i plików metrycznych.


Poprawa procesu migracji dzięki przetwarzaniu równoległemu i strumieniowemu

Przetwarzanie ogromnych ilości danych zajmuje czas, zasoby pamięci i generuje koszty. Aby zmniejszyć zasoby potrzebne do migracji, usprawniliśmy przetwarzanie danych poprzez wdrożenie przetwarzania równoległego i strumieniowego. Migratory przetwarzają kilka tabel lub plików jednocześnie, korzystając z wielu rdzeni na maszynie. Dodatkowo, używając strumieni do transferu danych do i z migratora, pamięć wymagana do całego procesu jest na najniższym poziomie, jaki może być.

Oxla import
Oxla export

Testowanie wydajności migratorów na Big Data

Testowanie aplikacji, która działa bezpośrednio z różnymi typami baz danych, nie jest łatwym zadaniem. Aby uczynić to bardziej zarządzalnym, przygotowaliśmy generator zbiorów danych, który generuje różne rodzaje danych w postaci plików CSV, które mogą być załadowane do wybranej bazy danych i użyte do testowania procesu migracji. Wybrani dostawcy baz danych, tacy jak Snowflake czy Clickhouse, oferują przykładowe zbiory danych, które również wykorzystaliśmy do testowania wydajności i jakości migratorów. Aby symulować rzeczywiste środowisko użytkownika z perspektywy API HTTP, opracowaliśmy Proof of Concept (POC) aplikacji internetowej, która przedstawia migratory jako aplikację SaaS do procesu migracji z wybranego źródła bazy danych do Oxla jako bazy docelowej.

oxla release

Dystrybucja i dostępność

Dystrybucja i dostępność tego typu aplikacji nie są takie same jak w przypadku aplikacji webowych. Migratory mogą być używane jako samodzielne aplikacje CLI, które można uruchamiać w terminalu w środowisku Linux, macOS, Windows oraz jako usługi dostępne przez warstwę HTTP API. 

Każda baza danych powinna mieć własny migrator dostępny dla użytkowników. Aby osiągnąć obie formy dystrybucji, zbudowaliśmy aplikację, która działa w środowisku NodeJs i organizuje kod w pakiety. W ten sposób możemy zapakować każdy migrator jako aplikację z wbudowanym środowiskiem NodeJs oraz kodem migratora i dystrybuować go jako jeden plik wykonywalny binarny do użycia jako samodzielna aplikacja CLI. 

Dodatkowo, ten sam kod jest zorganizowany w moduły i pakiety dzięki PNPM Workspaces, a Nx może być używane podczas implementacji warstwy HTTP API bez potrzeby pisania czegokolwiek od podstaw lub utrzymywania oddzielnego kodu dla obu form dystrybucji. Co więcej, migratory są również dystrybuowane przy użyciu obrazów Docker z plikami binarnymi wewnątrz obrazu, dzięki czemu mogą być używane w izolowanym środowisku Docker w ten sam sposób, co aplikacja CLI. Wszystko odbywa się automatycznie dzięki skonfigurowanym akcjom Github, które działają jako rozwiązanie CI/CD wspierające procesy budowania, testowania i dostarczania.

Tools

  • nest-js

    NestJS

  • nodejs@3x

    NodeJS

  • typescript@3x

    TypeScript

  • react

    React

  • docker@3x

    Docker

  • sqlite

    SQLite

Deliverables

  • Binarki wykonywalne - każdy dla każdego typu migratora (Snowflake, PostgreSQL, Clickhouse)

  • Docker images z osadzonym plikiem wykonywalnym migratora

  • HTTP API dla migratorów jako obraz Dockera

  • Integracja z różnymi rozwiązaniami do przechowywania w chmurze: Google Cloud Storage, AWS S3 Storage oraz Azure Blob Storage

  • Szczegółowe logi i dane monitorowania przechowywane w SQLite

  • Równoległe przetwarzanie plików danych

Może to początek pięknej przyjaźni?

Jesteśmy dostępni dla nowych projektów.

Contact us