Net-Base Magasin

04.06.2026

Migrering fra Firebird til MariaDB: Fremgangsmåde, faldgruber og driftssikkerhed i hverdagen

En migration fra Firebird til MariaDB er sjældent kun et eksport-import-emne. Afgørende er SQL-dialekt, transaktioner, tegnsæt, datatyper, triggere/generatorer, ydeevne og et kontrolleret cutover. Artiklen viser en praksisegnet fremgangsmåde for...

04.06.2026

Fra magasinets tema til projektpraksis

Passende service- og tekniske sider til artiklen

Den, der ønsker at migrere Firebird til MariaDB, har som regel et klart mål: en langsigtet driftsvenlig dataplatform, der passer ind i eksisterende infrastruktur, backup-strategier, overvågning og IT-teamets know-how. I praksis er det dog sjældent blot en ren datakopi. Firebird og MariaDB adskiller sig i SQL-dialekt, transaktionsadfærd, datatyper, tegnsætsregler (Collations) samt i måden, hvorpå logik implementeres i databasen (triggers, stored procedures, sekvenser/generatorer).

Dette indlæg beskriver en fremgangsmåde, der fungerer i virksomheder: med en solid analyse, en kontrolleret migrationsvej, gennemskuelig testbarhed og et cutover, der ikke udsætter driften unødigt for risiko. Fokus ligger bevidst på drift, administration, datakvalitet og integrationer – mindre på framework-detaljer.

Hvorfor virksomheder afløser Firebird – og hvorfor MariaDB ofte vælges

Firebird er attraktiv for mange etablerede forretningsapplikationer: slank, hurtigt at tage i brug og ofte langvarigt stabil i drift. Samtidig opstår der typiske drivkræfter for en afløser afhængigt af organisationen:

  • Betriebsstandardisierung: MariaDB (MySQL-kompatibel) drives i mange miljøer allerede som standarddatabase, inklusive automatisering, patch-processer og overvågning.
  • Platform- og tool-økosystem: Mange ETL-værktøjer, BI-tilslutninger og driftværktøjer er særligt godt forberedt til MySQL/MariaDB.
  • Skalering og høj tilgængelighed: Replikation, proxy-opsætninger, cluster-muligheder og container-drift er organisatorisk ofte lettere at koble på.
  • Personale og ansvar: Know-how og vagtberedskab kan ofte dækkes lettere, når databasen passer til RESTen af landskabet.

Vigtigt er: En migration er kun umagen værd, hvis den ikke blot „på en eller anden måde“ fungerer, men bliver driftsdygtig. Det indebærer klare driftsparametre, backup/RESTore-tider, overvågning, efterprøvbar dataintegritet og en planbar rollback.

Firebird vs. MariaDB: Tekniske forskelle, der virkelig tæller i projekter

Inden det egentlige migrationsdesign er det værd at give et målrettet blik på forskelle, som i sidste ende bestemmer tid og risiko:

SQL-dialekt og funktioner

Firebird har sine egne syntaksvarianter og funktionsnavne. MariaDB er MySQL-kompatibel, men har også egne særheder. Typiske konflikter er dato-/tidsfunktioner, strengfunktioner, casting-regler og måden, forespørgsler optimeres på. I en migration er det ikke akademisk: Hver tilpasset forespørgsel kan forårsage regressioner, hvis den ikke testes systematisk.

Transaktioner, isolation og samtidighed

Firebird bruger Multiversion Concurrency Control (MVCC): Læsere blokerer typisk ikke skrivere på samme måde som i klassiske locking-modeller. MariaDB anvender også MVCC (via InnoDB), men den konkrete adfærd afhænger stærkt af isolation level, indeksering og forespørgselsform. I praksis betyder det: Efter migrationen kan låseadfærd, forekomsten af deadlocks og „Long Running Transactions“ påvirkes anderledes.

Tegnsæt, collation og sortering

En hyppig projektrisikofaktor er kombinationen af tegnsæt (f.eks. UTF-8) og collation (sorterings- og sammenligningsregler). Firebird-projekter indeholder ofte blandingstilstande: ældre data i legacy-encodings, senere konverteret, samt applikationskode med egne konverteringsrutiner. I MariaDB kan collations konfigureres per database, tabel eller kolonne. Forkerte indstillinger fører til fejlagtige sammenligninger, „dobbelte“ nøgler ved case-insensitiv sortering eller overraskende resultatlister.

