Net-Base Revista

02.06.2026

Integració de MariaDB amb Delphi i FireDAC: arquitectura, selecció de controladors i explotació sense sorpreses

Com connectar MariaDB des d'aplicacions Delphi mitjançant FireDAC de manera neta: opcions del controlador, TLS, jocs de caràcters, transaccions, pooling, rendiment i operació – amb èmfasi en administració, manteniment i migració en sistemes consolidats.

02.06.2026

Del tema de la revista a la pràctica del projecte

Pàgines de serveis i tècniques pertinents per a l'article

Qui vol connectar MariaDB amb Delphi i BDE-substitució amb connexió nativa, sovint té en compte més que «només» una connexió exitosa. En entorns empresarials compten sobretot la seguretat d’explotació, una configuració clara, desplegaments reproducibles i un accés a dades que es mantingui estable sota càrrega. MariaDB s’utilitza sovint com una alternativa econòmica i fàcil d’administrar dins de l’ecosistema MySQL —i les aplicacions Delphi són en moltes empreses solucions desenvolupades i pròximes als processos, que han de funcionar de forma fiable i evolucionar durant anys.

En aquest article no tractem detalls de frameworks ni codi demo, sinó les decisions que realment afecten la direcció IT i l’administració: quina estratègia de controladors és raonable (llibreries clientes natives vs. ODBC), com evitar problemes de jocs de caràcters i col·lacions, com planificar TLS de manera neta, quins aspectes de transaccions i bloquejos són rellevants en MariaDB, i com mantenir el monitoratge, les actualitzacions i la investigació d’errors manejables en el dia a dia. L’objectiu és una connexió que no només «funcioni», sinó que durant el cicle de vida del programari empresarial sigui mantinguda i auditable.

Connexió de MariaDB amb Delphi i FireDAC en la pràctica

MariaDB va sorgir històricament de MySQL i en molts aspectes és compatible, però no idèntica. Per a l’explotació això vol dir: moltes eines, conceptes i controladors clients funcionen de manera similar, tanmateix hi ha diferències en característiques, valors per defecte, comportament de l’optimitzador i, en part, en tipus de dades o variables del sistema. Per a Delphi/BDE-Ablosung mit nativer Anbindung això és especialment rellevant a l’hora de decidir quin camí de controlador s’utilitza i quines suposicions sobre el dialecte SQL hi ha a l’aplicació.

FireDAC és la capa d’accés a dades dins de Delphi que pot integrar moltes bases de dades de manera uniforme. FireDAC encapsula la connexió, els paràmetres, les transaccions i el comportament dels datasets. Important en el funcionament empresarial: FireDAC no és només «un controlador», sinó una capa que, depenent de la base de dades, pot utilitzar diferents modes de controlador. A la pràctica, amb MariaDB això es redueix a dos camins robustos: llibreries clientes natives de MySQL/MariaDB o ODBC.

Estratègia de controladors: Client-Library nativa vs. ODBC – què és millor en explotació?

La decisió clau és si connecteu FireDAC mitjançant una llibreria client nativa (del món MySQL/MariaDB) o mitjançant un controlador ODBC. Ambdós camins són tècnicament vàlids, però difereixen en desplegament, processos d’actualització i patrons d’errors.

Client-Library nativa (libmysql / MariaDB Connector/C)

Amb la connexió nativa FireDAC treballa amb una llibreria client que ha d’estar disponible en temps d’execució (típicament com a DLL sota Windows o com a biblioteca compartida sota Linux). A la pràctica s’hi presenten dues variants:

  • MySQL-Client-Library: àmpliament estesa, però dependent de versions i canals de distribució.
  • MariaDB Connector/C: sovint més consistent per a servidors MariaDB, amb el seu propi cicle de llançament.

Des del punt de vista d’explotació: les llibreries natives solen oferir el millor rendiment i el diagnòstic d’errors més directe (handshake, TLS, autenticació). El cost és un component addicional de desplegament: la versió correcta de la llibreria ha d’estar present a tots els sistemes destinació i no s’ha d’sobreescriure accidentalment per altres programes.

