Ricerca in FOLBlog

[SdSM] Orrore!!!

 Scritto da alle 06:27 del 15/01/2012  Aggiungi commenti
Gen 152012
 
closeQuesto articolo è stato pubblicato 5 anni 7 mesi 7 giorni giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi. Questo sito non è responsabile per eventuali errori causati da questo problema.

urlo-di-munch-van-gogh

Taanto tempo fa’ (ma mica cosi’ tanto), $noivendiamolibridisQuola si era fatto fare un bel sito con webnegozio incorporato per… vendere i libri di sQuola (che pensavate?).

Il branco di rimbamba che avevano scritto il sito aveva l’irritante tendenza a rilasciare le versioni per ‘testing’, correggere gli errori trovati e poi ri-aggiungere gli stessi errori in fase di produzione o (peggio ancora) lasciare la configurazione di produzione come quella di test, con il risultato che poi andare a capire quali "ordini" erano di produzione e quali di test era un bel casino.

Dopo un paio di casini, $$noivendiamolibridisQuola decide di abbandonare il precedente branco di rinco e far sviluppare un sito completamente nuovo da $altrobrancodirinco.

Gia’ le cose sono apparse un pelo strane dato che il primo branco ha telefonato domandando a noi (aka: me) il perche’ ed il percome della cosa (quajo’, quelli dovrebbero essere clienti TUOI, se tu non lo sai il perche’) Ma la cosa ha assunto colorazioni tragiche quando abbiamo iniziato a ricevere mail da parte di $altrobranco che domandavano a noi (aka: sempre a me) di interpretare o chiarificare la struttura dati del database dell’applicazione precedente. Hemmm… io ne so niente di questa cosa.

Poi c’e’ stato il tormentone della conversione dati dalla struttura precedente a quella nuova. Ora, il database (oracle) risiede sullo stesso server. Abbiamo due schemi, basterebbe fare un bel programmino che legge dallo schema ‘vecchio’ ed importa i dati nello schema ‘nuovo’ no? Nooooo!!! Troppo complicato, troppo lungo e soprattutto troppo difficile.

Quello che il $nuovobranco vuole invece e’… un bell’export del database in formato XML! Cosi’ poi lo possono importare. Ma c’e’ un problema: qualunque cosa questi imbecilli stiano usando per leggere l’XML non riesce a gestire un file superiore ad una certa dimensione, il che significa che l’esportazione deve essere fatta a tranches di massimo 5000 records alla volta. Il che significa che io devo produrre qualche cosa come 180 files che poi loro si elaborano.

Tempo per produrre i files XML: 2 ore. Tempo per comprimere e copiare tutta questa roba sul loro foxxuto server FTP: 1 ora e mezza. Tempo (loro) per processare questa merdaccia e scoprire che hanno un baco nella procedura di importazione ed occorre rifare tutto d’accapo: 2 giorni! Numero di volte la procedura deve essere ripetuta: cosi’ tante che mi gira la testa solo a pensarci.

Poi c’e’ stata la scoperta che questo coso usa un qualche ‘servizio’ su un altro server che noi non controlliamo e che se tale ‘servizio’ per qualsiasi motivo non funziona (tipo se qualcuno decide di spegnerlo perche’ pare inutile) si incarta tutto ma senza alcun messaggio di errore riferito a quel famoso servizio che non sta funzionando. Con il risultato che si bestemmia svariate ore a cercare un problema sul server sbagliato.

Comunquesia. Dopo ennemila ore spese a madonnare su questo arnese con giri e rigiri di files di configurazione, impostazioni di memoria minima, permessi di scrittura e robe cosi’. Finalmente giunge il giorno di andare in produzione.

E scopriamo anche che, il sistema nuovo raddoppia l’uso del database senza (apparentemente) aggiungere nulla alle funzionalita’ del sito. La cosa raggiunge un livello di isteria quando pare che il sistema sia cosi’ lento che si perde letteralmente gli ordini o non processa correttamente i pagamenti.

Il $brancodirintronati decide che "potrebbe esserci qualche problema nell’uso del database" (ma va?). Per verificare inviano una caterva e mezza di query per ‘analizzare i dati’ (?? adesso li analizzi i dati? che cappero hai fatto nelle settimane prima del rilascio?).

Okkey, prendo la prima query e per poco non mi strozzo con il caffe’.

select * from tabella where id in (select id from tabella2 where id in (select id from tabella3 where descrizione=’codice’))

Heeee… ‘spetta un momento neh….

select count(id) from tabella3 where descrizione=’codice’
1

select id from tabella3 where descrizione=’codice’
1

Ok…

select id from tabella2 where id=1;
1

select count(*) from tabella where id=1;
10

Quindi una query con DUE subqueries per estrarre 10 records?
La seconda query e’ ancora meglio:

select * from tabella where id in (select id from tabella where codice=1)

Ok, e’ il momento di chiedere spiegazioni. Mando una maillina del tipo:

"Stavo guardando queste query e mi sembra che ci sia qualche cosa che non va. La query X e’ …. ma non e’ la stessa cosa che dire query scritta usando la testa e non il culo? Stessa cosa si applica a…"

Poco dopo mi arriva la risposta:

"si’ probabilmente la query ha lo stesso significato, io mi sono limitato a prendere le stesse query che sono nell’applicazione"

Ah… E poi ci si domanda come mai l’uso del database si e’ raddoppiato!

"ed in ogni caso il query optimizer probabilmente la riscriverebbe"…

Heeee… ‘spetta un momento. Tu assumi che un pezzo di software del quale tu non sai niente (nemmeno se esiste) sia in grado di prendere una query scritta con il didietro e riscriverla come si converrebbe. A parte che le possibilita’ che un pezzo di software faccia, senza alcuna richiesta diretta, la cosa piu’ logica sono molto poche, ma perche’ non utilizzare fin da subito le query giuste? Io forse il perche’ lo so, ma per esserne sicuro dovrei fare i raggi al cranio del CL che ha scritto questa ca$$o di applicazione mi sa.

Davide

legenda personaggi

Articoli simili:

  • Facebook
  • Twitter
  • Delicious
  • StumbleUpon
  • Wikio
  • Reddit
  • Technorati
  • Segnalo
  • Live
  • Add to favorites
  • Email
  • RSS

 Lascia un commento

Puoi usare questi tag e attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(richiesto)

(richiesto)

Pinterest
EmailEmail
PrintPrint
%d blogger hanno fatto clic su Mi Piace per questo: