oxla header

Oxla

Bygger Big Data Migratorer for verdens raskeste distribuerte database

oxla logo white

Expertise

Custom Software Development

Platforms

Cloud

Industry

Data Processing

Om Oxla

Oxla muliggjør databehandling, analyse og lagring som er lett skalerbar, pålitelig, og enklere å bruke enn andre OLAP-løsninger der ute. Skriftlig fra bunnen av, er dens oppdrag å bruke big data-analyse og nærme seg hastigheten til kommersielle databaseadministrasjonssystemer samtidig som den skalerer til størrelsen på din virksomhet.

Utfordringen

For å ytterligere styrke sitt navn som verdens raskeste distribuerte database, trengte Oxla et nytt sett med verktøy for å lette datamigreringsprosessen fra forskjellige typer databaser, spesielt med hensyn til Big Data. EL Passion-teamet var ansvarlig for utviklingen av verktøyene, med tanke på de tre mest betydningsfulle database-løsningene: PostgreSQL, Snowflake og Clickhouse. 

 

Oxla har som mål å kombinere fordelene med tre løsninger: enkelheten i kommunikasjon ved likhet med PostgreSQL, kommunikasjonsprotokollen og muligheten til å lagre og behandle store mengder data som Snowflake og Clickhouse i et skalerbart sky-miljø. Og vi hjalp dem med å komme dit.

Oxla General Architecture

Datakartlegging støttet av forskjellige databasesystemer

Migreringsprosessen av store mengder data kan være tidkrevende, komplisert, feilutsatt, og krever vanligvis brukerovervåkning. Migratorene vi utviklet gjør hele prosessen mer brukervennlig ved å tillate oppsett av en konfigurasjon for migreringen i de første trinnene, og deretter håndtere prosessen automatisk for deg. 

Migrering av ulike datatyper, fra tall eller strenger til mer kompliserte som JSON-er, som også kommer fra forskjellige databasesystemer, krever en grundig analyse av kanttilfellene som kan forårsake problemer. Ustøttede datatyper eller forskjellige verdier som støttes av ulike databasesystemer er bare noen eksempler på dem som Oxla-migratorene måtte håndtere på en måte som ikke mister verdien eller betydningen av dataene.

oxla general flow

Logger og måledata tilgjengelig

Hvert verktøy kan møte uforutsette tilfeller, spesielt i langvarige prosesser som kan ta dager eller, i noen tilfeller, uker. Migratorene fra Oxla har en måte å støtte brukeren i å løse disse problemene på også. 

Hver pågående migrasjon samler logger og målinger på hvert stadium av prosessen, slik at brukeren kan oppdage og identifisere problemer med datamigrasjonen sin. De lagres i SQLite-filer enten etter at migrasjonen er fullført eller når den stoppes av systemet, slik at ingen data går tapt, uansett hvor stor prosessen er.

oxla mapping

Støtte for store sky-lagringsløsninger – AWS, Google Storage, Azure Blob Storage

Oxla, som en distribuert database, fungerer godt i sky-miljøet. Først og fremst er det bare vanskelig å lagre en enorm mengde data på din personlige datamaskin under migrering. For å løse dette problemet, fungerer migratorene godt med skylagringsløsninger som AWS S3, Google Storage og Azure Blob Storage. Migratorene lagrer dataene i den valgte skylagringen gjennom hele prosessen i separate stier for hver migrering, sammen med logger og målinger. På denne måten, etter å ha fullført migreringsprosessen med feil eller suksess, har vi fortsatt tilgang til artefaktene fra prosessen – data, logger og måle filer.


Forbedring av migreringsprosessen med parallell og strømbehandling

Behandling av enorme mengder data tar tid, minne ressurser og koster penger. For å redusere ressursene som trengs for migrering, har vi forbedret behandlingen av data ved å implementere parallell og strømbehandling. Migratorene behandler flere tabeller eller filer samtidig ved å bruke flere kjerner på maskinen. I tillegg, ved å bruke strømmer for å overføre data til og fra migratoren, er minnet som kreves for hele prosessen på det laveste nivået det kan være.

Oxla import
Oxla export

Testing av migratorenes ytelse på Big Data

Testing av applikasjonen som direkte interagerer med forskjellige typer databaser er ikke en enkel oppgave. For å gjøre det mer håndterbart, har vi forberedt en datasettgenerator som genererer forskjellige typer data som CSV-filer som kan lastes inn i en valgt database og brukes til testing av migrasjonsprosessen. De valgte databaseleverandørene som Snowflake eller Clickhouse tilbyr eksempeldata som vi også brukte for å teste ytelsen og kvaliteten på migratorene. For å simulere det virkelige bruker miljøet fra HTTP API-perspektivet, utviklet vi Proof of Concept (POC) av webapplikasjonen som presenterer migratorene som en SaaS-applikasjon for migrasjonsprosessen fra den valgte databasens kilde til Oxla som destinasjonsdatabase.

oxla release

Distribusjon og tilgjengelighet

Distribusjonen og tilgjengeligheten av denne typen applikasjon er ikke den samme som for en webapplikasjon. Migratorene kan brukes som frittstående CLI-applikasjoner som kan kjøres i terminalen på Linux, macOS, Windows-miljøet og som tjenester tilgjengelig gjennom HTTP API-laget. 

Hver database bør ha sin egen migrator tilgjengelig for bruk av brukerne. For å oppnå begge distribusjonsmetodene, bygde vi en applikasjon for å kjøre i et NodeJs-miljø og organisere koden som pakker. På denne måten kan vi pakke hver migrator som en applikasjon med et innebygd NodeJs-miljø og migratorkode og distribuere det som en enkelt binær kjørbar fil for å bli brukt som en frittstående CLI-applikasjon. 

I tillegg er den samme koden organisert i moduler og pakker takket være PNPM Workspaces, og Nx kan brukes mens vi implementerer HTTP API-laget uten behov for å skrive noe annet fra bunnen av eller opprettholde separat kode for begge distribusjonsmetodene. Videre distribueres migratorene også ved hjelp av Docker-bilder med binærfiler inne i et bilde, slik at det kan brukes i et isolert Docker-miljø på samme måte som CLI-applikasjonen. Alt gjøres automatisk gjennom konfigurerte Github Actions som fungerer som en CI/CD-løsning som støtter bygge-, test- og leveringsprosessene.

Tools

  • nest-js

    NestJS

  • nodejs@3x

    NodeJS

  • typescript@3x

    TypeScript

  • react

    React

  • docker@3x

    Docker

  • sqlite

    SQLite

Deliverables

  • Binære kjørbare filer - hver for hver migrator type (Snowflake, PostgreSQL, Clickhouse)

  • Docker-bilder med innebygd binær migratorens kjørbare fil

  • HTTP API for migratorer som en docker-bilde

  • Integrasjon med forskjellige skylagringsløsninger: Google Cloud Storage, AWS S3 Storage og Azure Blob Storage

  • Detaljert logg- og overvåkingsdata lagret ved hjelp av SQLite

  • Parallell behandling av datafiler

Kanskje det er begynnelsen på et vakkert vennskap?

Vi er tilgjengelige for nye prosjekter.

Contact us