10 lucruri pe care nu stiati ca le puteti face cu Oracle database

10 lucruri pe care nu stiati ca le puteti face cu Oracle database

In domeniul de enterprise software development putem sa observam un trend in ceea ce priveste trecerea de la baze de date la nivel de aplicatii. Sunt multi factori care influenteaza acest demers dar principalul element, din punctul meu de vedere, este portabilitatea.
11 Mar 2016 4836

In cadrul acestui articol vom trece in revista cateva elemente utile ale bazelor de date Oracle pe care le putem folosi in rezolvarea anumitor sarcini.
  • XML in baza de date. De multe ori pentru a produce un raport xml al unei structuri complexe din tabele relationale, dezvoltatorii prefera Java sau xPath. De fapt, XML a aparut in Oracle database incepand cu versiunea 8i si in 11g este parte integrala din baza de date si conforma cu standardele W3C. Poti sa dezvolti si sa stochezi date tip XMLType in tabele, sa le convertesti din text in DOM si vice versa utilizand sintaxa SQL precum si xPath, sa generezi XML-ul unei structuri nested complexe din tabele normale si sa parsezi documentele XML in format relational. O schema XSD poate sa fie stocata in baza de date si utilizata pentru validare. Poti sa creezi un XML DB repository in baza de date si sa transferi fisierele XML prin protocoale cunoscute precum FTP, HTTP sau WebDAV.
  • Aplicatii web PL/SQL. Prin gateway-ul Oracle PL/SQL este usor sa invoci o procedura stocata a bazei de date dintr-un browser web si sa transmiti parametrii via URL. Gateway-ul PL/SQL este bazata pe un plugin mod_plsql care transforma URL-ul intr-o apelare catre un program stocat cu parametri si returneaza un rezultat, in mod tipic intr-o pagina HTML. Cu XML DB embedded http listener putem sa generam o pagina web din cadrul unei proceduri PL/SQL in 5 minute cu cateva configuratii minime descrise aici.
  • Comunicare prin HTTP. Avand in vedere ca Oracle database utilizeaza doar limbajul PL/SQL este destul de usor sa trimitem si sa primi date prin protocolul HTTP. Pachetul UTL_HTTP oferit de Oracle iti permite sa creezi interfete complexe care sa ceara multe date intre baza de date si, spre exemplu, servicii web externe. Primul pas ar fi sa apelam functia BEGIN_REQUEST prin care sa setam o sesiune HTTP. Sunt foarte multe atribute care pot fi setate inclusiv header, autentificare, cookies suport etc. Procedura WRITE_TEXT iti permite sa impingi textul in HTTP request body, si READ_TEXT citeste datele raspunsului HTTP. Exemplele pot fi gasite in cartea lui Steven Feuerstein: Oracle PL/SQL programming.
  • Securefiles si Database file system. Este cunoscut faptul ca bazele de date Oracle pot fi folosite pentru a stoca date in coloane LOB. Dar in 11g o noua arhitectura pentru LOB a fost introdusa, Securefiles. Abordarea prin care stocam si operam cu bucati de date LOB a fost refacuta, astfel ca obiectele mari din coloanele LOB sunt manipulate intern – asemanator cu fisierele. Pe baza arhitecturii Securefile este acum posibil sa montam un file system pe o platforma Linux care o sa stocheze fisierele in coloana Securefile LOB din baza de date. Toate operatiunile cu fisiere din acel mount point (make directory, create, copy sau remove) sunt convertite in apelari PL/SQL API si manipuleaza datele in campurile LOB aferente. Aceasta trasatura este foarte utila daca avem nevoie sa accesam fisiere application log stocate pe un file system cu ajutorul SQL sau PL/SQL din baza de date.
  • Tabele externe. Ce facem daca avem niste fisiere text pe un server database pe care trebuie sa le citim dar nu avem acces la server? Ar putea fi trace files, export/import log files, sau fisiere de configurare sau optimizare. In acest caz tabelele externe ar putea sa rezolve aceste provocari. Pur si simplu creezi un obiect DIRECTORY in baza de date ce trimite catre un folder OS si apoi sa creezi un table extern care mapeaza unul sau mai multe campuri in fisierul OS. Acum poti sa citesti fisierul folosind SELECT * FROM din your_external_table statement. Folosind comanda ALTER TABLE poti sa schimbi numele fisierului sau al directorului oricand daca ai nevoie de alt fisier. Mai mult decat atat, incepand cu versiunea 11g putem sa rulam o directia preprocesor si sa utilizam un script shell – spre exemplu sa dezarhivam un fisier din arhiva. Puteti sa gasiti niste exemple aici.
  • Java stored procedures. Uneori PL/SQL nu este indeajuns pentru tot ceea ce avem nevoie. Daca ai nevoie de cresterea vitezei de procesare sau ai nevoie de anumite features din Java poti sa creezi clase Java direct in baza de date. Cu ajutorul comenzii CREATE OR REPLACE AND COMPILE JAVA SOURCE poti sa compilezi source text intr-o clasa java valida pe care sa o stochezi in dictionarul bazei de date. Apoi creezi PL/SQL wrapper procedure, mapezi parametrii daca este nevoie si apelezi procedura la fel cum ai face cu orice alt program PL/SQL. JVM-ul din baza de date va interpreta codul Java. Poti sa creezi o clasa Java in baza de date in care doresti care astfel ar deschide o conexiune catre baza de date sursa, ar selecta informatia din tabele necesare si ar returna rowsetul dorit.
  • Multitable insert. Sa presupunem ca un sistem upstream populeaza tabelul din baza de date, si interfata ta trebuie sa citeasca acest tabel si sa insereze date in destinatii multiple. Oare vom selecta source table de acelasi numar de ori ca inserturile pe care trebuie sa le facem? Multitable insert este disponibil in SQL si extrem de util in solutii warehousing pentru optimizarea acestor tipuri de sarcini. Citeste source row o singura data si insereaza oricate destinatii ai nevoie – asa functioneaza pe scurt.
  • ROLLUP, CUBE sau GROUPING SETS. Toata lumea a auzit de aceste aspecte ale SQL insa multi se intreaba in ce situatii le-ar folosi. Un exemplu simplu. Sa presupunem ca avem o schema cu tabele, o parte din ele fiind partitionate. Esti curios in legatura cu dimensiunea fiecarui tabel si cat de mult spatiu ocupa schema. Acest lucru ar returna raspunsul pentru ambele intrebari in acelasi SQL.