Datatype og præcision

Firebird og MariaDB adskiller sig på numeriske typer, tids-typer, boolean, BLOBs samt i håndteringen af default-værdier. Særligt kritisk er præcision ved pengebeløb (Decimal) og tidsstempler. En migration skal planlægge type-mapping, så der ikke opstår stille afrundinger eller trunkeringer.

Generatorer/sekvenser, Auto-Increment og triggere

Firebird bruger „Generatoren“ (sekvenser) ofte i kombination med triggere til tildeling af primære nøgler. MariaDB arbejder typisk med AUTO_INCREMENT eller SEQUENCE (afhængig af version/setup). Hvis applikationen hidtil eksplicit har forespurgt generatorværdier eller triggerlogik baseret på generatorer, skal det rekonstrueres eller bevidst omlægges – inklusive korrekte startværdier og konfliktfrihed.

Forberedelse: Inventar frem for mavefornemmelse

En holdbar migration begynder med en inventur, der ikke bare tæller tabeller, men kortlægger anvendelsen. Målet er at undgå overraskelser i omstillingsugen.

1) Objekt- og logikinventar

  • Tabeller, Views, indekser, constraints
  • Triggere (især til audit, valideringer, primærnøgler)
  • Stored Procedures og UDFs (User Defined Functions)
  • Generatorer/sekvenser og deres anvendelsesmønstre
  • Roller/rettigheder, evt. applikationsbrugere

Vigtig er spørgsmålet: Hvad er ren datalagring – og hvad er forretningslogik, der ligger i databasen? Jo mere logik der ligger i Firebird, desto mere migrationsarbejde kræves for at overføre eller bevidst flytte den til services/applikation.

2) Dataprofilering og datakvalitet

Før kopiering bør det være klart, om data er konsistente. Typiske efterladenskaber er ugyldige datoværdier, ‚0‘ i stedet for NULL, afkortede strenge, ikke-entydige nøgler eller historisk tolererede overtrædelser af constraints. MariaDB er i nogle henseender strengere og i andre mere tolerant – begge dele kan skabe problemstillinger. Dataprofilering identificerer felter med outliers, uventede encodings og markante andele af NULL.

3) Belastnings- og adgangsmønstre

For drift og performance handler det ikke kun om datamængde, men om adgang: Hvilke tabeller er hotspots? Hvilke rapporter kører om natten? Hvilke transaktioner er lange? Hvilke forespørgsler kører uden indeks? Firebird kan i nogle tilfælde „tilgive“ visse mønstre; MariaDB kan reagere med locking eller høj IO-belastning. Denne analyse bestemmer senere index-design, query-tilpasninger og parametre.

Arkitekturvalg: 1:1-portering eller kontrolleret modernisering?

