30 dicembre 2006

Opensolaris


I Boot OpenSolaris
Alcune indiscrezioni sull'uscita del filesystem ZFS nella prossima versione di Mac OS X mi hanno spinto a interessarmi, ancora una volta, a Opensolaris, aiutato anche da qualche suggerimento di tuning di Oracle dell'ultimo esame sostenuto.
Solaris ha una caratteristica unica, ovvero la ISM (Intimate Shared Memory), che permette ai processi di condividere l'area di memoria che contiene la mappatura da indirizzi di memoria virtuali a indirizzi reali. Beh Solaris ha anche ZFS! Supporta inoltre le CPU Intel a 32 e 64 bit, oltre ai RISC di casa Sun.
Bene, ora trovo un server adeguato e poi sotto con le installazioni. Mi sembrerà di ritornare ai laboratori dell'università, ma allora utilizzavo software di calcolo per astrofisica sulle Sparcstation 4 :-)

Rails, ORM e RDMBS

Lo studio di Rails prosegue, e finalmente sono arrivato ai punti focali per l'importanza ai fini di un utilizzo con un database relazionale. È presente la possibilità di personalizzare l'accesso alle tabelle, ma tutto avviene a livello di namespace, concettualmente non cambia nulla: Rails ha bisogno di uno schema in cui le tabelle sono correlate da chiavi primarie surrogate autoincrementanti, l'unica cosa che si può cambiare è il nome delle colonne. Le relazioni tra tabelle 1:1, 1:n, n:n devono essere ripetute nella definizione degli oggetti/modelli ActiveRecord, ovvero la parte ORM (Object Relational Mapping) di Rails, che permette di utilizzare gli oggetti del linguaggio (Ruby) come se fossero dei record di una tabella nel database. Questa ripetizione non va a vantaggio della semplicità e mantenibilità del codice, in quanto costringe a ripetere nel codice Ruby le affermazioni che sono già state fatte nel database.
Devo dire che l'architettura di Rails e l'eleganza di Ruby sono affascinanti: tutto è stato pensato per uno sviluppo di applicazioni web e nulla è stato lasciato al caso.
Vedremo più avanti se ci saranno altre sorprese.

18 dicembre 2006

Certificato OCP 9i

Proprio stamattina ho passato l'ultimo esame per la certificazione Oracle OCP 9i! Sono troppo contento! Ora spero che mi mandino almeno una maglietta :-)
Stavolta c'era un po' di gente: eravamo i 4, ma la cosa sorprendente è che 2 non hanno passato l'esame, uno dei quali faceva il mio stesso test (1Z0-033).
In futuro potrebbe esserci - chissà - un upgrade alla 10g oppure qualche strana "specializzazione" (tipo Linux).
Ora mi godo un po' di ferie, ma il blog rimane attivo come sempre.

14 dicembre 2006

Le basi di tutto

Seguo da molto tempo il newsgroup it.comp.software.database. Con periodicità regolare vengono postate domande la cui risposta dovrebbe essere già chiara da tempo, specie sul design del proprio modello dei dati.
Puntualmente mi ricordo di avere letto da qualche parte esempi in merito di una tesi o un'altra, ma la maggior parte delle volte dovrei fare riferimento a uno dei capitoli più straordinari che abbia mai letto: il capitolo 1 di "Effective Oracle By Design" di Thomas Kyte.
Scaricatelo, stampatelo, leggetelo, fotocopiate ingrandite le frasi migliori e appendetele al muro.

07 dicembre 2006

Ruby on Rails e Oracle

Oracle Application Express (XE) è la piattaforma di diffusione di Oracle presso il grande pubblico di sviluppatori web interessati al framework XE, una volta chiamato "HTMLDB".
Un ottimo effetto collaterale del progetto è che è possibile utilizzare Oracle XE come database solamente, senza tanti problemi di installazione né di licenze.
Un approccio abbastanza naturale potrebbe essere l'utilizzo di Ruby on Rails come linguaggio e framework per lo sviluppo di applicazioni web basate su Oracle.
Oracle stessa non si fa attendere e pubblica un interessante articolo per iniziare a sviluppare e a portare le proprie applicazioni sulla propria piattaforma. Instant client permette una rapida e facile installazione.

Personalmente mi sto studiando il manuale ufficiale di Ruby on Rails. Il framework è molto elegante e semplice da utilizzare, anche se richiede una certa confidenza con le successioni di eventi tipiche di un'applicazione web. Il problema più grande, a mio avviso, è l'utilizzo estensivo di chiavi primarie con id autoincrementanti per le relazioni fra tabelle, di facile amministrazione per il framwork, ma di difficile e illogica manutenzione per gli esseri umani. Mi riservo ulteriori giudizi quando arriverò alla fine del libro; spero di trovare il modo (semplice) di superare l'impossibilità apparente di usare chiavi primarie reali anche composite.

30 ottobre 2006

Densità di bug

In questi giorni si è parlato molto del fatto che Oracle supporterà Red Hat Linux come piattaforma enterprise. In un post di un blog su mysql dei giorni scorsi, che ha riportato la notizia, l'autore non perde l'occasione per "denigrare" i database commerciali citando un articolo di ZDnews. In questo articolo si afferma che il codice sorgente commerciale ha tra 1 e 7 bug ogni 1000 linee, mentre mysql 1 ogni 4000 linee. Non viene detto di quali bug si tratti, anche se sembra che riguardino la sicurezza.
Chissà se la sicurezza contro gli attacchi informatici è l'argomento di discussione principale tra DBA e sviluppatori :-P
O è forse l'affidabilità e l'integrità dei dati?

17 ottobre 2006

mysql enterprise

Ma secondo voi basta aggiungere la parolina magica "enterprise" per rendere un prodotto lo stato dell'arte del suo settore?

Qual è il vantaggio reale dell'architettura Pluggable Storage Engine Architecture? Per me è evidente che l'esistenza di più di una architettura implica necessariamente vantaggi e svantaggi a sceglierne una in particolare, altrimenti ce ne sarebbe una sola: la migliore.

Viene detto che i vari storage engine hanno limitazioni? Faccio un esempio che da solo dovrebbe bastare: le transazioni sono disponibili solo per il motore InnoDB, o comunque non certo per il motore MyISAM, che dovrebbe essere quello con la maggiore quantità di feature.

Se per tutti i prodotti commerciali si conoscono evidenti esempi di feature nate per esclusive esigenze di marketing, che cosa si può dire dei proclami inseriti nella pagina di presentazione?

È vero, mysql ha tradizionalmente la sua giusta collocazione in molti ambienti, potrei dire non molto impegnativi dal punto di vista strutturale. Non va dimenticato che l'aggiunta di caratteristiche che la maggior parte degli altri database avevano già per design iniziale inficia sicuramente anche le caratteristiche di velocità.

Di pubblicità ce n'è già abbastanza in TV. Per chi la guarda.

01 ottobre 2006

Berkeley DB e MVCC

L'acquisizione da parte di Oracle di Berkeley DB ha mostrato le prime conseguenze: la nuova release 4.5 di BDB ha come più evidente novità la presenza dell'MVCC, ovvero del Multi-Version Concurrency Control, tipico di Oracle.
Recentemente è apparso su it.comp.software.database un interessante thread sull'MVCC, con indicazione di un interessante documento di IBM (grazie a "The man with two watches") sul multi-versioning, che ne descrive i limiti (facendo anche pubblicità a DB2, per la verità).
Ora mi sono parzialmente liberato da pesanti impegni, quindi sto mettendo assieme un po' di materiale per discutere sull'MVCC e altro. Stay tuned!

17 settembre 2006

Logical standby database

Scusate il lungo silenzio dal primo di agosto, ma non ho avuto novità significative. Ho provato l'installazione di Enterprise Manager su una macchina singola, ma mi sono imbattuto in difficoltà troppo grandi da essere affrontate su un semplice PC. Purtroppo ci vuole soprattutto molta RAM; volendo ci si può appoggiare a VMware per tutte le necessità in fatto di numero di server, ma ciò comporta avere moltissima memoria fisica a disposizione.
Oggi segnalo un interessante articolo di Databasejournal sui logical standby database su architettura Oracle. La soluzione ricorda molto quella di mysql, basata sulla replica dei log. Con quest'ultima ho avuto molto a che fare per questioni lavorative (versione 4.0.15), ma non mi sembra un granché affidabile: capita infatti spesso che mysql non capisca ciò che lui stesso scrive nei log, e in più la terminazione di processi lato master porta ad inconsistenze lato slave.

