29 luglio 2005

Indici basati su funzioni

Ho provato a creare indici basati su funzioni con Oracle 8i. Anche questa volta è risultato molto utile un articolo su asktom che mi ha risolto diversi problemi legati ai permessi che sono necessari per creare ed utilizzare questi tipi di indici.

28 luglio 2005

tre db e una query

Prendendo spunto da una domanda su una query trovata nel newsgroup di PostgreSQL ho confrontato diversi risultati in tre database: Oracle, PostgreSQL e MySQL.
Preparazione:
CREATE TABLE test (i INTEGER);
CREATE UNIQUE INDEX unq_test ON test(i);
INSERT INTO test VALUES(1);
INSERT INTO test VALUES(2);
INSERT INTO test VALUES(3);
La query è:
UPDATE test SET i = i + 1;
Sia in PostgreSQL che in MySQL non funziona (Avverte della violazione di una chiave univoca!).
Gli sviluppatori di Posgres ammettono che è un problema e che lo risolveranno in futuro.
L'unico dei tre database che riesce ad effettuare la query è Oracle perché, anche in questo, caso considera una query come una operazione atomica: probabilmente, per motivi di implementazione, è costretto ad aggiornare le righe una ad una e quindi a violare temporaneamente la chiave univoca tuttavia l'applicazione dell'intera query non viola nessuna constraint!
Piccoli particolari (se così vogliamo chiamarli) che fanno la differenza.

27 luglio 2005

Un libro per iniziare

Oggi DUE post! Ho deciso di scriverne un altro per sottolineare meglio l'importanza del documento che ho trovato, ovvero il primo capitolo del libro "Database in depth" di C. J. Date. Il link del titolo di questo articolo del blog riporta alla copia nel mio sito personale, nel caso il link non funzionasse.
Per ora l'ho letto rapidamente, ma sembra molto ben fatto ed è utilissimo per tutti.

Nologging e storia della Oracle

Ho provato a fare un'importazione con imp su un db vuoto e, dato che ci impiegava molto tempo, ho deciso di sfruttare l'istruzione ALTER TABLESPACE <tablespace> NOLOGGING, in modo che non venisse generato il log degli oggetti presenti in quei tablespace.
Il primo problema è che l'opzione nologging è efficace solo per gli oggetti creati dopo il comando alter tablespace, mentre gli oggetti presenti continuano a mantenere la loro politica di logging.
Il secondo problema è che l'imp importa le definizioni delle tabelle come sono presenti nel database originale: quindi se era attivo il nologging, diventa attivo ugualmente anche dopo l'alter tablespace.

Recentemente è stato pubblicato questo link sulla storia della Oracle, una lettura interessante. Gli altri articoli sono riportati nel riquadro giallo.
Volete vedere dov'è la sede della Oracle? Usate lo zoom! :-)

17 luglio 2005

Oracle TimesTen

Ho scoperto recentemente il database real time TimesTen,
che fa parte dei prodotti Oracle, sebbene ci sia un sito ufficiale.
TimesTen è multipiattaforma, comunque sto facendo delle prove su Windows XP e Linux. Per ora la versione Windows non ne vuole sapere di funzionare, nel senso che la connessione ODBC non avviene in alcun modo (provato su due PC diversi con XP home e pro); la versione Linux è più semplice da gestire.
Sembra che TimesTen sia il database ideale per la gestione di basi dati come quelle delle compagnie telefoniche, banche, prenotazione di servizi, notizie in tempo reale; è molto scalabile e può addirittura fare da "cache" ad Oracle, che verrebbe usato come repository di datawarehousing.

11 luglio 2005

Nuovi articoli OTN

Il sito web di Oracle, specialmente nella sezione OTN (Oracle Technology Network) è in continuo sviluppo.
Gli ultimi interessantissimi articoli riguardano PHP e Oracle XML DB e la DeployPHP series, al momento alla prima puntata, in cui si illustrano principalmente i vantaggi di ADODB. Dopo un primo momento di entusiasmo, penso che alla fine dei conti convenga sempre usare l'API nativa del DB in PHP, perchè consente di ottenere il massimo controllo sull'applicazione e utilizzare immediatamente eventuali nuove features, cosa molto frequente in PHP.
Da segnalare la serie di articoli su XML schema.

06 luglio 2005

oracle.com e i feed RSS

Oracle sta puntando molto sull'informazione al pubblico e sulla collaborazione degli utenti di varie comunità.
Tutti i feed sono raccolti in una sola pagina riassuntiva.
Notare la presenza dei podcasts...

Interessante questa prima lezione sulla programmazione PHP ottimizzata.