L'utente Aaron Bertrand ha formulato alcuni commenti che si allineano bene con i miei pensieri sulla tua domanda. Questa è una sfida più che una risposta alla tua domanda specifica, ma penso che sia utile considerare in questo contesto.
La portabilità è un bel obiettivo da manuale, ma raramente accade nella pratica.
Se devi cambiare piattaforma ad un certo punto, ci saranno cambiamenti necessari per l'applicazione, il database e probabilmente molte altre cose. Se puoi essere un po '"indipendente dalla piattaforma" senza troppi sforzi, va bene. Ma è davvero una cattiva decisione aziendale usarlo come obiettivo di progettazione.
Ci sono molti posti online in cui le persone discutono i lati negativi o programmano in questo modo, eccone uno che trovo abbastanza interessante:
I livelli di astrazione del database devono morire!
L'errore di portabilità
L'autore usa un argomento che sento sempre: se usi un buon livello di astrazione, sarà facile spostarti da $ this_database a $ other_database lungo la strada.
Sono cazzate. Non è mai facile
In qualsiasi applicazione non banale supportata da database, nessuno pensa a cambiare database come una cosa facile. Pensare che "la conversione sarà indolore" è una fantasia.
I bravi ingegneri cercano di selezionare gli strumenti migliori per il lavoro e quindi fanno tutto il possibile per sfruttare le caratteristiche uniche e più potenti dei loro strumenti. Nel mondo dei database, ciò significa suggerimenti specifici, indicizzazione, tipi di dati e persino decisioni sulla struttura delle tabelle. Se ti limiti davvero al sottoinsieme di funzionalità che è comune a tutti i principali RDBMS, stai facendo un grosso disservizio a te stesso e ai tuoi clienti.
Non è diverso dal dire "Sto facendo per limitarmi a un sottoinsieme di PHP che è lo stesso in Perl e C, perché un giorno potrei voler cambiare lingua e portare" indoloremente "il mio codice".
Questo non succede.
Il costo del cambio di database dopo lo sviluppo e la distribuzione di un'applicazione è piuttosto elevato. Sono possibili modifiche allo schema e all'indice, modifiche alla sintassi, ottimizzazione e ottimizzazione del lavoro da ripetere, suggerimenti per la regolazione o la rimozione e così via. Cambiare mysql_foo () in oracle_foo () è davvero l'ultimo dei tuoi problemi. Toccerai la maggior parte, se non tutte, del tuo SQL - o almeno dovrai verificarlo.
Non mi sembra "indolore".
<>
) e non standard (!=
), senza compromessi in termini di prestazioni o manutenibilità, scelgo sempre standard. Ma quando si tratta di altri costi, o non esiste un equivalente standard, seleziono e divento proprietario. Le cose che ti arrendi solo per la possibilità di cambiare completamente piattaforma in un secondo momento non valgono la pena.