01 agosto 2006

Oracle 10gR2 RAC su SLES10 su VMware

Ho finalmente terminato di scrivere l'articolo sull'installazione di un cluster Oracle 10gR2 RAC su SLES10, tutto sotto VMware.
Potrebbero esserci mancanze o imprecisioni, ma il lavoro richiede un tempo molto lungo, sia per le prove che per la composizione HTML. Dovrei infatti affidarmi ad un content-management tipo Joomla! come fa ad esempio Howard Rogers, da cui ho preso l'ispirazione per iniziare le mie prove di installazione.
Sono riuscito sia a installare RAC in contemporanea su due server, sia ad aggiungere una macchina al cluster RAC già attivo, arrivando a un totale di 3 macchine, tutte sullo stesso server ospite con il grande VMware, dove tra parentesi sta girando un server di test (reale) 8.1.7 :-). Devo dire che le prestazioni sono ottime con due server, mentre dopo l'aggiunta del terzo il sistema cominciava globalmente a soffrire un po', ma bisogna contare il carico totale piuttosto elevato.
Il cluster è basato su OCFS2; devo studiare la possibilità di creare un cluster con ASM, ma se ne parlerà più avanti.

Mi aspetto un bel feedback, quindi sotto coi commenti e le mail!

28 luglio 2006

Aggiunta la terza istanza RAC

Sono riuscito ad aggiungere la terza istanza al mio nuovo RAC Oracle 10gR2 sperimentale.
Spettacolare.
L'installazione è meno manuale rispetto a quello che pensassi.
Ho molte idee, screenshot e appunti da riorganizzare per l'articolo. Chissà come sarà il tempo questo finesettimana. Ci vuole tempo a scrivere!

Ho testato quindi le seguenti cose:
1) Installazione su due nodi in contemporanea
2) Aggiunta di un'istanza/macchina a un RAC esistente

system@hillrac> select instance_number, instance_name, version, status
2 from gv$instance;

INSTANCE_NUMBER INSTANCE_NAME VERSION STATUS
--------------- ---------------- ----------------- ------------
1 hillrac1 10.2.0.1.0 OPEN
2 hillrac2 10.2.0.1.0 OPEN
3 hillrac3 10.2.0.1.0 OPEN

25 luglio 2006

Oracle 10gR2 su SLES10

Ho finalmente completato l'installazione di Oracle 10gR2 Real Application Cluster sulla nuovissima SLES10 (SuSE Linux Enterprise Server 10) utilizzando VMWare Server.
Come al solito la procedura è stata veramente difficile e piena di ostacoli, dovuti soprattutto alle piccole-grandi incompatibilità del sistema con Oracle 10gR2.
Ora il cluster sta muovendo i suoi primi passi, mi manca l'aggiunta della terza istanza, ma ci vorrà ancora un po' di tempo.
Inoltre probabilmente dovrò rifare tutto per riprendere gli screenshot che non ho registrato in presa diretta; infatti ho in mente di pubblicare un lungo articolo sul tema dell'installazione. Rimanete sintonizzati!

16 luglio 2006

Ancora su Oracle e RAID

Segnalo, sempre dal sito baarf, un'interessantissimo documento, ormai un po' datato ma con un taglio scientifico, di Cary Millsap del 1996 sui VLDB (Very Large Databases), in cui viene spiegato nel dettaglio, tra l'altro, la relazione tra lo storage RAID e le esigenze di un database, nello specifico un grande database; secondo me è molto utile per prendere le scelte migliori per quanto riguarda la configurazione dei propri server.
Tutto ciò mi ha dato lo spunto per iniziare la lettura del libro che avevo ordinato tempo fa ma che non avevo mai avuto occasione di leggere (ho studiato :-)), Optimizing Oracle Performance, anche se il tuning è l'ultimo aspetto da considerare nella propria formazione.

13 luglio 2006

Oracle e storage SAME