ODBC (MariaDB ODBC Driver)

ODBC (Open Database Connectivity) és un concepte estandarditzat de controladors a nivell de sistema operatiu. FireDAC pot comunicar-se amb MariaDB mitjançant aquest mecanisme si s’ha instal·lat un controlador ODBC adequat. A primera vista això sembla „amable per a l’administració“, perquè ODBC ja està establert en moltes empreses (p. ex., per a eines d’informe).

Vista operativa: ODBC pot simplificar el desplegament si ja distribuïu un paquet de controladors estandarditzat mitjançant distribució de programari. Tot i això s’introdueixen capes addicionals d’abstracció: els missatges d’error de vegades són menys precisos i les actualitzacions de controladors han de ser controlades de manera especial, perquè també poden afectar altres aplicacions.

Criteris de decisió per a empreses

  • Control del desplegament: Sovint és més net lliurar la biblioteca nativa per aplicació que modificar ODBC a tot el sistema.
  • Gestió de canvis: L’ODBC és adequat quan les versions dels controladors es gestionen centralment i estan ben provades.
  • Diagnòstic d’errors: Els camins natius solen ser més directes de depurar (Handshake/TLS/Auth).
  • Compatibilitat: En els plugins d’autenticació i les polítiques TLS el controlador concret pot ser determinant.

En molts entorns empresarials estables s’opta per la biblioteca nativa per a aplicacions de producció de tipus escriptori o servei (versionada de forma explícita i lliurada amb l’aplicació) i s’utilitza ODBC més aviat en els casos d’integració d’eines de tercers.

Definir amb precisió els paràmetres de connexió: Host, Port, Timeouts, Failover

Un error habitual en aplicacions amb trajectòria és una configuració „de qualsevol manera“ de les connexions. Per a l’operació i el manteniment cal una definició clara i rastrejable dels paràmetres de connexió —per cada entorn (desenvolupament, prova, producció)— sense incrustacions rígides en fitxers de programa.

Paràmetres rellevants des del punt de vista operatiu:

  • Host/Port: L’estàndard és 3306, però en xarxes segmentades són habituals ports diferents.
  • Connect Timeout: protegeix contra intents de connexió „penjats“ en cas de problemes de ruteig o DNS.
  • Read/Write Timeout: evita que peticions individuals bloquegin el procés davant problemes de xarxa.
  • Keepalive: útil en períodes d’inactivitat més llargs, especialment en enllaços WAN/VPN.
  • Estratègia de failover: en entorns amb replicació/cluster cal definir com poden canviar els clients (o si no han de fer-ho automàticament).

Regla pràctica: els timeouts no són un „nice-to-have“, sinó part de la seguretat operativa. Sense timeouts clars, clients o serveis individuals poden retenir recursos i provocar efectes en cadena (p. ex., embussos als pools de threads, interfícies que no responen, acúmul de tasques).

TLS i certificats: l’encriptació és un projecte operatiu, no una casella per marcar

En entorns moderns TLS (Transport Layer Security, és a dir, xifrat en la capa de transport) no és opcional. El fonamental és que TLS no només s“activi“, sinó que es validi correctament: comprovar el certificat del servidor, verificar la cadena de CA, assegurar la verificació del nom d’amfitrió i excloure protocols obsolets.

