Informix su Linux

Informix e' un database relazionale molto diffuso in ambiente Unix.
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.

In questo breve documento sono riportate alcune indicazioni utili alla gestione di Informix SE su Linux. SE sta per Standard Engine: uno dei due "motori" dell'RDBMS Informix, mentre Linux e', ovviamente, un sistema operativo Unix distribuito in forma gratuita. Naturalmente alcune informazioni, mutatis mutandis, possono essere utilizzate anche su altri ambienti/prodotti. In qualche caso, per chiarire le funzionalita' fornite dal prodotto, vengono riportati i corrispondenti comandi di altri RDBMS.

Gli argomenti sono stati raggruppati per argomento:

Configurazione

Installazione

L'installazione di Informix e' piuttosto semplice e si limita al settaggio di alcuni veriabili di ambiente (INFORMIXDIR, PATH) ed ad alcuni eventuali parametri.

I passi per una corretta installazione debbono essere eseguiti come utente root e sono i seguenti:

A questo punto l'ambiente e' installato.

Configurazione

La configurazione di Informix rispetto alla sua installazione... e' ancora piu' semplice! Come utente informix:

A questo punto l'ambiente e' configurato. Per provare l'accesso alla base dati si puo' utilizzare il comando dbaccess. La stessa, semplice, configurazione deve essere effettuata per ogni utente debba accedere ad Informix.
In qualche caso e' necessario configurare qualche altra variabile d'ambiente (eg. DBDATE).

Configurazione Informix Net

La configurazione del file sqlhosts consente l'accesso a basi dati Informix presenti su altri sistemi e la definizione di differenti modalita' di connessione. I parametri definiti nel file sqlhosts sono:

Ad esempio con:
# demo_on onipcshm        on_hostname    on_servername
demo_se seipcpip          local_sys      sqlexec
demo_re sesoctcp          remote_sys     sqlexec
E' possibile accedere ad un DB locale (utilizzando demo_se che e' il default) o remoto (con demo_re).
Per le connessioni in rete e' necessario configurare la porta utilizzata nel file /etc/services:
sqlexec         1526/tcp            # Informix
Sul sistema che ospita la base dati, se deve comportarsi da server per connessioni in remoto e' necessario attivare il processo sqlexecd demo_se -l/var/adm/log/sqlexecd.log.

Architettura

Struttura directory

La struttura delle directory di Informix e' molto semplice:

Struttura dase dati

La struttura del database con Informix SE e' molto semplice. Per ogni dase dati creata viene generata una directory con nome db_name.dbs all'interno della quale sono presenti due file per ogni tabella.
Un file ha come nome table_nameX.dat e contiene le righe della tabella con tracciato record fisso ed in chiaro. Il secondo file ha come nome table_nameX.idx e contiene tutti gli infici definiti sulla tabella in formato standard C-ISAM.
Oltre a tutte le tabelle definite dall'utente vengono create, sempre nello stesso modo, le tabelle del data dictionary.

Struttura processi

La struttura delle directory di Informix e' molto semplice. Avevate forse dei dubbi?!
Per ogni attivita' svolta sulla base dati vengono attivati due processi. Il primo e' quello che si occupa dell'interfaccia con l'utente e puo' essere un'utility di Informix (eg. isql) o un programma sviluppato ad hoc (eg. in ESQL/C). Il secondo processo e' quello che si occupa dell'accesso ai dati, si tratta sempre del programma sqlexec.

Nel caso di utilizzo in remoto, sul server deve essere presente il processo sqlexecd che generera' un sqlexec per ogni connessione utente. I processi utente invece gireranno normalmente sul sistema client e sarrano connessi tramite socket.
Nel caso in cui ci sia da interrompere un attivita' e' meglio ammazzare il processo utente e non l'sqlexec. Se si puo'...

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 per determinare il percorso ottimale.
Lo statement UPDATE STATISTIC ricalcola i valori necessari all'ottimizzatore. Naturalmente deve essere lanciato periodicamente o quando sono effettuati pesanti modifiche ai dati.

 

Utilizzo

Utilizzo

L'utilizzo di Informix e'... molto semplice!
In effetti si tratta di una base dati... e si accede ad essa via SQL. I programmi forniti con la base dati sono costituiti da menu e con un'interfaccia utente semplice. Possono essere costruiti Menu, Form e Report in modo banale quasi "utente". I Form cosi' generati possono essere utilizzati da programmi piu' complessi realizzati con l'ambiente di sviluppo 4GL.

Utility

Sono disponibili diversi programmi e funzioni di utilita':

Utilizzo in rete

Il prodotto per l'utilizzo di Informix in rete (e quindi nelle diffuse configurazioni client/server o in configurazione di database distribuito) e' Informix Net ed e' gia' stato descritto nella sezione di configurazione.

Da diverso tempo sono inoltre disponibili driver ODBC e JDBC per l'utilizzo di informix con pacchetti o applicazioni standard (per cosi' dire).

Amministrazione

Attivita' di amministrazione

Le attivita' di amministrazione su Informix SE sono piuttosto limitate. Rispetto ad altre basi dati (o anche alla versione On Line di Informix) le attivita' sono piu' semplici e dirette. Infatti la base dati e' fondamentamente un directory Unix ed una serie di file. Quasi ogni problema si riduce ad un problema presente sul sistema e li va risolto.
Per le attivita' tipiche di ribaltamento dei dati si utilizzano i programmi gia' descritti nella sezione Utility.
Utile e' il comando finderr: converte il codice numero di un errore Informix in una descrizione, a volte, piu' comprensibile.

Tuning

Il tuning sullo standard engine e' limitato.
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.

Con Informix, come con altri RDBMS, e' fondamentale il tuning a livello di SQL ed il corretto disegno degli indici.


Testo: Informix su Linux
Data: 31 Dicembre 2003
Versione: 1.0.1
Autore: mail@meo.bogliolo.name