oracle_1.png

  • Functii analitice. Probabil ca LIST_AGG este cea mai asteptata functie analitca introdusa in 11g SQL. Iti permite sa concatenezi valorile stringurilor intr-un singur rand. Dar sunt si alte caracteristici interesante. Sa presupunem ca vrei sa afli care este salariul maxim in randul angajatilor care primesc cel mai mic comision spre exemplu.

oracle_2.png

  • Profil SQL. Suntem cu totii familiari cu situatiile cand un query care functiona perfect in productie de mult timp isi schimba peste noapte comportamentul si are performanta scazuta? Plan stability este aria unde Oracle introduce in mod regulat noi caracteristici si solutii. SQL Plan Baselines a aparut in 11g pentru a inlocui stored outlines. Dar merita sa aruncam o privire asupra SQL Profiles. Apeland functia nedocumentata dbms_sqltune.import_sql_profile este posibil sa aplicam sugestii unui query fara a-i schimba textul. Astfel ca atunci cand observam o schimbare de plan neasteptata, putem sa extragem planul anterior bun din shared poll si sa folosim pentru query-ul nostru cu ajutorul SQL Profile.


Vrei sa inveti sa lucrezi cu Oracle databases? Descopera cursurile noastre.


Alexander Pavlovskiy
Consultant in Oracle Database

Share the knowledge

Mai ai intrebari?
Contacteaza-ne.
Thank you!
The form has been submitted successfully.