Expertise
Custom Software Development
Platforms
Cloud
Industry
Data Processing
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.
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.
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.
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, 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.
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.
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.
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.
NestJS
NodeJS
TypeScript
React
Docker
SQLite
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