Domanda

In precedenza ho postato una domanda così ho potuto confermare la nostra corrente (sia pure arcaico) versione di Informix qui:

Come si fa a identificare Informix versione su Solaris?

(Grazie Jonathan e RET per la compensazione che fino)

Ci sono sicuramente intenzione di riqualificazione, ma stiamo discutendo prima se avrebbe più senso per passare a Oracle o Sybase in questo momento. Quali sono le tue opinioni a riguardo? E 'mia convinzione che, mentre tutti i 3 RDBMS hanno la loro unicità, tutti devono coprire la stessa terra in sostanza. Quindi, come si fa a decidere che cosa database da utilizzare?

Il grande kicker è che ho bisogno di sapere se ci aggiorniamo Informix (attualmente in uso 7.13), avremo bisogno di modificare i nostri programmi integrati sql C? Se no, allora si fa un sacco di senso per attaccare con Informix. Perché se siamo andati con Sybase / Oracle, ecc, avremmo un sacco di lavoro per le mani di aggiornare i programmi di back-end.

Ma se il passaggio a un altro database in grado di offrire grande ritorno in confronto allora saremo ancora in considerazione. Non vedo l'ora di sentire le vostre opinioni.

È stato utile?

Soluzione

Sono un osservatore sollecitato (io lavoro per IBM Informix on) - trattare i miei commenti con le dovute cautele

.

Se le applicazioni sono scritte in Informix ESQL / C, si dovrebbe fare un intervento chirurgico importante per spostarli ad altri sistemi. Si avrebbe bisogno di decidere quale interfaccia alternativa da utilizzare - la vostra scelta cross-platform (con C come linguaggio di base) è ODBC, ma Oracle fornisce l'OCI e Sybase fornisce la TDS come alternative

.

Al contrario, con Informix ESQL / C, un aggiornamento alla versione corrente (Informix ClientSDK 3,50, contenente ESQL / C 3,50, che è più recente di ESQL / C 6,00, che attualmente in uso ) dovrebbe essere indolore a meno che non sei andato dal tuo modo di scrivere codice cattivo.

Anche semplicemente migrando i dati possono essere un po 'traumatico - non insuperabilmente così. In parte, la complessità dipende da quale tipo di dati si utilizza. (Stringhe di caratteri migrare facilmente, data e ora i valori meno facilmente, per esempio). Ma la migrazione delle applicazioni richiederebbe un sacco di lavoro, come dite voi, a meno che non si erano straordinariamente preveggente e ha scritto un ottimo livello di astrazione dati

.

Un aggiornamento a Informix SE 7.26 sarebbe un gioco da ragazzi - ottenere il software, installarlo, puntarlo verso il database esistente. Probabilmente si ci si vuole ricompilare i programmi di utilizzare la CSDK più moderno, ma si potrebbe fare in modo incrementale con cura (due valori INFORMIXDIR, uno per il vecchio codice, uno per il nuovo).

Un aggiornamento a Informix Dynamic Server (IDS) 11.50 richiederebbe di esportare i dati (DB-Export) da SE e importarlo (DB-Import) in IDS. Questo sarebbe molto semplice troppo, una volta che hai IDS installato e funzionante. Ottenere IDS installato e funzionante richiede uno sforzo maggiore rispetto SE, ma non è poi così difficile.

Chiaramente, la mia raccomandazione è quella di restare con Informix. La decisione è tua, ovviamente.


  

Con IDS, avremmo dovuto fare modifiche al codice o semplicemente ricompilare?

IDS è strettamente legato alla SE, ma sono diversi. IDS fornisce un superset quasi rigorosa funzionalità SE. I posti che posso pensare a dove ci sono differenze sono principalmente roba caso limite:

  • SE ha una sintassi più per CREATE TABLE per la localizzazione di file C-ISAM per il database; IDS ha una serie completamente diversa di estensioni. La tabella semplice CREATE è lo stesso (anche se IDS ha tipi che SE non lo fa, come ad esempio VARCHAR), ma gli ornamenti sono diverse.
  • SE ha CREATE AUDIT e GOCCIA AUDIT e IDS non lo fa (ha altre strutture di audit).
  • SE ha Home Banca dati e ROLLFORWARD DATABASE; IDS non lo fa (il recupero e la registrazione in IDS è diverso).

L'area principale che può causare problemi è la gestione delle transazioni. IDS è unlogged, registrati e database 'LOG MODE ANSI', come fa SE. In IDS, si consiglia di utilizzare un database connesso - che sarebbe una raccomandazione forte. IDS fornisce dichiarazioni atomiche in una banca dati registrati - sia le opere istruzione nel suo complesso o fallisce nel suo complesso. Tuttavia, molte applicazioni SE non sono scritte con le transazioni in mente. Ci sono alcune cose che non si possono fare quando ci sono operazioni sulla base di dati, come ad esempio aprire un cursore per l'aggiornamento al di fuori della portata di una transazione. Questo è ciò tende a mordere codice migrazione da SE a IDS. Inoltre, non è possibile bloccare un tavolo se non in una transazione, e non è possibile sbloccare un tavolo se non con commit o rollback.

Quanto di un problema questo sarà dipende da ciò che si stava utilizzando in SE e come i programmi sono stati concepiti (se essi sono stati progettati, piuttosto che gettati insieme). Un database unlogged IDS e un database unlogged SE sono molto vicini - e si potrebbe migrare da uno all'altro. Ma IDS possono fare cose (come la replicazione) solo quando i database vengono registrati, e si dovrebbe mirare a essere registrati utilizzando i database.

Tuttavia, la migrazione verso CSDK 3,50 dovrebbe essere solo una ricompilazione a meno che non sei riuscito a fare un po 'davvero strazianteLy cose terribili.

Altri suggerimenti

Voci di morte di Informix sono molto esagerate.

Con l'investimento in codice embedded che avete, qualsiasi risparmio prezzo di adesivo apparente di essere ricevuto da passare a O brand o marchio S scomparirebbe molto rapidamente dei costi di riqualificazione. Questo è solo un dato di fatto: ho visto progetti bruciano $ 100K + sulla riqualificazione di risparmiare $ 20K p.a. nella concessione di licenze. Questo non è denaro ben speso.

Si vorrebbe essere molto, molto sicuro che l'interruttore di RDBMS stava per offrire qualcosa che davvero non si poteva raggiungere attaccare con quello che hai. Perché il rischio (per amara esperienza - ho combattuto contro di essa lungo e duro). È che si potrebbe spendere una fortuna in dollari e il tempo solo in esecuzione sul posto, se non andando a ritroso

Se avete intenzione di fare un passo indietro e guardare il problema in modo olistico, penso che sarebbe molto meglio valutare le possibilità di nuove, architetture di database agnostico, loosely coupled di scambiare un modello integrato per un altro. Ciò fornirà una maggiore flessibilità lungo la pista.

La speranza che aiuta.

Abbiamo sostenendo Informix DB per anni utilizzando GeneXus. Informix è un grande DB, ma non ci sono un sacco di strumenti intorno ad esso per aiutare a costruire in modo agile. So che molti negozi Informix che utilizzano solo il GeneXus IDE per costruire applicazioni web e applicazioni per smart phone. Se non avete sentito parlare di GeneXus, check it out.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top