Introduzione
Informix
è una tra le più grandi società al mondo produttrici
di DBMS e software correlato, insieme con Oracle e IBM.
Queste
ultime due, con i loro prodotti di punta “Oracle 8i” e “DB2” sono le sue
più serie rivali sul mercato dei database.
Dal
punto di vista tecnologico però il vero concorrente di Informix
è Oracle, che può vantare un potente motore transazionale
e un application server universalmente riconosciuto come uno dei migliori
in questo campo : per questo occasionalmente faremo, là dove ha
rilevanza, delle comparazioni che ci aiuteranno a capire la diversa filosofia
con cui sono stati disegnati i due DBMS e come hanno integrato nel
tempo la funzionalità di server applicativo(e quindi Java).
Informix Dynamic
Server 2000
Dynamic
Server.2000 è l’ultima versione del server di database, rilasciata
meno di un anno fa. E’ un motore transazionale estremamente performante
di alta affidabilità , strutturalmente estendibile e dinamicamente
scalabile.
Dynamic
Server è un server di database: un programma applicativo che gestisce
l’accesso simultaneo di più applicazioni client a una o più
basi di dati.
IDS
(Informix Dynamic Server) è stato progettato secondo il modello
architetturale di Informix chiamato Dynamic Scalable Architecture (DSA),
che si articola essenzialmente in tre componenti:
-
hared
Memory Management (controllo delle caches e risurse condivise)
-
Disk management
(gestione dei volumi, degli accessi al disco ecc..)
-
Virtual
Processors (gestione dei tasks)
Questo
modello rende IDS così flessibile da poter essere utilizzato in
situazioni completamente differenti come ambienti OLTP, data-warehouse,
Web, gestione del multimediale ecc..
Chi
si occupa e conosce almeno un po’ l’object oriented è naturalmente
portato a pensare che il suo ambito sia quello applicativo e il database
, con la sua struttura relazionale e quindi non-OO, sia non solo estraneo
al proprio mondo,ma, visto che in ogni caso occorre archiviare i dati e
i DBMS in azienda sono per lo più relazionali, sono anche una non
banale complicazione. Esistono non a caso sul mercato diversi (e costosi)
prodotti che si occupano di migrare il modello OO di un’applicazione su
una struttura relazionale.
Nel
caso di Informix c’è un parziale rimedio a questa situazione e vedremo
tra poco come un analista OO può avere un ruolo fondamentale nel
disegno di un database.
IDS.2000
è un ORDBMS ovvero un Object Relational Database Management System:
esso combina le capacita di un Relational DBMS con le caratteristiche avanzate
di un Object Oriented DBMS (le caratteristiche note del mondo OO).
A
un sistema di tipo RDBMS è richiesto di gestire tipi di dati
semplici (i tipi di dati standardizzati dall’ANSI SQL) e di permettere
l’accesso e la loro manipolazione attraverso l’SQL, il linguaggio universale
per l’interrogazione dei database.Un sistema di gestione delle risorse
di tipo OO è radicalmente diverso: si basa sui principi dell’OO,
per cui entrano in gioco i concetti di classe, oggetto, polimorfismo, subclassamento,
serializzazione, persistenza ecc…
Insomma
un OODBMS può essere considerato un’applicazione OO che si occupa
dell’archiviazione e del recupero di dati.
Il
problema fondamentale degli OODBMS sono le prestazioni (e dunque la scalabilità,
un requisito chiave dei db di fascia alta) e l’uso eccessivo di risorse
(memoria, CPU). Al contrario i database relazionali possono vantare un
ventennio di crescita e miglioramenti che li rende insuperabili da questo
punto di vista.
Ecco
perché Informix, come altri, ha scelto la via della soluzione intermedia,
che garantisca le performance gradualmente raggiunte nel corso degli anni
e, d’altro canto, aggiunga ai sistemi tradizionali , per quanto possibile
integrandole col modello relazionale, le nuove caratteristiche dell’Object
Oriented.
IDS.200
può dirsi Object Oriented per le seguenti caratteristiche:
-
Possibilità
di definire tipi di dati complessi (UDT : user defined data type) e di
routines associate (UDR: user defined routine)che li gestiscono (proprio
ciò che si fa quando si definisce una classe in C++ o Java)
-
Possibilità
di overriding (e polimorfismo) delle routines (che rende lo stesso codice
adattabile a più tipi).
-
Concetto
di gerarchia delle tabelle ( una tabella può subclassare un’altra
tabella)
Abbiamo
visto molto brevemente cos’è IDS.2000 rimarcando il suo carattere
di database (parzialmente) OO per poter introdurre e parlare più
diffusamente di cos’è stato costruito utilizzando la tecnologia
OO : la sua piattaforma middleware ovvero la Internet Foundation.2000.
Informix Internet
Foundation 2000
La
piattaforma server IIF.2000 introdotta con l’ultima versione del database
integra in una intelligente soluzione le più avanzate tecnologie
applicative attualmente sul mercato (EJB, JDBC 2.1, SQLJ0-2,
pluggable JVM, OLEDB, ActiveX/COM+, Office Connect, XML, XSL, e altro),
più alcune tecnologie di sviluppo proprietarie come la Virtual Table
Interface per la definizione di tabelle virtuali e gateway verso sorgenti
di dati esterni, la Virtual Index Interface per l’indicizzazione
di non standard (es. dati geospaziali), Data Source Interface per l’accesso
a altri databases, e il DataBlade Development Kit per la creazione dei
datablades.
Commercialmente
parlando si tratta di una suite che comprende IDS.2000, alcuni datablades
( dei moduli eseguibili che ne estendono le potenzialità introducendo
nuovi tipi e nuove routines come per esempio il datablade per la ricerca
ipertestuale), J/Foundation per il supporto Java e altri package che aggiungono
alla soluzione le tecnologie di cui sopra.
Anche
solo un cenno su tutti gli aspetti di IIF.2000 richiederebbe molto spazio.
Quello
che è interessante notare a proposito di IIF.2000 è ciò
che essa effettivamente rappresenta e tende a diventare : una piattaforma
di sviluppo per Internet integrata in un potente server di database.
Come
piattaforma di sviluppo per Internet è già ora abbastanza
ricca e robusta : abbiamo già visto come essa ingloba le più
recenti tecnologie di sviluppo, anche se da questo lato si aspettano nuove
aggiunte.
Essa
è poi integrata nel database server : e questo è l’aspetto
più interessante.
Per
realizzare tale intima integrazione con il database Informix adotta due
soluzioni.
Le
tecnologie come la JVM, ActiveX/COM+, EJB (che richiede un EJB container
) che richiedono una parte attiva
(una
parte server cioè) possono contare su un Virtual Processor loro
dedicato che si occupa di inizializzare, gestire e fermare il relativo
componente server. Per esempio, la JVM nel database è in realtà
un Virual Processor che si occupa di caricare un Java Run Time preventivamente
installato sul sistema.
Le
tecnologie invece come XML, la ricerca ipertestuale ecc…, vengono gestite
introducendo per gli oggetti che trattano (file XML, documento PDF, WORD
e così via) un tipo di dato ad hoc e le relative routines (le due
cose costituiscono un datablade). Per esempio, per rendere il database
XML-enabled si aggiunge ad esso un datablade, l’XMLBlade, che definisce
il tipo XML nel database più alcune routines per indicizzare, archiviare,
recuperare e processare oggetti di questo tipo.
Questa
estendibilità è resa possibile dalla tecnologia OO che Informix
ha saputo produttivamente integrare nel suo prodotto.
IIF.2000 e Java
: “il meglio dei due mondi”
L’integrazione
di Java nel database ha portato ad avere, come dice il motto che per un
po’ ha circolato negli annunci
della
Corporate, il meglio dei due mondi, ovvero del relazionale e dell’Object
Oriented.
Rispetto
ai concorrenti, Informix ha iniziato tardi a puntare e investire su Java
: questo è dovuto più che altro a fattori esterni. Attualmente,
soprattutto dopo la strategica acquisizione di Cloudscape, la società
che produce l’omonimo e popolare database 100% Java per il mercato del
mobile computing, e la partnership con ATG , la software house proprietaria
di ATG Dynamo , un tra i più potenti application server esistenti
in circolazione, si è assicurata un ruolo
di
primo piano in quest’area.
Vediamo
ora cosa intende Informix con “Java in the Database”.
Per
iniziare diciamo che la Internet Foundation.2000 include quasi tutte le
tecnologie Java di Informix : occorre quindi acquistare questo bundle e
non semplicemente IDS.2000 che comprende solo il motore e gli strumenti
di amministrazione.
Ecco
un dettaglio come si articola il supporto per Java in Informix:
-
Pluggable
JVM (1.1 e Java2)
Informix ha fatto una scelta intelligente rispetto al suo concorrente Oracle
: ha deciso che l’utente può scegliersi la Java Virtual Machine
e quindi il JDK che vuole utilizzare. Ciò porta a qualche ulteriore
complicazione progettuale, ma è sicuramente la strada razionale
e più “aperta”. Per utilizzare un certo JDK invece di un altro è
sufficiente specificarlo in un file di configurazione e riavviare il server
: un Virtual Processor dedicato al caricamento e all’esecuzione della JVM
si occupa del caricamento del run time di Java e della sua esecuzione.
-
Informix
JDBC Driver (type 4) v 1.5 (supporta 1.1)
Si tratta del primo vero punto segnato Informix con Java : creò
questo driver (il cui primo rilascio aveva la versione 1.22) in sostituzione
di un artificiosa soluzione basata su RMI e chiamata a librerie native
fini per superare perfino Oracle, che solo più tardi ha rilasciato
il tipo 4 del suo driver (per un approfondimento sul significato
della dicitura “type 4” rimando all’articolo [7]).
-
Informix
JDBC Driver (type 4) v2.1 (supporta 1.2)
Dopo qualche mese dal primo rilascio del driver JDBC per Java 1.1 terminò
il programma Beta della versione del driver per l’allora nuova specifica
JDBC 2.0 di SUN. Il versioning del software segue più o meno
quello delle specifiche. Quest’ultima versione, la 2.1, supporta infatti
non solo tutto JDBC 2.0, ma anche le estensioni successivamente introdotte
da SUN (es. il connection pooling)
-
SQLJ Parte
0 (Embedded SQL in Java)
Informix è stato tra uno dei protagonisti del consorzio da cui è
nato SQLJ (http://www.sqlj.org per tutte le informazioni) insieme
agli altri grandi produttori di database. Il livello 0 dello standard viene
supportato essenzialmente attraverso il compilatore sqlj che si trova nel
jar package relativo a SQLJ. E’ un tool java, quindi occorre il Sun JDK
o una qualsiasi JVM compatibile per utilizzarlo.
-
SQLJ Parte
1 (Java Stored Procedures) (“Krakatoa”)
La parte 1 dello standard si occupa di definire le modalità di creazione,
registrazione ecc.. delle procedure Java nei database. Il nome in codice
di questo progetto, per quanto riguarda Informix, era “Krakatoa”, il noto
vulcano ad est di Java : benchè sia ormai prodotto fatto e finito
il nome ha avuto così successo da diventare definitivo. Per poter
utilizzare Krakatoa occorre chiedere all’Amministratore del Database che
modifichi il file di configurazione, in modo che il server al riavvio crei
un Virtual Processor di tipo JVP che carica la JVM da voi preferita, e
i jars relativi a Krakatoa.
A questo punto il database è pronto a ospitare procedure in Java
: è sufficiente di qui in poi seguire la procedura per installare
e registrare le proprie routines nel database da Informix indicate nello
specifico manuale.
-
SQLJ Parte
2 (Mapping Java classes to SQL types)
La terza parte di SQLJ è sicuramente la più interessante,
perché tenta finalmente una un’unificazione là dove è
già stato prodotto tanto da diverse grandi software house, come
ho già accennato in precedenza.
SQLJ 3 propone delle regole su come unire due aree di confine : quella
Object Oriented dell’area applicativa e quello relazionale dei database
tradizionali. Tecnicamente il problema è quello di dover determinare
il modello relazionale più adatto e performante a un modello dei
dati a oggetti definito da un’applicazione OO o viceversa. Lo strumento
che Informix fornisce agli analisti e sviluppatori per affrontare questo
problema si chiama “Object Translator” e non è per ora compreso
in IIF.2000. L’ Object Translator verra rilasciato anche com plig-in per
Rational Rose il noto strumento di analisi della Rational. L’implementazione
di SQLJ Part 3 non è compresa in IIF.2000 perché al momento
del suo rilascio non era ancora stato definita questa parte dello standard.
-
Java DataBlade
Modules (Java DBDK)
Si tratta della versione per Java del kit per creare i DataBlade. Anche
con il linguaggio Java, oltre che in C e C++, è possibile scrivere
un DataBlade, ovvero un modulo software che estende le potenzialità
del server introducendo un nuovo dato oltre ai built-in e a quelli esistenti
e le ruoutines per manipolarlo come dato SQL. Si può anche usare
Java DBDK per creare semplici collezioni di procedure in Java logicamente
correlate : si ha in tal caso il vantaggio di poter utilizzare il potente
wizard per l’autogenerazione del codice.
-
Java Virtual
Table Interface (JVTI)
La Virtual Table Interface è una tecnologia che permette di introdurre
in un database Informix una qualsiasi sorgente di dati esterna (es.: un
server di news, un file system, una tabella di un altro database non Informix
ecc..) come una normale tabella relazionale.
Per queste tabelle virtuali cambia la semantica delle normali operazioni
SQL. Per esempio se la sorgente di dati è un server di news la “CREATE
TABLE….” avvierà una connessione al server stesso, l’istruzione
“SELECT * FROM news WHERE newsgroup=’comp.database.informix.*’“ mi selezionerà
tutte le news relative a Informix ecc…
-
Enterprise
JavaBeans (Session & Entity Beans) (“Solano”)
Informix supporta gli EJBs attraverso un EJB framework nel server
di database. Con gli EJBs nel database si ha lo straordinario vantaggio
di poter disporre di un accesso row-level di tipo non SQL ai dati. A questo
punto non c’è limite alla fantasia sulle possibilità di EJBs
così “vicino ai dati”.
“Solano” che era il nome in codice del progetto non fa parte di IIF.2000
e sarà essere rilasciato entro qualche settimana, con la nuova versione
del server.
Cloudscape
Cloudscape
e’ un database distribuito scritto completamente in Java creato dalla omonima
societa che la Informix ha acquisito lo scorso anno.
Piu’
che un prodotto e’ una suite di prodotti che comprende:
-
Cloudscape
SQL DBMS
E’ il componente di base : un DBMS scritto in Java e qualche strumento
di amministrazione.
-
CloudSync
E’ il componente di sincronizzazione : permette di creare sistemi distribuiti
di replicazione e sincronizzazione.
-
CloudConnector
Un application server sottoinsieme di WebLogic che permette di creare una
soluzione completa per l’eBusinness, dall’archiviazione dei dati alla loro
replicazione, sincronizzazione e pubblicazione sul Web
Cloudscape
e’ molto apprezzato nel mondo Java : basti pensare che la SUN stessa lo
distribuisce in evaluation con la sua implementazione della J2EE (quindi
tutti gli sviluppatori che hanno scaricato J2EE stanno utilizzando questo
database) e da BEA Systems che lo distribuisce sempre in evaluation con
WebLogic.
Abbiamo
concluso la nostra panoramica introduttiva su Java e Informix.
Come
si vede Informix ha puntato molto su Java e in generale sulle tecnologie
Web emergenti come ad esempio XML perche’ sono tecnologie enterprise :
proprio l’ambito in cui si muove qualsiasi DB vendor per creare quella
che chiama la propria “way to web”.
Riferimenti e
Bibliografia
Ecco
alcuni indirizzi utili per gli argomenti trattati:
[1]
http://www.informix.com : il sito ufficiale di Informix ( quello italiano
sarà presto attivato).
[2]
http://www.informix.com/idn : l’area degli sviluppatori : occorre registrarsi
(gratuitamente) on line.
[3]
http://examples.informix.com : esempi di soluzioni applicative complete
di codice e commenti.
[4]
http://www.sqlj.org : per lo standard SQLJ
[5]
http://www.cloudscape.com : il sito di Cloudscape Inc.
[7]
"JDBC - La teoria" e successivi www,mokabyte.it/1997/06/jdbc.htm
Per
quanto riguarda i libri ecco i testi che posso consigliare:
“Dynamic
Web Programming” - di G. Harrison - Informix Press
Contiene
esempi di progetti in Java, e JavaScript
Ovviamente
i manuali di riferimento del prodotto per tutti i possibili dettagli tecnici,
in particolare:
“ Informix
Guide to SQL : Syntax”
“
Informix Guide to SQL : Tutorial”
“Creating
UDRs in Java”
“Informix
JDBC Driver : Programmers Guide”
“Virtual
Table Interface”
“Virtual
Index Interface”
“Informix
DataBlade API Programmers Manual”
|