Ved migration findes to ekstremer: „1:1 overtage“ eller „alt nyt“. I praksis er en kontrolleret mellemvej ofte lavest risikabel:

  • 1:1 for datastrukturer der, hvor applikationen er stærkt koblet, og ændringer ville være dyre.
  • Målrettet oprydning ved ældre beslutninger, som i MariaDB vil føre til permanent driftssikkerhedsrisiko (f.eks. alt for lange VarChars, manglende indekser, uklare collations).
  • Afkobling ved grænseflader, hvor eksterne systemer er berørt (BI, DWH, ERP/DMS/CRM). Her er et stabilt kontraktlag (Views, API, eksporttabeller) ofte hensigtsmæssigt.
  • For eksisterende Delphi– eller Windows-klient-server-applikationer spiller dataadgangslaget en central rolle. Hvis I bruger en BDE-udskiftning med native tilslutning (et udbredt Delphi-dataadgangsbibliotek), er den tekniske tilslutning til MariaDB i princippet gennemførlig. Afgørende er mindre driveren end semantikken: transaktioner, parametertyper, fejlkoder, BLOB-håndtering og de forespørgselsvarianter, som hidtil har „virket“.

    Typiske faldgruber ved skridtet „Firebird nach MariaDB migrieren“

    NULL, standardværdier og tomme strenge

    I ældre applikationer er tomme strenge og NULL ofte ikke klart adskilt. I rapporter, filtre eller i entydige nøgler kan det efter migration føre til andre resultater. Her hjælper en klar afklaring pr. kolonne: Er NULL tilladt? Standardværdi? Skrives og læses der konsekvent sådan i UI/service?

    Boolean og statusfelter

    Firebird anvender ofte Smallint(0/1) eller char(‚T’/’F‘)-mønstre. MariaDB har BOOLEAN som alias (typisk TINYINT(1)). For grænseflader er det vigtigt: Hvordan serialiseres værdierne (f.eks. i REST-services)? En uklar konvertering fører ellers til „true/false“-fejl, som først opdages i processen.

    BLOBs: dokumenter, billeder, e-mails

    BLOB-felter er sjældent „bare store“. De påvirker backup, restore, replikation og performance. For MariaDB skal det afklares, om BLOBs skal forblive i databasen, eller om en objektbaseret lagring (filsystem, S3-kompatibel) på mellemlangt sigt er mere hensigtsmæssig. For selve migreringen gælder: Undersøg, om BLOBs er binære eller tekstuelle, hvilke encodninger der gælder, og hvordan applikationen fortolker indholdet.

    Identiteter og nøglegenerering

    Hvis Firebird sætter primærnøgler via triggers + generator, skal målsystemet entydigt afklare, hvem der udsteder ID’en: databasen (AUTO_INCREMENT/SEQUENCE) eller applikationen. Blandingsformer er risikable. Derudover skal startværdierne sættes korrekt efter importen, ellers trues nøglekollisioner ved den første nye oprettelse efter Cutover.

    Triggerlogik til audits og validering

    Mange systemer har triggers, der vedligeholder ændringstidspunkt, bruger-id eller audit-rækker. MariaDB understøtter triggers, men detaljerne (syntax, timing, adgang til OLD/NEW, fejlhåndtering) adskiller sig. Især audit-triggers er operationelt relevante: Hvis de efter migrationen tavst udebliver, opstår der et compliance- og sporbarhedsproblem.

    Tegnsætkonflikter og „usynlige“ datafejl

    En klassiker: Data ser korrekte ud i applikationen, men i målsystemet er de forkert sorteret eller findes ikke i LIKE-søgninger. Årsagen er collation-mismatch eller blandede encodninger. Derfor: Test ikke kun „visning“, men også søgelogik, dubletkontrol, import/eksport og integrationer (f.eks. CSV/EDI).

    Migrationsstrategi: Offline, Online oder Hybrid?

    Valget af strategi bestemmer projektplanen. Typisk er der tre varianter:

    Offline-Migration (klassischer Cutover)

    Applikationen stoppes, data eksporteres/importeres, og der skiftes derefter. Fordele: enkelt, entydigt datagrundlag. Ulemper: nedetid kan, afhængigt af datamængde og validering, blive lang.

    Online-Migration (Parallelbetrieb)

    Firebird forbliver produktiv, MariaDB fyldes løbende (f.eks. via replikations- eller Change-Data-Capture-mekanismer). Cutover er kort. Til gengæld er kompleksiteten væsentligt højere: konflikter, rækkefølger, transaktioner, fejlbehandling.

    Hybrid (forløb + endelig delta-import)

    I mange virksomheder praktisk: Et initialt bulk-import køres forud, derefter overføres kun ændringer (deltaer), indtil den endelige Cutover. Tricket er en klar delta-definition: tidsstempler, sekvenser eller ændringsprotokoller skal være pålidelige.

    ETL og dataoverførsel: Hvordan du gør importstier robuste

    Ved overtagelse betaler det sig at have en klar proces frem for „et script og håbe på det bedste“. Robust betyder her: gentagelig, logget, verificerbar.

    Staging-tilgang i stedet for direkte import

    Et gennemprøvet mønster er en staging-database (eller et schema), hvor data først importeres råt. Der kan du:

    • normalisere encodings
    • tjekke og konvertere datatyper
    • kontrollere referentiel integritet
    • gøre duplikatkonflikter synlige

    Først derefter flyttes dataene ind i målschemaet. Det reducerer risiko, fordi fejl bliver synlige tidligt, og importen forbliver gentagelig.

    Validering: Checks, der virkelig hjælper i drift

    Opsæt valideringer, så de senere kan fungere som accept- og driftssikkerhed. Typiske kontrolkategorier:

    • Rækkeantal pr. tabel (ikke som eneste bevis, men som grundsignal)
    • Sum-/hash-kontroller over kritiske kolonner (f.eks. beløb, status, tidsstempler)
    • Referencer (forældreløse fremmednøgler, også hvis historisk uden constraint)
    • Stikprøver fra fagligt kritiske processer (ordrer, bilag, historik)

    Særligt for beslutningstagere vigtigt: Validering er ikke „nice to have“, men det greb, der minimerer risikoen for et snigende datafejl.

    Performance og drift: Hvad afgør efter importen

    Efter en vellykket dataovertagelse begynder den fase, der præger hverdagen: svartider, stabilitet, vedligeholdelsesvinduer og transparens i driften.

    Index-design og forespørgselsprofiler

    Indeks kan ikke overføres 1:1, fordi optimizerne arbejder forskelligt. En fornuftig fremgangsmåde:

    • Start med et solidt dækkende baseline-set (primær-/fremmednøgler, ofte anvendte filterkolonner)
    • Loadtests med realistiske workflows (ikke kun syntetiske SELECTs)
    • Målrettede indeks-tilføjelser baseret på slow-query-logs og monitoring

    Vigtigt: For mange indeks forringer skriveperformance og øger lager/IO. Målet er et operationelt kompromis, ikke et „indeks til hver forespørgsel“.

    Transaktionsstørrelse og batch-behandling

    Mange legacy-processer arbejder med store transaktioner (f.eks. natlige bogføringskørsler). I MariaDB kan det føre til undo/redo-belastning, locking eller lange recovery-tider. Her hjælper klare batch-grænser, idempotent behandling (gentagelig uden dobbeltbogføring) og velplacerede commit-punkter.

    Backup/RESTore, RPO/RTO og test af gendannelse

    For IT-ledelsen er det i sidste ende afgørende: Hvor hurtigt kan jeg gendanne, og hvor stort er datatabet i worst case? Det er RTO (Recovery Time Objective) og RPO (Recovery Point Objective). Planlæg:

    • Regelmæssige backups (logiske/fysiske afhængig af koncept)
    • Opbevaring og kryptering
    • Gendannelsestests i et separat miljø

    En migration anses først for operationelt stabil, når gendannelsesprocesser ikke blot er dokumenterede, men også reelt er blevet afprøvet.

    Overvågning, alarmer og kapacitetsplanlægning

    MariaDB kan overvåges effektivt, men kun hvis du vælger de rette signaler: antal forbindelser, replikationsstatus (hvis brugt), buffer-pool, disk I/O, lock-waits, langsomme forespørgsler, tablespace-vækst. Sæt alarmgrænser, så de ikke overbelaster beredskabet med „støj“, men til gengæld melder reelle problemer tidligt.

    Sikkerhed og rettigheder: Fra Firebird-tankegang til MariaDB-drift

    Ved databasemigrationer bliver sikkerhed ofte først vurderet sent. Koncepterne ændrer sig: brugeradministration, roller, værtsbaserede tilladelser, TLS-forbindelser, adgangskodepolitikker.

    Praktiske punkter til overgangen:

    • Adskil servicekonti: applikation, reporting, admin, vedligehold – separate brugere, minimale rettigheder.
    • Netværkssegmentering: Åbn ikke MariaDB „for alle“; adgang via definerede net og porte.
    • Kryptering under transport: TLS mellem applikation og database, især ved distribuerede lokationer.
    • Protokollering: Afhængig af compliance-krav skal adgang og administrative handlinger være efterprøvelige.

    Især når integrationer (f.eks. portaler eller REST-services) kobles på databasen, bør databasen ikke blive en „fælles bus“, men tilgås via definerede grænseflader. Det reducerer laterale bevægelser ved sikkerhedshændelser.

    Cutover-planlægning: Sådan bliver et projekt til et kontrolleret skift

    Cutover er ikke det tidspunkt, hvor der „endelig skiftes“, men det øjeblik hvor god forberedelse bliver synlig. En praksisegnet cutover-plan indeholder:

    • Freeze-tidspunkt (fra hvornår der ikke foretages flere datændringer i Firebird)
    • Endelig Delta-Import inklusive logging og tidsmåling
    • Verifikation med klare kriterier (ikke „ser godt ud“)
    • Omskiftning af applikationer (Connection Strings, DNS/Proxy, Secrets)
    • Smoke-tests af de vigtigste forretningsprocesser
    • Rollback-beslutningsvindue (indtil hvornår er tilbagevenden mulig og hvordan)

    Et ordentligt rollback betyder ikke nødvendigvis „kopiere tilbage“. Ofte er den mest praktiske rollback at skifte tilbage til Firebird og i første omgang stoppe MariaDB, forudsat at der i cutover-vinduet ikke er udløst irreversible efterprocesser. Det skal være aftalt organisatorisk (f.eks. dokumentnumre, interface-eksporter).

    Integration og applikationer: Hvad ændrer sig omkring databasen

    Databasen er sjældent isoleret. Typiske afhængigheder er:

    • Reporting (direkte SQL-forespørgsler, views, ekstrakter)
    • Interfaces til ERP/DMS/CRM (fil- eller API-baseret)
    • Batch-jobs, Windows-services eller Linux-Services, som behandler data
    • Portaler og ekstern adgang (f.eks. Kundeportal)

    Især i ældre, voksede systemer er det værd at udnytte lejligheden til at løsne datatilgange: centrale views/exports, klare REST-endepunkter eller service-lag. Det er ikke et mål i sig selv, men forbedrer vedligeholdelsesvenligheden og reducerer direkte SQL-afhængigheder, som ved næste migration igen vil være omkostningstunge.

    Hvis din eksisterende applikation er implementeret i Delphi, er det også et godt tidspunkt til at konsolidere dataadgangen (f.eks. konfigurere BDE-Ablosung mit nativer Anbindung korrekt, konsistente transaktionsrammer, ensartet fejlhåndtering). Det giver direkte gevinst for driftssikkerhed og fejlsøgning.

    Teststrategie: Abnahme ohne Illusionen

    En databasemigration fejler sjældent fordi ‚SELECT ikke virker‘, men fordi kanttilfælde i processen forløber anderledes. En robust teststrategi kombinerer:

    • Tekniske tests: forbundsopbygning, transaktioner, låseadfærd, ydeevne under belastning.
    • Faglige end-to-end-tests: typiske proceskæder fra registrering til evaluering.
    • Regressionstest for rapporter: sammenligning af summer, grupperinger og filterlogik.
    • Driftstests: Backup/RESTore, overvågning/alarmer, genstartadfærd efter vedligehold.

    Vigtigt er definitionen af acceptkriterierne: Hvilke nøgletal skal være identiske? Hvilke afvigelser kan forklares (f.eks. sorteringsrækkefølge ved samme collation)? Hvem træffer afgørelsen i tvivlstilfælde? Uden denne governance opstår unødvendige gentagelser kort før Go-live.

    Fazit: Migration als Betriebsprojekt denken – nicht als reines Datenbankthema

    Det er godt gennemførligt at migrere Firebird til MariaDB, hvis det planlægges som et drift- og integrationsprojekt. De kritiske punkter er sjældent selve eksporten, men datatyper, collations, triggerlogik, nøglegenerering, transaktionsadfærd og en sikker Cutover-Choreografie. Den, der tager inventar, validering og gendannelsestests alvorligt, reducerer projektrisici betydeligt og skaber et datagrundlag, der forbliver vedligeholdelsesvenligt på lang sigt.

    Hvis I ønsker at forberede migrationen struktureret – fra analyse over testkoncept til Cutover-Plan og overdragelse til drift – kan I kontakte os målrettet til det:

    I faglige sammenhænge spiller også Firebird Migration og Mariadb Migration en vigtig rolle, når integrationer, dataflows og videreudvikling skal spille ordentligt sammen.

    Projekt oder Modernisierungsvorhaben mit Net-Base besprechen.

    Næste trin

    Når emnet bliver til et reelt projekt, bør arkitektur, eksisterende systemer og drift tidligt vurderes samlet.

    Vi støtter ikke kun ved enkeltspørsmål, men også når kildekodeudsnit, legacy-komponenter eller portalidéer skal udvikles til et robust virksomhedsprojekt.

    • Eksisterende tilstand, målbillede og tekniske risici vurderes samlet.
    • REST, dataadgang, portaler og udrulning bliver ikke udskudt som efterfølgende opgaver.
    • De ser tidligt, hvilken vej der er økonomisk og driftsmæssigt bæredygtig.

    Del indlæg

    Del dette indlæg direkte

    LinkedIn, X, XING, Facebook, WhatsApp og e-mail er straks tilgængelige. Til Instagram forbereder vi link og kort tekst.

    E-mail

    Instagram åbner i en ny fane. Linket og kortteksten kopieres på forhånd til udklipsholderen.