Informix e' un database relazionale molto diffuso in ambiente Unix e disponibile anche in ambiente Windows-NT.
Informix vanta una diffusione notevole (spesso viene distribuito con applicazioni) una grande numero di terze parti e di clienti che lo conoscono approfonditamente ed una presenza sul mercato pluriennale.
I motori
Il cuore del database Informix e' il "motore" che gestisce la base dati. I motori di Informix sono tre:
Nel seguito del documento si fara' riferimento alla versione on-line che e' maggiormente diffusa. Le differenze tra i motori sono comunque limitate. Di recente introduzione e' la versione per sistemi multiprocessori.
Di recente e' stato commercializzato un prodotto on-line for workgroup. Si tratta del normale motore dell'on-line ma con un numero di licenze ed un prezzo concorrenziali sul mercato, ora sempre piu' interessante, dei sistemi NT e dei micro Unix (Oracle for Workgroup, SQL Server).
Le differenze tra versioni sono comunque limitate.
SQL
L'SQL di Informix e' molto "pulito". In effetti e' uno degli SQL piu' vicini agli standard ANSI e che piu' velocemente si e' adeguato alle linee di standard emerse nel tempo.
Sono comunque presenti diverse particolarita' utili ai programmatori.
Oggetti
Naturalmente con Informix e' possibile creare tabelle. Non e' tuttavia l'unico tipo di oggetto che Informix mantiene. Tra gli altri: viste, indici, ruoli, trigger, stored procedures, ...
Tipi di dato
Informix permette l'utilizzo di diversi tipi di dato (una ventina circa).
Tra i principali:
Dizionario dati
Il dizionario dati o System Catalog, come preferisce Informix, contiene tabelle di sistema che riportano tutte le informazioni su tutti gli oggetti presenti nella base dati.
Le tabelle del Data Dictionary sono una trentina ed hanno sempre il prefisso SYS (eg. SYSTABLES, SYSCOLUMNS, SYSTRIGGERS, SYSUSERS, SYSVIEWS).
Naturalmente le tabelle del Data Dictionary non debbono essere modificate manualmente poiche' sono mantenute automaticamente da Informix.
L'ottimizzatore
Informix utilizza un ottimizzatore cost-based per la valutazione del percorso d'accesso da utilizzare nell'esecuzione delgi statement SQL. Per altro l'ottimizzatore di Informix e' utilizzato da molti anni e ha raggiunto un notevole grado di sofisticazione e di robustezza.
Per farsi riportare il piano di esecuzione di uno statemente e' sufficiente utilizzare il SET EXPLAIN.
Gli ottimizzatori cost-based utilizzano le dimensioni delle tabelle e gli istogrammi di distribuzione degli indici e dei dati per determinare il percorso ottimale. Con Informix lo statement UPDATE STATISTIC ricalcola i valori necessari all'ottimizzatore. Naturalmente deve essere lanciato periodicamente e quando sono effettuati pesanti modifiche ai dati.
Transazioni
La gestione delle trasazioni e' fondamentale su un RDBMS. Informix gestisce le trasazioni con gli statement classici di COMMIT e ROLLBACK.
L'instruzione di SET LOG consente di specificare il tipo di logging utilizzato.
Locking
Per una corretta gestione della concorrenza e' necessario l'utilizzo dei lock. Due transazioni non possono infatti motificare contemporaneamente gli stessi dati in modo non coordinato (cfg. ACID).
Le possibilita' offerte da Informix sono diverse ed e' importante riportarne gli elementi principali.
Lock Scope
Il lock scope e' il livello a cui viene posto un lock.. Il lock scope puo' essere a livello di riga, pagina o tabella. Il default e' a livello di pagina (poiche' piu' efficiente). Il lock a livello di riga consente una maggior concorrenza ed il lock a livello di tabella ha il peso minore ma permette un livello di concorrenza limitato.
Il lock scope puo' essere definito all'atto della creazione di una tabella.
Lock Mode
Il lock mode e' la modalita' per cui viene richesto un lock. Un lock puo' essere shared, exclusive e promotable. Se si utilizza l'istruzione di SELECT ... FOR UPDATE viene richiesto un lock promotable che viene trasformato in exclusive al momento della modifica.
SET LOCK MODE
L'istruzione di SET LOCK MODE consente di definire se, a fronte di un lock su una risorsa, si vuole attendere la sua liberazione oppure farsi restituire un codice d'errore.
Concorrenza
L'accesso concorrente agli stessi dati presenta diverse possibilita' con Informix. E' infatti possibile impostare l'isolation level ai seguenti valori:
I valori sono stati riportati in ordine crescente di isolamento e di complessita'.
L'isolation level viene impostato con lo statement SET TRANSACTION.
Utility
Sono disponibili diversi programmi e funzioni di utilita':
Configurazione
La configurazione di Informix, come pure
la sua installazione, e' piuttosto semplice e si limita al settaggio di alcuni
veriabili di ambiente (INFORMIXDIR, PATH) ed ad alcuni eventuali parametri.
Se servono maggiori indicazioni potete leggere il documento
Amministrare Informix su Linux.
La preparazione all'installazione e' banale: vanno creati l'utente informix
ed il gruppo informix ed assegnati al File Systeme che poi (per default)
ospitera' il DB.
Il software viene distribuito generalmente come tar file e deve
essere scaricato sul sistema ospite.
Quindi e' necessario settare le due variabili d'ambiente indicate e,
come utente root, lanciare lo script di installazione (eg. installse).
Il tuning, a livello di sistema, della base dati dipende dal tipo di
engine:
Altri prodotti Oltre all'RDBMS Informix distribuisce
diversi altri prodotti:
... Nel tempo alcuni prodotti
hanno cambiato nome (eg. On Line --> IDS) e si sono arricchiti di funzionalita'
(eg. interfaccia web). Ma i concetti di base non sono cambiati. Nuove funzionalita' Dall'introduzione dell'engine on-line
sul mercato sono state notevoli i miglioramenti e le nuove funzionalita' inserite
nel prodotto. Come punti di forza sono sicuramente
da ricordare:
Tali caratteristiche fanno di Informix
una buona scelta sia per le basi dati di uso gestionale che per complessi (ed
enormi) database di Dataware House. Informix Net Il prodotto per l'utilizzo di Informix
in rete (e quindi nelle diffusissime configurazioni client/server o in configurazione
di database distribuito) e' Informix Net. Da diverso tempo sono inoltre disponibili
driver ODBC per l'utilizzo di informix con pacchetti o applicazioni standard
(per cosi' dire). Testo: Informix
A questo punto l'ambiente e' installato. Basta configurare l'ambiente
(eg. .profile) dell'utente informix e utilizzare i normali
comandi per operare sul DB (eg. dbaccess).
Con Informix, come con altri RDBMS, e' fondamentale il
tuning a livello di SQL ed il corretto disegno degli indici.
La base dati e' contenuta in una directory
ed ad ogni tabella corrisponde una coppia di file C-ISAM.
Dal punto di vista del sistema e' sufficiente garantire buone
prestazioni sul file system utilizzato. Non vi sono elementi
di tuning del "motore" informix.
La base dati e' mantenuta su una serie di file dati gestiti
direttamente da Informix.
Il tuning della base dati viene svolto a livello di Informix
e richiede una certa esperienza.
Data: 16 Ottobre 1997
Versione: 1.0.3
Autore: mail@meo.bogliolo.name