Da un hot topic di asktom.oracle.com sullo storage, sono arrivato al sito http://www.baarf.com/, che si schiera apertamente contro ogni tipo di RAID.
Molto interessanti risultano le letture di Cary Millsap sul RAID5, e soprattutto quelle di Juan Loaiza di Oracle su SAME, per cui è disponibile anche una presentazione PPT.
SAME è l'acronimo di Stripe And Mirror Everything; nei documenti si afferma che la metodologia SAME, calcoli alla mano, sarebbe valida per qualsiasi tipo di dato Oracle (OLTP, DW, redo, ecc.), eliminando la necessità di configurare dischi diversi per scopi diversi. Molto interessante la parte dei redo-log e RAID.
I punti fondamentali sono i seguenti:

  1. Usare un volume manager per lo striping dei dati su tutti i dischi disponibili

  2. Usare dischi in mirror

  3. Usare la parte più esterna dei dischi per i dati a cui si accede più frequentemente

  4. Suddividere i dati per partizione, non per disco


Quello che posso dire io è che, avendo avuto a che fare con diversi sistemi RAID, anche nel loro caso sembra che siano stati fatti per utilizzare tutti i dischi disponibili in un solo volume per il migliore compromesso tra spazio, prestazioni e facilità di manutenzione.

10 luglio 2006

Tipi tabelle

Segnalo un articolo di Steve Callan a proposito dei tipi di tabelle in un database relazionale.
L'articolo parla di tipi di tabelle nel senso della loro funzione; ad esempio tabelle di staging, operazionali, di archivio. Ovviamente tale classificazione ha come scopo l'identificazione delle funzionalità delle tabelle all'interno di un data model.
(da Database Journal)

30 giugno 2006

Mi sono certificato!


Da oggi sono certificato Oracle DBA 9i di livello OCA, ovvero il primo livello di certificazione DBA disponibile.
Sono troppo felice!
Gli esami sono stati difficili, molto più di quanto mi aspettassi.
Ora inizia la seconda fase, ancora più difficile, che richiederà mesi di studio: la seconda parte dell'amministrazione del database (backup and recovery) e la fase finale di performance tuning, per cui avrò l'aiuto del testo di Tom Kyte :-)

29 giugno 2006

Database e filesystem

Sembra che WinFS, il nuovo filesystem dell'annunciato Windows Vista, non venga più inserito nel nuovo sistema operativo della Microsoft (da Zeus News).
A quanto dice Quentin Clark, del WinFS Team, una parte del progetto riguarda l'integrazione di dati non strutturati in un database relazionale. Ritengo che sia molto istruttivo considerare questa profonda relazione tra filesystem e database, un rapporto che a volte è più sbilanciato verso l'uno o l'altro, come ad esempio mysql.
Lo scopo finale di WinFS è quello di ridurre o annullare il lavoro di amministrazione del database nel caso di dati non strutturati, caratteristica che dovrebbe essere integrata nella prossima versione di SQLServer.
La relazione database-filesystem porta però a pensare a quanto lo storage e la gestione delle transazioni dei database vengano sviluppate secondo linee di pensiero parallele (es. LVM e datafiles, journal e redo-log, indici dei file e indici delle tabelle).

23 giugno 2006

The daily WTF (what the...)

Segnalo il divertente blog The daily WTF, che raccoglie le stranezze (a dir poco) che gli autori incontrano nell'information technology, ma non solo.
Divertentissimi i racconti del Report Misterioso, il Black-box Blackboxing, Pointless. Chi lavora su queste cose si sarà sicuramente trovato in molte situazioni simili.

15 giugno 2006

Matematica di Oracle

Segnalo un ottimo articolo di Database Joournal sul calcolo delle funzioni trascendenti in Oracle e, più in generale, per i computer.
Interessante il fatto che le funzioni ln2a e ln2b sono state scritte in PL/SQL, con una performance comparabile a quella delle funzioni native.

17 maggio 2006

SQL Server 2005

