Sunteți pe pagina 1din 32

Baze de date multimedia

~ Partea I ~

Lect. dr. Adriana Dârdală


Date Multimedia
Tipuri de date multimedia
• Imagini statice digitale,
• Secvențe audio,
• Secvențe video,
• Animații,
• Documente eterogene.
Premisele dezvoltării aplicațiilor
multimedia
• Creșterea volumului resurselor multimedia
existente în format digital;
• Creșterea gradului de utilizare a resurselor,
echipamentelor și dispozitivelor multimedia
precum: playere MP3, camere video,
dispozitive de înregistrare și de redare a
secvențelor video;
• Dezvoltarea rețelelor de comunicație.
Domenii de Utilizare
• Financiar,
• Management de documente,
• Marketing,
• Medical,
• Cercetare,
• Artă,
• Uz personal.
Probleme de rezolvat
• Pentru ca datele multimedia să poată fi
disponibile, trebuie identificate soluții
pentru:
– Stocarea datelor multimedia,
– Regăsirea datelor multimedia,
– Gestiunea datelor multimedia,
– Vizualizarea datelor multimedia,
– Livrarea datelor multimedia.
Caracteristici generale ale datelor
multimedia
• Dimensiunea fișierelor multimedia depășește limita
tipurilor de date tradiționale utilizate pentru datele
convenționale stocate în baza de date,
• Dependența de factorul timp – cadrele secvențelor
video, de exemplu, trebuie redate în ordinea
succesiunii lor, chiar dacă sunt stocate și gestionate
separat în baza de date,
• Caracteristica semantică a datelor multimedia este
mult mai complexă decât a celor convenționale și în
consecință căutarea bazată pe conținut este mult mai
dificilă.
Evoluția soluțiilor de stocare și
gestiune a datelor multimedia
• Cea mai simplă soluție= set de fișiere într-un director (director de
gestiune pentru datele multimedia) care:
– Necesită cunoașterea utilizatorilor care accesează resursele,
– Gestiunea corectă a resurselor depinde de buna credință a utilizatorilor,
– Utilizat pentru colecții mici de date multimedia,
– Se folosește pentru stocări temporare,
– Unul dintre avantajele soluției: lipsa informațiilor despre datele multimedia
(metadate). Se pot crea indecși, sub forma fișierelor individuale, pentru a
surmonta lipsa metadatelor.
• Indexarea metadatelor s-a realizat utilizând algoritmi de hashing,
arbori B+ și ulterior în baze de date. Indecșii pot fi stocați separat de
datele multimedia.
• Gestiunea indecșilor și a datelor multimedia folosind instrumente/
proceduri diferite.
• Gestiunea și stocarea datelor multimedia și a metadatelor folosind un
sistem de gestiune a bazelor de date.
Metadate multimedia
• Metadatele sunt:
– Date despre date,
– Elemente esențiale ale bazelor de date,
– Necesare pentru interpretarea altor date.
• Metadatele multimedia sunt referitoare la conținutul,
structura și semantica datelor.
• Generarea și extragerea metadatelor:
– Analiza fluxului datelor multimedia,
– Generarea implicită a metadatelor,
– Generarea semi-automată,
– Descrierea și introducerea manuală.
• Crearea și gestiunea metadatelor este un proces extrem
de complex în contextul regăsirii bazată pe conținut.
Moduri de asociere a metadatelor cu
datele multimedia
• În același container cu datele multimedia,
de exemplu în antetul fișierului
multimedia sau ca parte a definiției
obiectuale (în Oracle interMedia),
• Împachetat în datele multimedia;
exemplu Universal Preservation Format
(UPF),
• Stocat într-un tip special de dicționar al
datelor pentru metadate.
Baze de date multimedia
Stocarea datelor multimedia în baze de
date
• Utilizarea abordării relaționale:
– Se bazează pe tipurile de date SQL standard și pe cele implementate în Oracle.
– Prima opțiune presupune restricționarea bazei de date la tipurile de date standard
spceificate în SQL:1999 pentru tipurile de date LOB (large object).
– Tipurile de date LOB includ:
• BLOB (binary large object):
– utilizat pentru stocarea oricărui tip de date, inclusiv text, dar în mod tradițional sunt
folosite pentru date binare precum date multimedia sau documente de mari dimensiuni.
– Tipul BLOB nu oferă informații asupra tipului conținutului și ce metadate li se pot asocia.
• CLOB pentru date de tip caracter – poate stoca documente mari și sunt manipulate
prin Oracle Text și BFILES.
– SQL:1999 furnizează un cadru de lucru pentru crearea tipurilor obiectuale care
poate fi folosit pentru baze de date multimedia.
• Utilizarea abordării obiectual-relațională:
– Definește un tip specific pentru stocarea datelor media, aplicațiile pot manipula
tipurile multimedia în mod automat. Metadatele sunt extrase automat.
– Folosind metadatele tabelelor, orice aplicație poate determina tabele care au
tipuri multimedia stocate. Aplicațiile pot folosi ulterior metadatele stocate pentru
afișarea datelor multimedia.
Utilizarea tipurilor de date large object
• Tipul de date Large object (LOB) în Oracle10g permite
stocarea fișierelor de mari dimensiuni și permite accesul
aleator.
• În Oracle10g limita maximă pentru LOB este între 8–128
terabytes (în funcție de dimensiunea blocului bazei de
date).
• Poate fi manipulat din medii de programare:
– Java (JDBC),
– OCI,
– PL/SQL.
• Tipurile LOB de până la 4 KB pot fi stocate în Oracle10g
inline, la fel ca celelalte tipuri de date.
• Tipurile LOB sunt manipulate prin LOB locator. Locator
este o valoare binară unică ce funcționează ca un surogat
pentru obiectul binar stocat în baza de date.
Utilizarea tipului BFILE
• Tipul de dată BFILE este un tip de dată LOB extern.
• Fișierul multimedia se stochează în afara bazei de date și
sunt gestionate de sistemul de operare. Locația și
atributele fișierului sunt stocate în baza de date.
• LOB extern este accesat folosind tipul de dată SQL
numit BFILE.
• BFILE= tip de dată read-only.
• Dezavantaje:
– Nu se supune restricțiilor de securitate ale bazei de date,
controlului tranzacțiilor
– Nu pot face obiectul operațiilor de backup și recovery asupra
bazei de date.
Utilizarea abordării relaționale pentru
crearea bazei de date multimedia
• Pașii pentru crearea unei tabele care să includă și elemente multimedia:
– Crearea tabelei (tabelelor) utilizând pentru câmpurile cu date multimedia un tip
BLOB sau BFILE,
– Inițializarea câmpurilor “multimedia” pentru a putea stoca date, folosind funcția
EMPTY_BLOB().
– Crearea unui obiect de tip directory corespunzător folderului (de pe disc) care conține
fișierele multimedia.
– Crearea unei zone temporare de stocare pentru datele multimedia folosind BFILE și
inițializarea lor folosind funcția BFILENAME().
– Stocarea resursei multimedia în BFILE și transferul acesteia în câmpul de tip BLOB
al bazei de date folosind pachetul DBMS_LOB.
• Este dificil de manipulat tipurile LOB în SQL deoarece nu există funcții standard
și editoarele SQL nu pot fi conectate cu funcțiile de afișare a datelor multimedia.
• Variante pentru manipularea tipurilor LOB în Oracle:
– Folosind Oracle API, ca Oracle Objects pentru OLE și JDBC API,
– Folosind pachetul DBMS_LOB,
– Folosind Oracle Call Interface (OCI).
• DBMS_LOB este un pachet de bază pentru lucrul cu locator pentru LOB format
din rutine pentru manipularea LOBS.
Abordarea obiectual-relațională
• Folosind baze de date obiectual-relaționale se pot crea tipuri
obiectuale care sunt mai complexe decât tipurile de date simple din
SQL.
• Tipurile de date definite de utilizatori permit dezvoltatorilor de
aplicații să utilizeze date complexe.
• Această abordare oferă dezvoltatorilor maxim de felxibilitate în
proiectare deoarece pot fi exploatate atât proprietățile obiectuale cât
și cele relaționale.
• Se pot crea tipuri obiectuale cu structuri complexe, ca de exemplu
datele multimedia și metadatele se pot stoca într-un același tip de
dată.
• În Oracle un tip obiectual este echivalent cu conceptul de clasă și
poate avea 3 tipuri de componente:
– Nume – îl identifică în mod unic în schema bazei de date,
– Atribute - pot avea tipuri standard sau tipuri obiectuale,
– Metode - descriu operațiile care pot fi aplicate tipului obiectual.
Oracle interMedia
Prezentare generală
• InterMedia este o componentă care extinde
funcţionalităţile sistemului de gestiune a bazelor de date
Oracle permiţând stocarea, gestiunea şi regăsirea datelor
multimedia: a imaginilor, a secvenţelor video, a datelor
audio şi a altor tipuri media eterogene, într-o manieră
integrată cu tipuri de date tradiţionale.
• Oracle interMedia nu controlează dispozitivele de captură
multimedia şi nu are funcţii pentru redarea datelor
multimedia ci facilitează gestiunea datele multimedia
stocate în baza de date.
• InterMedia permite stocarea, gestiunea şi regăsirea datelor
multimedia provenind din diferite surse de date.
• Funcţionalitatea cheie într-o bază de date multimedia este
modalitatea de regăsire eficientă, pe bază de conținut, a
datelor multimedia continue şi non-continue.
Prezentare generală (cont.)
• În interMedia, Oracle a folosit concepte relațional-obiectuale pentru a crea un set de
tipuri obiectuale multimedia ușurând crearea aplicațiilor multimedia cu suport pentru
baze de date.
• Tipurile obiectuale au asociate metode legate de cerințele generale ale datelor
multimedia și de prelucrare a acestora.
• Avantaje:
– Această abordare permite crearea bazei de date într-o manieră generică cu schimbarea
conținutului multimedia de la o aplicație la alta.
– Tipurile de date pot fi accesate într-o manieră realțională folosind PL/SQL sau OCI sau
într-o manieră obiectuală, în C sau Java.
• Proiectanții bazei de date pot folosi interMedia pentru:
– Crearea de noi tipuri obiectuale sau tipuri obiectuale compuse folosind ca bază tipurile
interMedia,
– Crearea de plug-ins specializate pentru a utiliza noi surse de date externe pentru datele
multimedia sau noi formate de date, folosind schema ORDPLUGINS,
– Prelucrarea datelor audio și video în noi moduri.
• Utilizând tipurile de date definite în interMedia se pot accesa metode pentru:
– Manipularea datelor despre sursa datelor,
– Prelucrarea și manipularea datelor stocate pe servere web și pe alte servere,
– Realizarea de operații asupra fișierelor: deschidere, citire, scriere pentru datele audio și
video,
– Extragerea atributelor metadatelor pentru datele multimedia.
Soluții de stocare a datelor în Oracle
• Principalele facilități oferite:
interMedia
– Folosește tipurile de date BLOB sau BFILE,
– Suportă standardele multimedia existente,
– Suportă un set de bază pentru caracteristicile multimedia cele mai răspândite,
– Poate fi extins cu noi surse de date și algoritmi specifici de prelucrare a datelor multimedia,
– Oferă un set de tipuri multimedia definite de utilizator pentru a ușura crearea unei aplicații
multimedia cu suport de baze de date.
– Tipurile obiectuale includ o serie de metode de manipulare a datelor specifice fiecărui tip de dată.
• Tipurile obiectuale disponibile în interMedia sunt:
– ORDAudio pentru date audio,
– ORDImage pentru date de tip imagine,
– ORDImageSignature pentru semnăturile imaginilor – folosit la căutarea bazată pe conținut,
– ORDVideo pentru date de tip video,
– ORDDoc pentru date eterogene.
• Toate tipurile aparțin schemei ORDSYS și stochează informații despre sursa datelor într-un
tip obiectual- relațional.
• Toate tipurile obiectuale definite pentru datele multimedia au același model de stocare a
datelor, ORDSource.
• Datele multimedia pot fi stocate în BLOB, sub controlul SGBD sau în afara bazei de date ca
BFILE. În cazul BFILE, în baza de date se stochează un pointer iar fișierul multimedia se
stochează ca BFILE , pe un server media extern sau ca pe un server web și accesat prin
intermediul URL-ului, folosind protocolul HTTP.
ORDSource
• Atribute:
– LocalData – de tip BLOB – localizează datele multimedia stocate,
– SrcType – de tip Varchar2(4000) – tipul sursei de date pentru surse externe (FILE,
HTTP),
– SrcLocation – de tip Varchar2(4000) – locația datelor: Directory pentru FILE, URL
pentru HTTP,
– SrcName – tip Varchar2(4000) – numele obiectului sau fișierului,
– UpdateTime- tip Date – data+ora ultimei modificari,
– Local – tip NUMBER – datele sunt locale memorate ca BLOB (=1 sau NULL) sau extern
(=0).
• Metodele tipului ORDSource nu pot fi apelate direct ci prin intermediul tipurilor
dedicate datelor multimedia.
• Toate tipurile obiectuale definite în interMedia oferă metode pentru următoarele
operații:
– Setează sursa datelor: locală sau externă,
– Modifică data/ora la care un obiect a fost actualizat,
– Setează informații despre tipul sursei externe, locație și numele datei,
– Transferă date în sau din baza de date,
– Obține informații despre conținutul datelor precum lungime, locație,
– Accesează sursa datelor.
Metadate folosite în interMedia
Tipul multimedia Denumire metadată Scop, comentariu
Audio, video Description Descrie semantica resursei