Obstacles típics amb Delphi/FireDAC en l’explotació empresarial:

  • Ruta dels certificats i permisos: Els serveis sovint s’executen sota comptes dedicats; allà els fitxers de CA/els magatzems de certificats han de ser accessibles.
  • Nom d’amfitrió vs. CN/SAN del certificat: Si els clients es connecten mitjançant noms aliàs (DNS-CNAME, VIP), el certificat ha de cobrir aquests noms.
  • Certificats intermedis: Cadenes incompletes funcionen en algunes eines, però fallen en altres entorns.
  • «Xifrat, però no verificat»: Un recurs habitual davant d’un anti-pattern és desactivar la comprovació. Això és un risc operatiu i s’ha d’evitar.
  • Per als responsables IT és important: establiu qui desplega els certificats, com funciona la renovació i com superviseu la validesa. El xifrat no és només un punt d’aplicació, sinó que afecta els processos PKI (Public Key Infrastructure) i les finestres de canvi.

    Jocs de caràcters, col·lacions i «dièresis malmeses»: evitar les causes de manera sistemàtica

    Un clàssic en migracions de bases de dades i noves connexions són caràcters especials incorrectes o ordenacions «estranyes». La causa gairebé mai és «Delphi no pot amb UTF-8», sinó una combinació de valors per defecte del joc de caràcters, definicions de taula/columna i l’handshake del client.

    A què heu de prestar atenció:

    • Valor per defecte del servidor vs. definició de l’esquema: No confieu en els valors globals per defecte. Definiu el joc de caràcters i la col·lació explícitament a nivell de base de dades i de taula.
    • Variante d’UTF-8: En l’entorn MariaDB/MySQL, utf8mb4 és l’opció robusta (Unicode complet, inclosos caràcters de 4 bytes). L’antiga «utf8» no ho cobreix tot.
    • Handshake del client: El controlador ha de saber en quina codificació envia i rep. Si client i servidor negocien diferentment, apareixen errors de dades silenciosos.
    • Ordenació (col·lació): La col·lació afecta les comparacions i l’ORDER BY. En entorns multilingües o amb dades mixtes cal prendre una decisió conscient.

    Per a l’explotació, compta menys la col·lació «correcta» teòrica que la coherència: fixeu-la una vegada, documenteu-la i controleu-la amb consultes de verificació durant les migracions. Precisament en aplicacions empresarials pròximes als processos, els canvis d’ordenació es detecten tard (p. ex. en llistes, exportacions o la lògica de duplicats).

    Autenticació i drets d’usuari: permisos mínims, rols clars

    MariaDB ofereix diferents mecanismes d’autenticació (basats en contrasenya, en part basats en plugins). Per a les aplicacions és fonamental que utilitzeu un login DB dedicat i que ajusteu els permisos estrictament a la necessitat. «Drets de DBA per a l’aplicació» és un risc innecessari.

    Pràctiques recomanades en entorns empresarials:

    • Usuaris separats per aplicació/servei (i, si escau, per client/entorn).
    • Least Privilege: només SELECT/INSERT/UPDATE/DELETE sobre els objectes necessaris, sense permisos globals.
    • Sense drets DDL dinàmics (CREATE/ALTER) en aplicacions de producció, excepte si forma part d’un procés de migració controlat.
    • Rotació de contrasenyes amb canvi planificable (p. ex., accessos vàlids en paral·lel per a finestres de transició curtes).

    Si l’aplicació executa tasques en segon pla (imports, interfícies, processament per lots), sovint té sentit utilitzar comptes separats per a això també. Això millora l’auditoria i limita el dany en cas de credencials compromeses.

    Transaccions, aïllament i bloqueig: planificar en lloc de „la base de dades de vegades és lenta“

    En moltes aplicacions existents Delphi les modificacions de dades han crescut històricament: actualitzacions individuals sense límits clars de transacció, suposicions «optimistes» o bloquejos massa amplis. MariaDB es comporta de manera diferent segons el motor d’emmagatzematge; a la pràctica InnoDB sol ser l’estàndard (transaccions, bloquejos a nivell de fila, recuperació davant fallades).

    Per a responsables d’IT i de projectes són determinants els punts següents:

    • Límits de transacció: Una operació de negoci (p. ex. registrar una comanda) hauria de tenir una transacció definida. Uns límits indefinits generen estats intermedis difícils de reproduir.
    • Nivell d’aïllament: Determina quins «estats intermedis» són visibles. Un aïllament massa elevat pot incrementar els bloquejos i els temps d’espera; un aïllament massa baix pot donar lloc a resultats erronis des del punt de vista funcional.
    • Bloquejos/Deadlocks: Els deadlocks no són un «bug de la base de dades», sinó un indici de vies d’accés concurrents. És important que l’aplicació els detecti, els registri de manera ordenada i intenti reexecutar-los de forma controlada (reintentar), però amb límits.
    • Transaccions llargues: Les transaccions obertes a través d’interaccions de la interfície d’usuari (UI) o processos llargs són una causa freqüent de bloquejos i problemes de rendiment.

    A la pràctica convé: transaccions curtes, ordre clar en les actualitzacions (per reduir deadlocks) i un registre que, en cas d’error, faci rastrejables les operacions SQL afectades i les dades de context sense registrar dades sensibles en text pla.

    Rendiment: índexs, paràmetres, roundtrips i trampes típiques de FireDAC

    Si després del canvi a MariaDB «tot sembla una mica més lent», rarament és culpa de MariaDB com a producte, sinó d’una combinació de disseny de consultes, indexació i comportament del client. FireDAC ofereix moltes palanques d’ajust – l’art és mantenir-les controlables operativament.

    Comprovar índexs i la realitat de les consultes

    Per a l’administració és crític identificar les consultes més importants i avaluar-les amb plans EXPLAIN. Causes típiques de càrrega inesperada:

    • índexs compostos inexistents o incorrectes (índexs multicolumna adequats a l’ús en WHERE/ORDER BY)
    • cerques LIKE sense una estratègia adequada (p. ex. prefix vs. text complet)
    • funcions sobre columnes en claus WHERE (l’índex no s’utilitza)
    • forta variància en els valors dels paràmetres (l’elecció del pla varia)

    Això és menys «optimització de desenvolupadors» i més disciplina operacional: revisar periòdicament les consultes clau, controlar les regressions després dels llançaments i alinear la lògica SQL amb els requisits de negoci.

    Reduir roundtrips i triar conscientment el comportament de fetch

    Roundtrip significa: un cicle Request/Response entre l’aplicació i la base de dades. Molts roundtrips petits solen passar desapercebuts en LAN, però són costosos en VPN o amb alta paral·lelitat. FireDAC pot recuperar dades per blocs (opcions de fetch) i ofereix operacions per lots/array. És important no configurar aquestes opcions de manera «global» i agressiva, sinó decidir per cada cas d’ús (llistes, pantalles de detall, exportacions, tasca d’interfície).

    Enllaç de paràmetres en lloc de SQL per cadena

    Les consultes parametritzades no només ajuden contra la injecció SQL, sinó que també milloren la memòria cau de plans i redueixen problemes de codificació. Per a l’operació això significa: menys «casos especials», menys errors difícils d’explicar amb caràcters concrets i més estabilitat en consultes recurrents.

    Pool de connexions i paral·lelitat: client d’escriptori, servei, servidor de terminals

    En entorns empresarials, el patró d’ús és determinant: un client d’escriptori individual és diferent de 50 usuaris paral·lels en un servidor de terminals o d’un Windows-/Windows- i Linux-serveis, que processa tasques en segon pla. «Masses connexions» no només genera límits, sinó també càrrega innecessària per les negociacions de connexió (handshakes) i la memòria.

    Consideracions importants:

    • Per procés vs. per fil: FireDAC-connexions són recursos; planifiqueu quantes operacions DB paral·leles es necessiten realment.
    • Pooling: Un pool redueix la sobrecàrrega de connexió, però exigeix una neteja acurada (tancar transaccions, restablir configuracions de sessió).
    • Estat de sessió: Si establiu variables per sessió (p. ex. SQL_MODE, zona horària), aquestes han de ser consistents en el context del pool.
    • Servidor de terminal: Molts usuaris comparteixen el mateix servidor, però no el mateix procés. Això influeix en la manera com s’escalen els nombres de connexions.

    Des del punt de vista d’operacions ha d’haver-hi una mesura objectiu clara: quantes connexions actives en hores punta són acceptables, quins límits s’apliquen al costat de la DB i com es comporta l’aplicació sota càrrega (Backpressure en lloc de «tot alhora»).

    Escenaris d’errors a la pràctica: què cal interceptar aviat

    Molts problemes no apareixen en les proves de desenvolupament, sinó en la interacció entre xarxa, permisos, actualitzacions i volum de dades. Classes d’errors típiques:

    • «No es pot connectar»: DNS, tallafocs, port incorrecte, rutes inexistents, timeouts de connexió massa curts.
    • Fallada del TLS handshake: certificats caducats, CA incorrecta, el nom d’amfitrió no coincideix, la política de protocols massa estricta o massa permissiva.
    • «Accés denegat»: permisos no alineats amb les màscares d’host (usuari@host), rotació de contrasenyes sense desplegaments coordinats.
    • Problemes d’encodificació: charset per defecte inconsistent, dades mixtes d’importacions antigues.
    • Interbloquejos/esperes de bloqueig: transaccions llargues, ordres d’actualització diferents, falta d’índexs a columnes de claus foranes.

    Recomanació: defineixi per cada classe d’errors una llista de comprovacions de diagnosi (quins logs, quins valors d’estat de la DB, quines proves de xarxa). Això redueix significativament el MTTR (Mean Time to Repair), evitant que en cas d’incident es busqui «a cegues».

    Migracions i funcionament mixt: de MySQL o sistemes legacy a MariaDB

    En projectes, la connexió a MariaDB sovint sorgeix en el context d’una modernització: les versions de MySQL estan fora de suport, cal consolidar un servidor de bases de dades o una aplicació s’ha d’extraure d’un accés a dades legacy (p. ex. BDE). Tècnicament aquests passos són factibles; els riscos estan en els detalls.

    Punts importants per a un trajecte segur:

    • Comprovar tipus de dades: especialment dates/hores, escales DECIMAL, columnes de text, lògica NULL/valors per defecte.
    • Dialecte SQL i funcions: petites diferències en funcions o en la configuració del Strict Mode poden canviar la lògica funcional.
    • Procediments emmagatzemats/vistes: si s’utilitzen, cal deixar clara la compatibilitat i el procés de desplegament.
    • Zones horàries: la zona horària del servidor i de la sessió afecten el comportament de TIMESTAMP/DATETIME; per auditories i interfícies la consistència és fonamental.
    • Pla de cutover: conciliació de dades, finestra de congelació, opció de rollback i monitoratge durant els primers dies.

    Precisament en solucions software properes al procés, un «Big Bang» rarament és necessari. Sovint té sentit un enfoc gradual: primer assegurar la compatibilitat de controladors i configuració, després verificar el model de dades i les consultes, i finalment migrar els mòduls pas a pas. Aquests continguts es poden vincular amb temes interns de modernització, per exemple quan una Delphi modernització o una BDE-substitució s’executen en paral·lel.

    Monitoratge, registre i manteniment: què esperen Operacions i Auditoria

    Quan una aplicació Delphi accedeix en producció a MariaDB, la connexió a la base de dades no hauria de ser «invisible». Per a l’administració i el compliment normatiu, són importants la traçabilitat i una superfície d’atac mínima.

    Què cal vigilar en el costat de la base de dades

    • Nombre i pics de connexió: correlacionats amb canvis de release, càrrega del servidor de terminals o finestres horàries de jobs.
    • Slow Query Log: mostra on es perd temps real (no només CPU, també bloquejos).
    • Temps d’espera per bloqueig: indicis d’operacions concorrents i d’índexs faltants.
    • Estat de rèplica (si s’utilitza): els retards són rellevants per a anàlisis i per al failover.

    Què hauria de proporcionar l’aplicació

    • IDs de correlació: perquè els errors de la base de dades es puguin associar a un procés funcional.
    • Registre tècnic amb context SQL (quin cas d’ús, quina classe de consulta), però sense contingut sensible en text pla.
    • Transparència de configuració: quina versió del driver, quina política TLS, quina adreça de servidor — decisiu per a incidents de suport.

    L’objectiu no és «més registre», sinó un registre útil: ràpidament delimitable, conforme amb la protecció de dades i aprofitable pel suport de 2n nivell.

    Seguretat i Hardening: mesures pràctiques que sovint falten en projectes Delphi

    Una connexió estable també vol dir: cap superfície d’atac innecessària. A més de TLS i permisos mínims, hi intervenen els punts següents:

    • Gestió de secrets: no posar contrasenyes en fitxers de configuració en text pla sense protecció. En entorns Windows DPAPI/Protected Storage pot ajudar; en Linux són habituals permisos de fitxer RESTrictius i magatzems de secrets.
    • Protecció contra injecció SQL: parametritzar de forma consistent, també en màscares de cerca i filtres dinàmics.
    • Procés de patch: els drivers/llibreries client formen part de la superfície d’atac. La versionació i el desplegament són tan importants com els parches de servidor.
    • Segmentació de xarxa: els servidors de BD no han d’estar accessibles «per a tot», sinó només des dels subxarxes dels servidors d’aplicacions/clients.

    Per a decisors és rellevant: la seguretat s’aconsegueix menys amb solucions aïllades i més amb un procés repetible (provar canvis, desplegar-los de manera controlada, supervisar-los).

    Llista de comprovació: així la connexió a MariaDB amb FireDAC serà mantenible a llarg termini

    La següent llista de comprovació està formulada de manera operativa i serveix com a base per a l’acceptació del projecte o la documentació d’explotació:

    1. Tipus de driver establert (biblioteca nativa o ODBC) incloent estratègia de versionat i d’actualització.
    2. Configuració externalitzada (entorns separats, sense valors codificats, defaults rastrejables).
    3. TLS implementat correctament (verificació activa, cadena de certificats completa, procés de renovació definit).
    4. Estrategia de jocs de caràcters (utf8mb4, col·lacions documentades, migració verificada).
    5. Rols i permisos de BD (mínims privilegis, comptes separats, rotació planificable).
    6. Disseny de transaccions (límits clars, durades curtes, maneig de deadlocks definit).
    7. Monitoratge/registre (consultes lentes, temps d’espera per bloqueig, IDs de correlació, conforme amb la protecció de dades).
    8. Model de càrrega i connexions (pooling, paralel·litat, límits, escenaris de servidor de terminals/servei).

    Conclusió: „Funciona“ no és suficient – una bona connexió és una decisió operativa

    MariaDB es pot integrar de manera fiable amb Delphi i FireDAC quan la connexió es considera part de l’arquitectura global: la tria del controlador, TLS, jocs de caràcters, permisos, transaccions i monitorització han d’encaixar. Qui decideixi i documenti aquests punts d’hora i amb precisió redueix notablement les sorpreses operatives posteriors – sobretot en aplicacions empresarials madures i pròximes als processos, on l’estabilitat i la facilitat de manteniment són més importants que solucions puntuals a curt termini.

    Si voleu estructurar la vostra connexió a MariaDB en el marc d’una modernització, d’una BDE-Ablösung o d’una consolidació dels accessos a dades, parleu amb nosaltres sobre les vostres condicions i requisits i la ruta de migració més adequada:

    En l’àmbit funcional també tenen un paper important FireDAC Mariadb i la connexió Delphi Mariadb quan cal que les integracions, els fluxos de dades i el desenvolupament continu funcionin de manera coherent.

    Parli del projecte o de la iniciativa de modernització amb Net-Base.

    Pas següent

    Quan d'un tema se'ndevé un projecte real, s'han de considerar aviat i de manera conjunta l'arquitectura, els actius existents i l'operació.

    No només donem suport en qüestions puntuals, sinó també quan, a partir de fragments de codi font, temes de sistemes heredats o idees de portal, ha de sorgir un projecte empresarial sòlid.

    • L'estat actual, la visió objectiu i els riscos tècnics s'avaluen conjuntament.
    • REST, accés a dades, portals i desplegament no es posposaran com a efectes retardats.
    • Veu aviat quin camí és viable des del punt de vista econòmic i operatiu.

    Comparteix la publicació

    Comparteix aquesta publicació directament

    LinkedIn, X, XING, Facebook, WhatsApp i correu electrònic estan disponibles immediatament. Per Instagram preparem l'enllaç i un text curt immediatament.

    Correu electrònic

    Instagram s'obre en una pestanya nova. L'enllaç i el text curt es copien prèviament al porta-retalls.