Ieri sono andato alla prima giornata della introduzione tecnica a Microsoft SQL Server 2005, dedicata all'amministrazione del sistema.
Sono rimasto piacevolmente sorpreso della sobrietà e serietà dell'evento, tutt'altro che dedicato a pubblicità e marketing; anzi, alla fine si è praticamente trattato di un corso in piena regola, molto denso di contenuti ed esempi pratici.
Un plauso a Gianluca Hotz, che ha tentato l'impossibile per condensare tutti i concetti dalle 9:30 del mattino alle 18:00 di sera con un'ora di pausa totale per caffé e cibo!
Peccato non poter presenziare anche alle altre due giornate, si preannunciavano ricche di contenuti.

Ecco i principali argomenti interessanti che ho rilevato:

  • Ricerca full-text con possibilità di scrivere plug-in personalizzati, con comandi DDL per accedere al catalogo invece di stored procedures; supporto per più lingue anche sulla stessa colonna; ft indexing di dati XML

  • Service Broker è un'estensione di T-SQL per implementare le code asincrone di messaggi, che vengono usate per le funzioni più disparate del DB.

  • Supporto SOAP per i web-service direttamente nel DB

  • Catalogo molto arricchito e tabelle di sistema inaccessibili a chiunque se non tramite le viste di sistema, non più aggiornabili :-) Il catalogo contiene inoltre una serie di viste che permettono di avere le statistiche di base prese durante il funzionamento.

  • CLR: è possibile programmare il DB anche in C#, .NET, VB, C, C++ con vari livelli di sicurezza

  • Nuovi tipi di dato serie varchar senza più limitazioni a 4000 o 8000 byte

  • Caricamento ed esportazione dei dati in XML

  • Gestione dei punti di entrata nel DB come endpoints, quindi maggiore controllo e sicurezza (tutto è disabilitato di default, a quanto pare)

  • SQL Server Management Studio è spettacolare, l'ho visto utilizzare per vari compiti, molto semplice e immediato ed è un'applicazione MS nativa.


Da approfondire con l'Express edition, gratuita, da provare insieme a SSMS.

02 maggio 2006

AJAX, RAC e PHP

Dalla newsletter OTN:

28 aprile 2006

View e order by

In un libro su Oracle che sto leggendo ora ho trovato varie versioni della questione se sia possibile creare una view con una query contenente la clausola "ORDER BY".
Nel libro (di cui vi dirò in futuro) ho trovato prima una versione che permetteva questa sintassi:

create or replace view myview as
(select * from emp)
order by ename;


Alla fine diceva che era possibile anche omettere le parentesi:

create or replace view myview as
select * from emp
order by ename;


A quanto pare nel passato ciò era impossibile, a quanto risulta da questa risposta di Tom Kyte su un newsgroup, ma oggi lo è.
Tom Kyte, nel post citato, spiega anche chiaramente perché l'ordinamento nelle view è fondamentalmente inutile; infatti nella teoria relazionale non se ne fa menzione, e tutte le relazioni vengono trattate come insiemi, in cui l'ordinamento non è rilevante, ma riguarda solo una rappresentazione dei dati.

18 aprile 2006

Oracle verso Linux e l'open-source

Su arstechnica.com è apparso un servizio secondo il quale Oracle sarebbe interessata ad entrare nel mercato delle distribuzioni Linux.
Ellison si è dichiarato interessato a Novell; la collaborazione tra Oracle e Novell recentemente si è rafforzata con la soluzione Accelerator per Oracle 10g.
Molte delle funzioni del sistema operativo sono ora incorporate in Oracle, come ad esempio la gestione dei dati su disco con ASM e 10g; Oracle avrebbe la possiblità di fornire una soluzione completa, nonch´ di confezionare su misura una distribuzione Linux e il suo kernel.

Oracle 9iR2 (9.2.0.4.0) su Dapper Drake!

Ieri, approfittando della festa E del brutto tempo, ho provato ad installare Oracle 9iR2 9.2.0.4.0 su Ubuntu 6 Dapper Drake in prerelease.
Interessante la difficoltà a far partire la JVM per colpa delle librerie libstdc++ troppo aggiornate: ho dovuto installare la prima versione disponibile da APT.
Alla fine la parte più comica è stato il segmentation fault proprio all'inizio della configurazione del DB, dopo l'ultima fase dell'installazione; meno male che avevo fatto creare come da buona usanza gli script di creazione del DB, quindi con qualche tentativo manuale à andato tutto a posto.
Ora mancano le configurazioni dei nomi di rete e del listener.

09 aprile 2006

Concatenazione in mysql

Ho recentemente avuto a che fare con una query in mysql dove le condizioni di join erano espresse nel seguente modo (con ansi-mode attivato):

[...] on
a.col = 'cost' || b.col

Nonostante b.col e a.col fossero indicizzate, l'explain della query portava l'uguaglianza a considerare TUTTE le righe della tabella b, circa 2 milioni.
Incredibilmente la versione seguente funzionava a dovere:

[...] on
a.col = concat('cost', b.col)

smentendo quindi il manuale, dove si afferma che le due versioni sono la stessa cosa (nella pagina: PIPES_AS_CONCAT).

21 marzo 2006

Kernel Linux e OCFS2

Durante la mia installazione RAC 10g su Ubuntu 5 ho incontrato diverse difficoltà con OCFS2, che sembra andare ma alla fine blocca l'installazione di Clusterware; in più segnala come utilizzati solo dalle rispettive macchine i dischi condivisi, nonostante non vengano evidenziati errori.
A quanto pare la soluzione definitiva arriva dai sorgenti del kernel Linux stesso: la nuova versione 2.6.16 incorpora OCFS2 nativamente. Una bella descrizione di OCFS si può trovare nelle pagine di LWN.
Sarà quindi meglio per me attendere Ubuntu "Dapper Drake" prima di poter proseguire nell'installazione di RAC.

20 marzo 2006

Torno a studiare

Ieri ho deciso di iniziare a studiare per la certificazione Oracle.
Era da tempo che ci pensavo, e visto che ho all'attivo un corso di DBA Oracle fundamentals I, ho deciso per il percorso 9i.
Su Amazon ho deciso per il kit della Oracle Press, OCP Oracle9i DBA Certification Boxed Set, anche se ho letto opinioni contrastanti sui newsgroup e nei commenti di Amazon.
Intanto sono arrivato a più di 1/3 di Oracle Concepts, documentazione ufficiale. Un libro assolutamente fondamentale, che consiglio a chiunque.

10 marzo 2006

Novità techblast Oracle

Dalla newsletter OTN due importanti novità:

  • Project Raptor è diventato Oracle SQL Developer, è arrivato alla versione 3 Early Adopter, liberamente scaricabile come sempre.

  • Segnalo un bell'articolo sulle connessioni persistenti di PHP con Oracle, dal PHP Cookbook

09 marzo 2006

Oracle 10gR2 RAC e Ubuntu

Ho sotto mano un server di test con 2 GB di RAM, quindi ho deciso di provare a installare Oracle 10gR2 RAC su Ubuntu Linux server usando VMware server, che a quanto pare è diventato gratuito.
Sono a metà dell'installazione, non so se arriverò ad un sistema funzionante, ma le premesse ci sono tutte.
Ubuntu mi sorprende sempre più, si dimostra un sistema operativo completissimo e aggiornatissimo.
Per i dettagli, che sono abbondanti, ci vorrà tempo.
Intanto potete leggervi gli interessantissimi articoli di Tarry Singh.

21 febbraio 2006

MySQL verso Firebird


Le recenti acquisizioni di Oracle sono state recentemente completate da Sleepycat software (leggi post a riguardo), ovvero BerkeleyDB, che fa anche parte degli storage engines di mysql.
Mysql sembra quindi come privato della piena disponibilità dei suoi motori "transazionali" di ricerca. Sotto questa luce diventa maggiormente comprensibile la recente contromossa di mysql dell'acquisto di Netfrastructure, che offre una implementazione di Firebird.
È interessante la lettura dell'articolo relativo nelle Firebird news, specialmente nella parte centrale, dove si afferma che la mossa di mysql valida il fatto che Firebird possiede un codice più maturo e ricco. Sembra quindi che l'evoluzione futura di mysql vada verso l'implementazione delle transazioni tramite l'adozione dell'architettura Firebird.

Nella foto: il logo firebird sulle Pontiac americane :-)

19 febbraio 2006

Oracle acquisisce Sleepycat