Audio, video, MIME type Folosit de browser-ele Web pentru a


imagine, afișa/rula datele multimedia.
document
Audio, video, Comments Scop semantic, utilizat la regăsirea
document bazată pe caracteristica text
Audio Dimensiunea - influențează calitatea Dimensiunea - influențează calitatea
transferului la distanță transferului la distanță

Imagine Dimensiunea - influențează calitatea Dimensiunea - influențează calitatea


transferului la distanță transferului la distanță
Video Dimensiunea - influențează calitatea Dimensiunea - influențează calitatea
transferului la distanță transferului la distanță

Document Source, format, content length Dimensiunea - influențează calitatea


transferului la distanță
Utilizarea interMedia
pentru manipularea

Imaginilor
Metadate
• Pentru o serie de formate de fișiere de tip imagine,
Oracle interMedia poate extrage și gestiona
metadate, ca de exemplu:
– Lungimea,
– Lățimea,
– Dimensiunea fișierului,
– Formatul fișierului,
– Formatul de compresie.
• Pentru un număr limitat de formate de fișiere
interMedia poate extrage un set extins de metadate
reprezentate în documente XML. Aceste
documente XML pot fi stocate într-o bază de date,
indexate, actualizate, interogate și utilizate de alte
aplicații prin mecanismele standard ale Oracle.
Formate pentru stocarea metadatelor
pentru imagini
• Formatul metadata al imaginii – protocoalele și tehnicile standard
utilizate pentru stocarea metadatelor imaginilor în interiorul
fișierului de tip imagine.
• Formatele pentru metadatele imaginii suportate de interMedia
sunt:
– EXIF - standardul pentru stocarea metadatelor imaginilor pentru aparate
foto digitale. interMedia poate include metadate extrase pentru formatele de
fișiere: TIFF, JPEG și JPEG2000.
– IPTC-IIM (International Press Telecommunications Council—Information
Interchange Model) este folosit pentru informații legate de înregistrarea,
publicarea și difuzarea știrilor. Pot fi stocate în formate de fișiere TIFF,
JPEG și JPEG2000.
– XMP(eXtensible Metadata Platform) este format dezvoltat de Adobe pentru
crearea, prelucrarea și schimbul metadatelor între diferite aplicații.
Folosește tehnologia Resource Description Framework (RDF) pentru
modelarea datelor.
– interMedia permite extragerea metadatelor XMP pentru formatele de fișiere
GIF, TIFF, JPEG și JPEG2000.
– interMedia permite scrierea datelor XMP în formatele de fișiere GIF, TIFF,
JPEG si JPEG2000.
Metadate pentru imagini
• După extragerea metadatelor din fișierul binar ce conține imaginea, urmează
reprezentarea metadatelor într-un format ușor de stocat, indexat, interogat,
actualizat și prezentat.
• interMedia returnează metadatele imaginii în documente XML. Aceste
documente se bazează pe scheme XML înregistrate de interMedia cu baza de
date, schemele XML folosite de metodele metadatelor tipului obiectual
ORDImage.
• Schemele XML sunt folosite de metodele metadatelor tipul obiectual ORDImage.
• Schemele pot fi examinate prin interogarea dicționarului
ALL_XML_SCHEMAS.
• Schemele XML disponibile sunt:
– pentru metadate DICOM,
– pentru metadate EXIF,
– pentru metadate IPTC-IIM,
– pentru atributele ORDImage,
– pentru metadate XMP.
Atributele tipului ORDImage
Nume atribut Tipul datei Scop
Source ORDSource Sursa datei stocate
Mime type Varchar2(4000) Tipul mime al imaginii (ex.
image/tiff....)
Height Integer Înălțimea imaginii (in pixeli)
Width Integer Lățimea imaginii (în pixeli)

