1 / 13

Tecniche di programmazione

Tecniche di programmazione. Linguaggi per basi di dati. Un altro contributo all’efficacia: disponibilità di vari linguaggi e interfacce linguaggi testuali interattivi ( SQL ) comandi (SQL) immersi in un linguaggio ospite (Pascal, Java, C ...)

step
Télécharger la présentation

Tecniche di programmazione

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tecniche di programmazione

  2. Linguaggi per basi di dati • Un altro contributo all’efficacia: disponibilità di vari linguaggi e interfacce • linguaggi testuali interattivi (SQL) • comandi (SQL) immersi in un linguaggio ospite (Pascal, Java, C ...) • comandi (SQL) immersi in un linguaggio ad hoc, con anche altre funzionalità (p.es. per grafici o stampe strutturate) • con interfacce amichevoli (senza linguaggio testuale)

  3. Aule Nome Edificio Piano DS1 OMI Terra N3 OMI Terra Corsi G Pincherle Primo Docente Aula Corso Rossi DS3 Basi di dati Neri N3 Sistemi Bruni N3 Reti Bruni G Controlli SQL, un linguaggio interattivo • "Trovare i corsi tenuti in aule a piano terra"

  4. Aula Piano Corso N3 Terra Sistemi N3 Terra Reti SQL, un linguaggio interattivo SELECT Corso, Aula, Piano FROM Aule, Corsi WHERE Nome = Aula AND Piano = "Terra"

  5. TECNICHE DI PROGRAMMAZIONE • Tecniche di programmazione di tipo EMBEDDED • Statico • Dinamico • Tecniche di programmazione in Client-Server e multi tier via API • API proprietarie (dbLib,… • API standard (ODBC, JDBC, OLEdb, DAO, ADO, ADO.NET,…)

  6. Embedded SQL: statico Fonte Codice Linguaggio + SQL Precompiler Codice sorgente ‘Stripped’ Data Base Requeste Module Bind Compiler DBMS Library Ooject Code Application Plan Linker EXE App Plan Data Base

  7. Emberdded SQl: statico e dinamico SQL STATICO SQL DINAMICO SQL Statement Precomp. Parse Prepare Validazione Ottimizzazione Bind Execute Imm Genera app. plan Esecuzione Forma binaria Esecuzione Esecuzione

  8. SQL immerso in linguaggio ospite write('nome della citta''?'); readln(citta); EXEC SQL DECLARE P CURSOR FOR SELECT NOME, REDDITO FROM PERSONE WHERE CITTA = :citta ; EXEC SQL OPEN P ; EXEC SQL FETCH P INTO :nome, :reddito ; while SQLCODE = 0 do begin write('nome della persona:', nome, 'aumento?'); readln(aumento); EXEC SQL UPDATE PERSONE SET REDDITO = REDDITO + :aumento WHERE CURRENT OF P EXEC SQL FETCH P INTO :nome, :reddito end; EXEC SQL CLOSE CURSOR P

  9. SQL in linguaggio ad hoc (Oracle PL/SQL) declare Stip number; begin select Stipendio into Stip from Impiegato where Matricola = '575488' for update of Stipendio; if Stip > 30 then update Impiegato set Stipendio = Stipendio * 1.1 where Matricola = '575488'; else update Impiegato set Stipendio = Stipendio * 1.15 where Matricola = '575488'; end if; commit; exception when no_data_found then insert into Errori values('Matricola inesistente',sysdate); end;

  10. Interazione non testuale (Access)

  11. Suggerimenti programmazione su motore • Uso dei COST OPTIMIZER per il motore: risolve il problema dell’indicizzazione. • Usare lo SHOW QUERY EXECUTION PLAN che indica come sono eseguite fisicamente le query. • Nelle select pesano molto le clausole IN e OR e le LIKE (tipo ‘%AB’) piuttosto che (‘AB%’). • Pesano poco le clausole = e BETWEEN. • Non inserire dialogo con l’utente in processi transazionali MAI. Se serve almeno con timer. • Usare uno snapshot e poi far partire il transazionale oppure utilizzare data set disconnessi • Attenzione all’ordine delle INSERT (deadlock).

  12. Deadlock • Processo A • Begin transaction • Insert tblA … (ok) • Select • Insert tblB …(wait) • Commit • Processo B • Begin transaction • Insert tblB … (ok) • Select • Insert tblA … (wait) • Commit

  13. Tempi indicativi di risposta applicazioni • Per il caso di in line transactions: 5 sec max (medio 2 sec) • Per il caso di uso normale 30 sec max (medio 10 sec) • Per il caso di record scan: 1-2 min max.

More Related