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.

2 commenti:

Byte64 ha detto...

Credo che Tom Kyte, come me, sia un fautore delle chiavi primarie numeriche, rendono tutto immensamente piu' facile e non impediscono di certo di usare indici univoci per le proprie legittime esigenze di logica applicativa, oltre a semplificare moltissimo la vita nella creazione di forms e reports nei wizard di Oracle Application Express.
Insomma, fattene una ragione... ;-)

Rudy ha detto...

Capisco benissimo il punto di vista di uno sviluppatore: un id va bene dappertutto. Il problema è il concetto: NON è una chiave PRIMARIA, ma un indice univoco e non nullo. La chiave primaria mantiene il significato logico del database relazione anche in assenza di tutti gli altri dati. Una serie di relazioni tra id generati dal sistema non ha alcun senso, presa da sola.
Non solo: virtualmente tutti gli indici creati sugli id numerici, necessari per il buon funzionamento del db, sono del tutto inutili in fase di ricerca dei dati, in quanto è quasi impossibile che l'utente ricerchi per un id generato dal sistema, a meno che non sia stato importato come dato vero e proprio. Pensiamo ad esempio ad un numero di protocollo, oppure a un numero di telefono: possono anche essere generati con una sequenza, ma la sequenza proviene dal mondo reale, non dal database. Spero di essermi spiegato :-)