Sto incontrando una bella sfida. Abbiamo un vecchio software sviluppato con applicazioni Delphi e un server di database ISAM (ADS) sottostante 1 , utilizzato con molte tabelle gratuite e programmato manualmente referenziario integrità (se così fosse)
La nostra scadenza per spostare quel pasticcio in un moderno RDBMS è il 2020.
Alcuni dei sistemi server DB preferibili sarebbero
- MariaDB
- Postgres
Comunque, quale RDBMS è stato scelto alla fine non è davvero il problema che sto chiedendo. Entro 2 anni è abbastanza sportivo, lasciami spiegare perché:
Abbiamo ~ 17000 installazioni di clienti con strutture DB molto diverse (e personalizzate per i loro processi di workflow) sul campo.
ADS consente di (errare) utilizzare le strutture di directory e quelle tabelle libere , dove le applicazioni spesso creano tabelle come
<db_root>/application_dir/DATA/<KeyX>/<KeyY>/<Year>/TableXYZ.adt
o
<db_root>/application_dir/DATA/<Year>/<KeyX>/<KeyY>/TableXYZ.adt
Sebbene questa tecnica consenta un accesso rapido ai dati utilizzando un componente di TTable
di Delphi% o di% query basato su SQL, l'integrità referenziale complessiva di tali dati potrebbe contenere insidie, che nessuno nella società è più a conoscenza.
Sono un po 'in dubbio quali sarebbero i punti chiave / le metodologie per affrontare questo problema.
Credo che
- Raccolta delle statistiche di utilizzo dalle installazioni del cliente 2
- Analizzare le strutture presenti da installazioni client particolarmente complesse
potrebbe essere utile per supportare decisioni più fondate quali potrebbero essere i "meno dolorosi" modi di procedere per la migrazione.
Scrivere gli strumenti per farlo costerebbe comunque a priori alcuni sforzi degli sviluppatori.
Inoltre sono (e non sono l'unico tra i miei colleghi) non molto fiducioso nel promosso FireDAC
TBH se è la stessa umile e piena di difetti che vedo nel Delphi System e qualsiasi WinAPI correlato, non sono così sicuro che dovremmo seguire quel percorso (ci sono persino i driver per TDataSet
, che potrebbe contenere MySQL
).
ODBC non sarà realmente un'opzione, sarebbe apparentemente troppo lento, troppo generico e produrrà troppo ping-pong di rete , con la struttura e il comportamento attuali delle nostre applicazioni.
Quindi, anche la scrittura dei componenti MariaDB
, TTable
basati su un driver nativo, viene presa in considerazione.
Quali sono le metodologie consigliate per avvicinarti a quel nodo di Gordian e anche per specificare i requisiti essenziali?
1) Vale la pena ricordare che il sistema è già stato migrato da PARADOX a ADS, in sostituzione di un server DB basato su file ISAM, "pochi" anni fa.
2) Abbiamo già un servizio di analisi delle app che potrebbe essere usato per quello.