È una notizia di ieri l'acquisizione di Sleepycat software da parte di Oracle.
Il link del titolo di questo post porta all blog di arstechnica, l'articolo migliore che ho trovato fin'ora, che mi ha spinto a commentare la notizia; sulla pagina del comunicato stampa di Oracle si trovano comunque tutte le ragioni dell'azienda.
Personalmente ho trovato molto interessante DBXML, versione XML nativa di Berkeley DB. Ho cominciato a leggere la documentazione e fare qualche prova sul mio portatile con Ubuntu, e le prime impressioni sono favolose. Per lavoro maneggio milioni di documenti XML, e questo database mi apre muovi e interessantissimi orizzonti. È un db XML nativo, quindi è possibile immagazzinare direttamente i documenti e poi eseguire query con XQuery e indicizzare il contenuto.
L'acquisizione di Oracle continua, a mio giudizio, la politica di mettere le mani nei prodotti open-source, e nello stesso tempo offrire una gamma di prodotti diversificata, ma questo è puro marketing. Dal punto di vista tecnico stiamo parlando di prodotti molto diversi (es. InnoDB di mysql), che non vanno a cambiare l'ordine delle cose.

14 febbraio 2006

Cluster MySQL

Dalla versione 5 di mysql è presente la funzionalità di clustering, che a detta della pagina del prodotto prometterebbe velocità, stabilità, ecc.
Dopo gli entusiasmi iniziali dati dalla lettura del capitolo del manuale che parla di cluster mysql, mi sono imbattuto verso la fine nelle "Known limitations"; infatti il server mysql in realtà poggia le proprie capacità di clustering sul motore del database, ovvero ciò che immagazzina effettivamente i dati, separato dal server che li elabora. Per fare un paragone, siamo sempre nel caso della differenza tra le tabelle myisam e innodb: se le prime possono avere indici fulltext, le seconde no, ma hanno le transazioni.
Per il cluster c'è un altro motore di database chiamato NDB, che ha caratteristiche sue particolari e deve essere specificato in fase di creazione delle tabelle; le tabelle che andrete quindi a creare nel cluster non saranno né myisam né innodb.

  • Gli indici fulltext non sono supportati, come i tipi di dati geografici

  • Il livello di isolamento è read committed (c'è da capire come si comporti il database in un caso reale con gli accessi contemporanei - le prove fatte in passato non erano molto confortanti)

  • Tutte le righe delle tabelle sono di lunghezza fissa (!)

  • La lunghezza massima di ogni riga è di 8 KB (!)

  • Nessun supporto per foreign key


Come al solito ci si trova davanti ad un prodotto innovativo, ma con pesanti limitazioni, che possono anche annullare i vantaggi. Tipico alla mysql.
Spero di potere presto fare qualche prova.

10 febbraio 2006

Migrazioni verso Oracle

Scopro oggi che Oracle ha un centro dedicato alla migrazione da altri database. L'applicazione è il migration workbench.

Ah, aggiornate il feed RSS del blog: http://feeds.feedburner.com/RDBLand

Che cosa manca a MySQL?

Ce lo dice Monty Widenius, in un'intervista per Linux Magazine dell'11 novembre 2005:

Linux Magazine: [...] However, what desirable Oracle -- or other database -- features are still needed in MySQL?

Monty Widenius: Oracle has a lot more performance indicators than MySQL (which makes it easier to tune Oracle for different kinds of load). We want to extend the status information and tuning parameters in MySQL to allow advanced users to do similar things with MySQL.
Partition is also a nice feature that exists in other databases and we are working on having our own partition solution. (First version of this will be in 5.1)
Advanced replication with better conflict resolution and federated tables to other databases are also on the roadmap.
And of course, we are always working on making MySQL even faster for a an even broader set of cases.

Di concorrenza e transazionalità nessun accenno.

08 gennaio 2006

Indici su funzioni e constraints

Sto leggendo Effective Oracle by Design, e sono arrivato alla gestione degli schemi.
Ho trovato un interessante esempio di come esplicitare i constraint su una tabella in modo da scrivere le condizioni di integrità dei dati direttamente nella definizione della tabella e non tramite trigger o simili.
Ecco il post originale su asktom.oracle.com. In un followup nella stessa pagina viene riportata la soluzione più elegante al problema.