contentLength Integer Dimensiunea fișierului (în bytes)

fileFormat Varchar2(4000) Tipul fișierului (bmp, tiff....)

contentFormat Varchar2(4000) Tipul imaginii (alb-negru,...)

CompressionFor Varchar2(4000) Formatul de compresie al


mat imaginii (JPEG....)
Utilizarea tipului ORDImage
• Pentru exemplificarea operaţiilor de crearea a unei tabele cu atribute
de tip imagine, de import a imaginilor inserare și exportul imaginilor
din baza de date s-a utilizat câte o procedură PL/SQL.
• Pentru realizarea interfaţei cu utilizatorul, apelarea procedurilor
stocate şi pentru afişarea imaginilor am folosit o aplicaţie .NET C# .
• S-a creat un obiect de tip DIRECTORY pentru administrarea
accesului la fişierele de tip imagine. Obiectul DIRECTORY
stabileşte un pseudonim pentru un director al sistemului de fişiere al
severului bazei de date unde se află fişierul care trebuie accesat.
– CREATE DIRECTORY dirlucru AS 'c:\mydir';
– GRANT READ ON DIRECTORY dirlucru TO PUBLIC WITH GRANT
OPTION;
• Crearea tabelei numită imags cu structura:
– id NUMBER – reprezentând id-ul imaginii,
– descriere VARCHAR2(255) ce conţine o scurtă descriere a conţinutului imaginii,
– img de tip ORDSYS.ORDImage pentru obiectul de tip imagine,
– img_semn de tip ORDSYS.ORDImageSignature pentru semnătura imaginii
CREATE TABLE imags
(id NUMBER,
descriere VARCHAR2(255),
img ORDSYS.ORDImage,
img_semn ORDSYS.ORDImageSignature);img_semn ORDSYS.ORDImageSignature);
Utilizarea tipului ORDImage (cont.)
• Procedura care inserează un tuplu în tabelă are ca parametrii: vid – id-ul imaginii, vdescriere –descrierea
imaginii, nfis- numele fişierului de tip imagine:
CREATE PROCEDURE psINSERARE (vid IN NUMBER, vdescriere IN VARCHAR2, nfis IN VARCHAR2)
IS
BEGIN
DECLARE
img_format VARCHAR2(32) := NULL;
img_mime_type VARCHAR2(80);
ctx RAW(64):=NULL;
obj ORDSYS.ORDImage;
BEGIN
INSERT INTO imags VALUES (vid,vdescriere, ORDSYS.ORDImage.init(),
ORDSYS.ORDImageSignature.init());
Select img into obj from imags where id=vid for update;
obj.importfrom(ctx, 'file', 'DIRLUCRU', nfis);
Update imags set img=obj where id=vid;
commit;
END;
END;
• Procedura psREADIMG este folosită de aplicația C# pentru afișarea conţinutului imaginii preluat din
tabelă.
CREATE PROCEDURE psREADIMG(vid IN number, flux OUT BLOB)
IS
BEGIN
declare
obj ORDSYS.ORDImage;
BEGIN
Select img into obj from imags where id = vid;
flux:=obj.GETCONTENT();
END;
End;
Utilizarea tipului ORDImage (cont.)
• Procedura stocată pentru exportul unei imagini din baza de date este:
CREATE PROCEDURE psEXPORT_IMG (vid in number, nfis IN varchar2) as
obj ordsys.ordimage;
ctx raw(64) := null;
begin
select img into obj from imags where id = vid;
obj.export(ctx, 'FILE', 'DIRLUCRU', nfis);
end;
• Metodele C# care apelează procedurile stocate definite sunt:
private void Inserare_Click(object sender, System.EventArgs e)
{
con.Open();
ofd.ShowDialog();
OracleCommand cmd=new OracleCommand("SELECT count(*) FROM imags",con);
object dr=cmd.ExecuteScalar();
nid=Convert.ToInt32(dr)+1;
MessageBox.Show(nid.ToString());
OracleCommand cmdins=new OracleCommand(“psinserare",con);
cmdins.CommandType = CommandType.StoredProcedure;
cmdins.Parameters.Add("vid",OracleDbType.Int32);
cmdins.Parameters.Add("vdescriere",OracleDbType.Varchar2,255);
cmdins.Parameters.Add("nfis",OracleDbType.Varchar2,24);
cmdins.Parameters[0].Value =nid;
cmdins.Parameters[1].Value =descr.Text;
char [] c=new char[1];
c[0]='\\';
string [] nf=new string[100];
nf=ofd.FileName.Split(c);
cmdins.Parameters[2].Value =nf[nf.Length-1];
cmdins.ExecuteNonQuery();
con.Close();
}
Utilizarea tipului ORDImage (cont.)
• Afișarea imaginii în aplicația client:
private void CitireImagine()
{ Conexiune_Click(this,null);
con.Open();
OracleCommand cmdflux=new OracleCommand("psreadimg",con);
cmdflux.CommandType=CommandType.StoredProcedure;
cmdflux.Parameters.Add("vid",OracleDbType.Int32);object d=new object();
cmdflux.Parameters.Add("flux",OracleDbType.Blob,0,d,ParameterDirection.Output);
cmdflux.Parameters[0].Direction=ParameterDirection.Input;
cmdflux.Parameters[1].Direction=ParameterDirection.Output;
cmdflux.Parameters[2].Direction=ParameterDirection.Output;
cmdflux.Parameters[3].Direction=ParameterDirection.Output;
cmdflux.Parameters[0].Value=Convert.ToInt32(tb_ic.Text);
try {
d =cmdflux.ExecuteScalar(); }
catch (OracleException ex)
{ MessageBox.Show(ex.Message); }
Oracle.DataAccess.Types.OracleBlob
t=(Oracle.DataAccess.Types.OracleBlob)cmdflux.Parameters[1].Value;
pb.Image=Image.FromStream((System.IO.Stream)t);
con.Close();
}
Utilizarea tipului ORDImage (cont.)
• Exportul unei imagini din baza de date:
private void Export_Click(object sender, System.EventArgs e)
{ Conexiune_Click(this,null);
con.Open();
OracleCommand cmd=new OracleCommand("psexport_img",con);
//apelul procedurii stocate pentru inserarea unei inregistrari in baza de date
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("vid",OracleDbType.Int32);
cmd.Parameters.Add("nfis",OracleDbType.Varchar2,255);
cmd.Parameters[0].Direction=ParameterDirection.Input;
cmd.Parameters[1].Direction=ParameterDirection.Input;
cmd.Parameters[0].Value=Convert.ToInt32(tb_ic.Text);
cmd.Parameters[1].Value=descr.Text;
object o=new object();
try { cmd.ExecuteNonQuery();}
catch(Oracle.DataAccess.Client.OracleException ex)
{ MessageBox.Show(ex.Message);}
con.Close();
}

S-ar putea să vă placă și