Składowanie, przetwarzanie i wyszukiwanie danych multimedialnych w Oracle 11g Marek Wojciechowski

Wielkość: px
Rozpocząć pokaz od strony:

Download "Składowanie, przetwarzanie i wyszukiwanie danych multimedialnych w Oracle 11g Marek Wojciechowski"

Transkrypt

1 Składowanie, przetwarzanie i wyszukiwanie danych multimedialnych w Oracle 11g Marek Wojciechowski Politechnika Poznańska, PLOUG Marek.Wojciechowski@cs.put.poznan.pl

2 Plan prezentacji Wprowadzenie do Oracle Multimedia Typy danych Oracle Multimedia Oracle Multimedia DICOM Typy danych SQL/MM Still Image Wyszukiwanie obrazów w oparciu o zawartość (Content-based Image Retrieval) Oracle Multimedia Java API Podsumowanie 2

3 Wprowadzenie do Oracle Multimedia

4 Czym jest Oracle Multimedia? Oracle Multimedia to cecha (ang. feature) serwera bazy danych Oracle umożliwiająca składowanie, odczyt i przetwarzanie multimediów w sposób zintegrowany z pozostałymi informacjami zawartymi w bazie danych do wersji 10.2 występująca pod nazwą intermedia dostępna w Standard Edition Oracle Multimedia nie jest gotową aplikacją użytkownika, ale stanowi bazę dla tworzenia różnych aplikacji oferuje typową funkcjonalność w zakresie obsługi multimediów funkcjonalność specyficzną dla danego zastosowania pozostawia aplikacji Oracle Multimedia wykorzystuje mechanizmy obiektoworelacyjne funkcjonalność dostępna głównie poprzez typy obiektowe 4

5 Możliwości Oracle Multimedia Możliwość zapewnienia przetwarzania transakcyjnego i ochrony obiektów medialnych jak dla danych tradycyjnych Obsługa danych z różnych źródeł (BLOB, BFILE, URL) Zapytania o metadane dla obsługiwanych typów multimediów Dla obrazów: zapytania o zawartość w oparciu o własności wizualne transformacje: skalowanie, konwersja formatu, wycinanie 2 interfejsy: specyficzny dla Oracle i zgodny z SQL/MM Still Image Obsługa typowych formatów danych (z możliwością rozszerzeń) Automatyczna ekstrakcja i pielęgnacja metadanych z danych multimedialnych w popularnych formatach 5

6 Nowe możliwości i zmiany w 11g Rozbudowane wsparcie dla obrazów medycznych DICOM w tym dedykowany typ danych ORDDicom Lepsza skalowalność i wydajność limit na rozmiar BLOB między 8TB a 128TB poprawa wydajności generacji miniatur obrazów wsparcie dla SecureFiles nowej generacji LOB Zdeprecjonowanie typu danych ORDImageSignature do reprezentacji właściwości wizualnych obrazu wykorzystywanych do wyszukiwania w oparciu o zawartość odzwierciedlenie trendu obserwowanego również na gruncie DB2 pozostaje CBIR poprzez typy SQL/MM 6

7 Architektura Oracle Multimedia Oparta o mechanizmy obiektowo-relacyjne oferuje również tzw. interfejs relacyjny Funkcjonalność wbudowana w serwer bazy danych Analiza (parsing) obiektów multimedialnych i przetwarzanie obrazów w bazie danych realizowane jest w środowisku wirtualnej maszyny Java wbudowanej w serwer Oracle wsparcie dla Java Advanced Imaging (JAI) Funkcjonalność dostępna z poziomu wielu języków najlepiej wspierane PL/SQL i Java (przez Multimedia Java classes) Brak wbudowanych mechanizmów transmisji strumieniowej współpraca z Real Networks Server i Microsoft Streaming Server zawartość na serwerze lub w bazie danych 7

8 Typy danych Oracle Multimedia ORDAudio dla danych audio ORDDoc - dla heterogenicznych danych multimedialnych ORDImage - dla obrazów dla obrazów medycznych specjalny typ ORDDicom ORDVideo dla danych wideo ORDSource typ pomocniczy reprezentujące dane źródłowe Typy SQL/MM Still Image (alternatywa dla ORDImage) 8

9 Źródła danych multimedialnych Oracle Multimedia umożliwia składowanie, odczyt i zarządzanie multimediami dostępnymi jako: Obiekty BLOB duże obiekty binarne składowane lokalnie w bazie danych (w Oracle 10g/11g max rozmiar BLOB od 8 do 128TB zależnie od konfiguracji bazy danych) Obiekty BFILE duże binarne obiekty plikowe składowane lokalnie w systemie plików serwera (poza bazą danych) Adresy URL lokalizujące obiekty multimedialne udostępniane na serwerach WWW (ias, Microsoft IIS, Apache,...) Obiekty udostępniane strumieniowo przez specjalizowane serwery Źródło danych jest ukryte w obiektach medialnych typów ORDAudio, ORDDoc, ORDImage, ORDVideo w atrybucie typu ORDSource 9

10 Uwagi o składowaniu danych Standardowo dostępne jest składowanie w postaci: BLOB, BFILE, URL Obsługa z poziomu Oracle Multimedia danych składowanych na specjalistycznych serwerach wymaga rozszerzenia Multimedia o odpowiednie interfejsy Tylko składowanie jako BLOB umożliwia w pełni transakcyjną kontrolę nad obiektami multimedialnymi Przy składowaniu jako BFILE lub URL, transakcyjnemu przetwarzaniu podlega jedynie wskaźnik do lokalizacji obiektu a nie dane obiektu Składowanie w postaci BFILE lub URL umożliwia łatwą migrację istniejących kolekcji multimediów do Multimedia Dane składowane poza bazą danych mogą być w każdej chwili zaimportowane do bazy 10

11 Sposoby ładowania danych multimedialnych do bazy danych PL/SQL proceduralne rozszerzenie SQL umożliwia zamknięcie funkcjonalności ładowania danych w formie procedur składowanych umożliwia wywoływanie metod w trakcie procesu ładowania danych binarnych ekstrakcja metadanych generacja miniatur obrazów SQL*Loader narzędzie dedykowane do ładowania danych do bazy danych ze źródeł zewnętrznych sterowanie przebiegiem operacji poprzez pliki konfiguracyjne 11

12 Rozpoznawane formaty danych Oracle Multimedia umożliwia składowanie danych w dowolnym formacie Dla formatów rozpoznawanych przez Oracle Multimedia możliwa jest ekstrakcja metadanych Oracle Multimedia oferuje możliwość rozszerzenia zbioru rozpoznawanych formatów Rozpoznawane formaty obrazów BMP, CALS, FPIX, GIF, JFIF, PCX, PICT, PNG, RPIX, RAS, TGA, TIFF, WBMP,... Rozpoznawane formaty audio AIFF, AIFF-C, AU, WAV, MPEG Audio, Real Audio Rozpoznawane formaty wideo MOV, AVI, Real Video, MPEG1, MPEG2, MPEG4, 3GP Dla powyższych formatów rozpoznawane są różne metody kompresji 12

13 Rozpoznawane metadane dla obrazów, danych audio i wideo Informacje o składowaniu (typ źródła, lokalizacja,...) Data ostatniej modyfikacji Format danych i typ MIME Metadane o zawartości w formie XML reżyser, producent, itp. Charakterystyki obrazów: wysokość i szerokość, rozmiar, metoda kompresji Charakterystyki audio: typ kodowania, metoda kompresji, liczba kanałów, częstotliwość próbkowania, rozmiar próbki, czas trwania Charakterystyki wideo: wymiary i rozdzielczość klatki, liczba klatek na sek., liczba klatek, liczba kolorów, metoda kompresji, częstotliwość strumienia bitów, czas trwania 13

14 Przykłady możliwych zastosowań Oracle Multimedia Internetowe sklepy z muzyką i filmami wideo Internetowe galerie obrazów i fotografii Bazy danych zapisów rozmów telefonicznych, przemówień, prezentacji Biblioteki kursów w postaci filmów wideo Nauczanie na odległość Katalogi i archiwa dokumentów Serwisy informacji finansowych Repozytoria zdjęć medycznych 14

15 Typy danych Oracle Multimedia

16 Typy danych Oracle Multimedia Cztery podstawowe typy obiektowe Oracle Multimedia: ORDAudio dla danych audio ORDDoc - dla heterogenicznych danych multimedialnych ORDImage - dla obrazów ORDVideo dla danych wideo Typy ORDAudio, ORDDoc, ORDImage, ORDVideo umożliwiają: składowanie danych multimedialnych ekstrakcję i przetwarzanie metadanych eksport/import danych między bazą danych a systemem plików podstawowe przetwarzanie danych (tylko ORDImage) Pozostałe typy danych Oracle Multimedia: ORDSource reprezentuje lokalizację danych multimedialnych, wykorzystywany w ORDAudio, ORDDoc, ORDImage i ORDVideo ORDDicom typ dedykowany dla obrazów medycznych (od 11g) Typy danych SQL/MM Still Image (alternatywa dla ORDImage) 16

17 Typ danych ORDAudio Atrybuty: podstawowe: description, source, format, mimetype, comments charakterystyki audio: encoding, numberofchannels, samplingrate, samplesize, compressiontype, audioduration Metody: konstruktory: init(), init(...) metody setter/getter dla atrybutów, np. getmimetype/setmimetype, getencoding/setencoding,... związane ze źródłem danych, np. import/export, setsource, getcontent, getbfile,... związane z ekstrakcją metadanych: setproperties, checkproperties związane z przetwarzaniem danych: processaudiocommand 17

18 Typ danych ORDDoc Atrybuty: source, format, mimetype, contentlength, comments Metody: konstruktory: init(), init(...) metody setter/getter dla atrybutów, np. getmimetype/setmimetype,... związane ze źródłem danych, np. import/export, setsource, getcontent, getbfile,... związane z ekstrakcją metadanych: setproperties 18

19 Typ danych ORDImage Atrybuty: podstawowe: source, fileformat, mimetype, contentlength charakterystyki obrazów: height, width, contentformat, compressionformat Metody: konstruktory: init(), init(...) metody setter/getter dla atrybutów, np. getmimetype/setmimetype, getheight, getwidth,... związane ze źródłem danych, np. import/export, setsource, getcontent, getbfile,... związane z ekstrakcją metadanych: setproperties, checkproperties, getmetadata związane z przetwarzaniem i kopiowaniem danych: copy, process, processcopy 19

20 Metadane w obrazach Oracle Multimedia obsługuje następujące formaty metadanych zagnieżdżonych w obrazie: EXIF (Exchangeable Image File Format) ekstrakcja IPTC-IIM (International Press Telecommunications Council- Information Interchange Model) ekstrakcja XMP (Extensible Metadata Platform) ekstrakcja i zapis Reprezentacja metadanych poza obrazem metadane jako wartość XMLType każdemu standardowi metadanych odpowiada odrębny schemat XML Schema w bazie danych możliwość składowania w odrębnej kolumnie tabeli możliwość indeksowania i przeszukiwania 20

21 Ekstrakcja metadanych z obrazu Przykład (1/8) Utworzenie tabeli z kolumną przygotowaną do składowania metadanych EXIF CREATE TABLE holiday_photos (id NUMBER PRIMARY KEY, metaexif XMLTYPE, photo ORDSYS.ORDIMAGE) XMLType COLUMN metaexif XMLSCHEMA " ELEMENT "exifmetadata"; 21

22 Ekstrakcja metadanych z obrazu Przykład (2/8) Załadowanie obrazka z systemu plików do bazy danych i ekstrakcja podstawowych metadanych do atrybutów DECLARE temp ordsys.ordimage; ctx RAW(64) := NULL; BEGIN INSERT INTO holiday_photos (id, photo) VALUES (42, ordsys.ordimage.init('file','mediafiles','szklarka.jpg')) RETURNING photo INTO temp; temp.import(ctx); -- import do BLOB temp.setproperties(); -- ekstrakcja metadanych do atrybutów UPDATE holiday_photos SET photo=temp WHERE id=42; COMMIT; END; / 22

23 Ekstrakcja metadanych z obrazu Przykład (3/8) Odczyt metadanych zapamiętanych w atrybutach ORDImage SELECT p.photo.getwidth() WIDTH, p.photo.getheight() HEIGHT FROM holiday_photos p WHERE id = 42; WIDTH HEIGHT

24 Ekstrakcja metadanych z obrazu Przykład (4/8) Sprawdzenie dostępnych formatów (przez ekstrakcję ALL) DECLARE image ORDSYS.ORDImage; metad XMLSequenceType; BEGIN SELECT photo INTO image FROM holiday_photos WHERE id=42; namespace: namespace: metad := image.getmetadata('all'); -- print the namespace of each metadata document FOR i in 1..metad.count LOOP DBMS_OUTPUT.PUT_LINE('namespace: ' metad(i).getnamespace() ); END LOOP; EXCEPTION WHEN ORDSYS.ORDImageExceptions.NULL_LOCAL_DATA THEN DBMS_OUTPUT.PUT_LINE('source local data is null'); WHEN ORDSYS.ORDImageExceptions.NULL_SOURCE THEN DBMS_OUTPUT.PUT_LINE('source is null'); END; / 24

25 Ekstrakcja metadanych z obrazu Przykład (5/8) Odczyt metadanych EXIF i umieszczenie ich w kolumnie tabeli DECLARE image ORDSYS.ORDImage; metad XMLSequenceType; exif XMLType; BEGIN SELECT photo INTO image FROM holiday_photos WHERE id = 42; metad := image.getmetadata('exif'); exif := metad(1); UPDATE holiday_photos SET metaexif = exif WHERE id = 42; END; / 25

26 Ekstrakcja metadanych z obrazu Przykład (6/8) Odczytane metadane EXIF <exifmetadata xmlns=" xsi:schemalocation=" xmlns:xsi=" <TiffIfd> <Make tag="271">canon</make> <Model tag="272">canon PowerShot G6</Model> <Orientation tag="274">right top</orientation> <XResolution tag="282">180</xresolution> <YResolution tag="283">180</yresolution> <ResolutionUnit tag="296">inches</resolutionunit> <DateTime tag="306"> t16:28: </datetime> <YCbCrPositioning tag="531">centered</ycbcrpositioning> </TiffIfd>... 26

27 Ekstrakcja metadanych z obrazu Przykład (7/8) Odczytane metadane EXIF c.d.... <ApertureValue tag="37378">4,96875</aperturevalue> <ExposureBiasValue tag="37380">0</exposurebiasvalue> <MaxApertureValue tag="37381">2,65625</maxaperturevalue> <MeteringMode tag="37383">pattern</meteringmode> <Flash tag="37385"> <Fired>No</Fired> <Return>No strobe return function</return> <Mode>Compulsory suppression</mode> <Function>Yes</Function> <RedEyeReduction>No</RedEyeReduction> </Flash> <FocalLength tag="37386">17,59375</focallength> <FlashpixVersion tag="40960">0100</flashpixversion> <ColorSpace tag="40961">srgb</colorspace>... </exifmetadata> 27

28 Ekstrakcja metadanych z obrazu Przykład (8/8) Możliwość odczytu podstawowych metadanych w formie XML image.getmetadata('ordimage'); <ordimageattributes xmlns=" xmlns:xsi= xsi:schemalocation=" <height>2304</height> <width>3072</width> <contentlength> </contentlength> <fileformat>jfif</fileformat> <contentformat>24bitrgb</contentformat> <compressionformat>jpeg</compressionformat> <mimetype>image/jpeg</mimetype> </ordimageattributes> 28

29 Typ danych ORDVideo Atrybuty: podstawowe: description, source, format, mimetype, comments charakterystyki wideo: height, width, frameresolution, framerate, numberofframes, compressiontype, numberofcolors, bitrate, videoduration Metody: konstruktory: init(), init(...) metody setter/getter dla atrybutów, np. getmimetype/setmimetype, getframesize/setframesize,... związane ze źródłem danych, np. import/export, setsource, getcontent, getbfile,... związane z ekstrakcją metadanych: setproperties, checkproperties związane z przetwarzaniem danych: processvideocommand 29

30 Typ danych ORDSource Wykorzystywany przez typy ORDAudio, ORDDoc, ORDImage, ORDVideo do reprezentacji lokalizacji danych (atrybut source) Atrybuty: localdata typu BLOB srctype file, HTTP lub <nazwa> dla źródeł użytkownika srclocation dla file : katalog (DIRECTORY), HTTP : URL katalogu srcname dla file : nazwa pliku, dla HTTP : nazwa obiektu updatetime local Metody typu ORDSource: metody setter/getter, export/import, open/close,... metody typu ORDSource nie powinny być bezpośrednio wywoływane z poziomu aplikacji aplikacje powinny korzystać z odpowiadających im metod dostępnych w typach ORDAudio, ORDDoc, ORDImage i ORDVideo 30

31 SecureFiles w Oracle Multimedia 11g Nowa architektura składowania dużych obiektów Interfejs kompatybilny wstecz Najlepsze rozwiązanie dla nieustrukturalizowanej zawartości Oferuje funkcjonalność charakterystyczną dla zaawansowanych systemów plików wysoka wydajność deduplikacja kompresja szyfrowanie zaawansowane mechanizmy utrzymywania logu 31

32 SecureFiles w Oracle Multimedia 11g Przykład Utworzenie tabeli ze wskazaniem architektury składowania zawartości binarnej CREATE TABLE holiday_photos (id NUMBER PRIMARY KEY, metaexif XMLTYPE, photo ORDSYS.ORDIMAGE) LOB(photo.source.localdata) STORE AS SECUREFILE XMLType COLUMN metaexif XMLSCHEMA " ELEMENT "exifmetadata"; 32

33 Adnotacje w formacie XML Typy ORDAudio, ORDDoc i ORDVideo umożliwiają w ramach operacji ekstrakcji metadanych o parametrach wstawienie do atrybutu komentarza adnotacji w XML atrybut comments typu CLOB Aby wygenerować adnotację metodą setproperties należy jako drugi argument przekazać TRUE Adnotacja zawiera: informacje o parametrach fizycznych (pokrywające się z atrybutami typów ORDAudio, ORDDoc, ORDVideo) informacje o zawartości merytorycznej umieszczone w obiekcie medialnym przez aplikację, która go utworzyła 33

34 Adnotacje Przykład (1/2) Adnotacja wygenerowana dla utworu muzycznego w formacie mp3 (MPEG/Audio):... 34

35 Adnotacje Przykład (2/2)... 35

36 Korzystanie z Multimedia Przykłady (1/5) Utworzenie tabeli obiektów do składowania dźwięków CREATE TABLE dzwieki OF ORDSYS.ORDAudio; CREATE DIRECTORY mediafiles AS 'c:\oracle\mediafiles'; GRANT READ ON DIRECTORY mediafiles TO public; Wstawienie do tabeli dźwięku składowanego jako BFILE INSERT INTO dzwieki VALUES (ORDSYS.ORDAudio.init('file', 'MEDIAFILES', 'tada.wav')); 36

37 Korzystanie z Multimedia Przykłady (2/5) Ekstrakcja metadanych o parametrach dźwięku DECLARE au ORDSYS.ORDAudio; ctx RAW(4000) := NULL; BEGIN SELECT value(d) INTO au FROM dzwieki d WHERE d.getsourcename() = 'tada.wav' FOR UPDATE; au.setproperties(ctx,false); -- bez adnotacji w XML encoding: MS_PCM numberofchannels: 2 samplingrate: samplesize: 16 DBMS_OUTPUT.put_line('encoding: ' au.getencoding()); DBMS_OUTPUT.put_line('numberOfChannels: ' TO_CHAR(au.getNumberOfChannels())); DBMS_OUTPUT.put_line('samplingRate: ' TO_CHAR(au.getSamplingRate())); DBMS_OUTPUT.put_line('sampleSize: ' TO_CHAR(au.getSampleSize())); UPDATE dzwieki d SET value(d) = au WHERE d.getsourcename() = 'audio3.wav'; END; 37

38 Korzystanie z Multimedia Przykłady (3/5) Utworzenie tabeli do składowania dźwięków w postaci obiektów kolumnowych CREATE TABLE mp3s (id number, wykonawca varchar2(100), tytul varchar2(100), probka ORDSYS.ORDAudio); Wstawienie piosenki jako BFILE i następnie import do BLOB DECLARE temp ORDSYS.ORDAudio := null; ctx RAW(4000) := NULL; row_id ROWID; BEGIN INSERT INTO mp3s VALUES (1, null, null, ORDSYS.ORDAudio.init('file','MEDIAFILES', 'Cambodia.mp3')) RETURNING ROWID, probka INTO row_id, temp; temp.import(ctx); UPDATE mp3s SET probka = temp WHERE rowid = row_id; END; / 38

39 Korzystanie z Multimedia Przykłady (4/5) Ekstrakcja metadanych o parametrach dźwięku i adnotacji w XML Wydobycie z adnotacji tytułu i wykonawcy utworu DECLARE temp ORDSYS.ORDAudio := null; ctx RAW(4000) := NULL; opis XMLType := NULL; wyk VARCHAR2(100) := '<nieznany>'; tyt VARCHAR2(100) := '<nieznany>'; row_id ROWID; BEGIN SELECT ROWID, probka INTO row_id, temp FROM mp3s WHERE id = 1 FOR UPDATE; temp.setproperties(ctx,true); -- odczyt metadanych i adnotacji opis := XMLType.createXML(temp.comments); IF opis.existsnode('//audio_artist/text()') = 1 THEN wyk := opis.extract('//audio_artist/text()').getstringval(); END IF; IF opis.existsnode('//media_title/text()') = 1 THEN tyt := opis.extract('//media_title/text()').getstringval(); END IF; UPDATE mp3s SET wykonawca = wyk, tytul = tyt, probka = temp WHERE rowid = row_id; END; / 39

40 Korzystanie z Multimedia Przykłady (5/5) SELECT id, wykonawca, tytul FROM mp3s; ID WYKONAWCA TYTUL <![CDATA[Kim Wilde]]> <![CDATA[Cambodia]]> 40

41 Relacyjny interfejs Oracle Multimedia Umożliwia korzystanie z funkcji Multimedia w starych relacyjnych aplikacjach bez konieczności migracji do modelu obiektowo-relacyjnego: ekstrakcja metadanych przetwarzanie i kopiowanie obrazów operacje importu i eksportu danych Na interfejs relacyjny składają się statyczne metody typów: ORDAudio, ORDDoc, ORDImage i ORDVideo Metody statyczne operują na danych BLOB i BFILE ORDSYS.ORDAudio.getProperties(ctx,data,attrib,format) 41

42 Możliwości rozszerzeń Multimedia Obsługa innych zewnętrznych źródeł danych poprzez implementację i instalację odpowiedniego pakietu w schemacie ORDPLUGINS Obsługa dodatkowych formatów danych dla typów ORDAudio, ORDDoc i ORDVideo poprzez implementację i instalację odpowiedniego pakietu w schemacie ORDPLUGINS dla obrazów istnieje możliwość jawnego podania metadanych wariantem metody setproperties (!) Przetwarzanie danych audio i wideo tylko dla formatów użytkownika w ramach implementacji pakietu obsługującego dany format 42

43 Oracle Multimedia DICOM

44 Digital Imaging and Communications in Medicine (DICOM) Obrazowanie Cyfrowe i Wymiana Obrazów w Medycynie Norma opracowana przez ACR/NEMA (American College of Radiology / National Electrical Manufacturers Association) dla potrzeb ujednolicenia wymiany i interpretacji danych medycznych związanych lub reprezentujących obrazy diagnostyczne w medycynie (wg Wikipedii) Zastosowania w radiologii, kardiologii, neurologii, chirurgii, itd. Cechą DICOM jest powiązanie obrazu z atrybutami go opisującymi (standard zorientowany obiektowo) Oficjalna wersja standardu od 1992 roku to DICOM 3.0 (ciągle uaktualniana) 44

45 DICOM Podstawowe pojęcia Information object zawartość obrazu medycznego Service class difinicja czynności dokonywanej na zawartości medycznej SOP (service-object pair) class kombinacja Information object i Service class podstawowa jednostka w DICOM opisuje funkcjonalność DICOM posiada identyfikator (UID) przykład: składowanie obrazów tomografii komputerowej SOP instance konkretna instancja SOP klas np. konkretne zdjęcie konkretnego pacjenta 45

46 DICOM przykładowy obraz Widok w zewnętrznym narzędziu (DicomWorks) 46

47 Oracle Multimedia DICOM Umożliwia składowanie, wyszukiwanie i przetwarzanie w bazie danych Oracle multimedialnych danych medycznych w standardzie DICOM Potencjalne możliwości: baza dla tworzenia archiwów zdjęć medycznych zarządzanych i chronionych przed niepowołanym dostępem przez SZBD Oracle umożliwienie centralnego składowania obrazów dla zastosowań w telemedycynie baza dla systemów klasy EHR (Electronic Healthcare Record) 47

48 DICOM w Oracle 10g / 11g Oracle 10gR2 (10.2) pierwsza wersja oferująca obsługę DICOM obrazy DICOM obsługiwane poprzez typ obiektowy ORDImage wsparcie ograniczone do rozpoznawania najważniejszych atrybutów Oracle 11g (11.1) dedykowany typ obiektowy ORDDicom pakiet ORD_DICOM (interfejs relacyjny o funkcjonalności ORDDicom) pełna obsługa metadanych testowanie zgodności ze standardem przetwarzanie obrazów (kopiowanie, konwersja formatu) anonimizacja danych DICOM tworzenie obiektów DICOM poprzez wiązanie zdjęć z metadanymi Java i PL/SQL API 48

49 Architektura Oracle Multimedia DICOM Oracle Database JVM DICOM Repository DICOM Parser DICOM XML Encoder DICOM Conformance Validator Image Processor (JAI) <XML> 49

50 ORDDicom - atrybuty metadata - metadane w formacie XML (XMLType) zawierające atrybuty DICOM source - oryginalna zawartość obrazu DICOM składowana jako BLOB lub plik zewnętrzny (typ ORDDataSource) Często wykorzystywane atrybuty DICOM, np. sop_class_uid, sop_instance_uid Atrybuty do wewnętrznego użytku Oracle 50

51 ORDDicom przykładowe metody setproperties() ekstrakcja metadanych możliwa również przy tworzeniu obiektu lub imporcie zawartości do bazy danych makeanonymous() usunięcie danych personalnych pacjenta np. w celu udostępnienia zdjęć do badań naukowych processcopy() kopiowanie i/lub przetwarzanie obrazu konstruktory tworzące pusty obiekt lub obiekt z zawartością w oparciu o BLOB, BFILE lub ORDImage 51

52 ORDDicom Przykład (1/11) Utworzenie obiektu directory reprezentującego katalog systemu plików zawierający obrazy CREATE DIRECTORY dicomfiles AS 'c:\oracle\dicom'; Utworzenie tabeli z kolumną typu ORDDicom CREATE TABLE medical_images (id INTEGER PRIMARY KEY, patient_name VARCHAR2(30), dicom ordsys.orddicom, thumbnail ordsys.ordimage); 52

53 ORDDicom Przykład (2/11) Załadowanie repozytorium modelu danych z bazy danych do struktur w pamięci (konieczne na początku każdej sesji) EXEC ordsys.ord_dicom.setdatamodel() 53

54 ORDDicom Przykład (3/11) Import obrazu DICOM z pliku do bazy danych DECLARE temp ordsys.orddicom; BEGIN INSERT INTO medical_images (id, dicom, thumbnail) VALUES (179, ordsys.orddicom('file', 'DICOMFILES', '179.dcm', 0), ordsys.ordimage.init()) RETURNING dicom INTO temp; temp.import(1); -- 1: wywolaj setproperties() UPDATE medical_images SET dicom=temp WHERE id=179; COMMIT; END; / 54

55 ORDDicom Przykład (4/11) Odczyt jednego z podstawowych atrybutów DICOM SELECT id, t.dicom.getsopinstanceuid() AS SOP_Instance_UID FROM medical_images t; SELECT id, t.dicom.sop_instance_uid AS SOP_Instance_UID FROM medical_images t; ID SOP_INSTANCE_UID Odczyt rozmiaru obrazu SELECT id, t.dicom.getcontentlength() AS Length FROM medical_images t; ID LENGTH

56 ORDDicom Przykład (5/11) Odczyt metadanych w formacie XML SELECT t.dicom.metadata FROM medical_images t WHERE id=179; <?xml version="1.0"?> <DICOM_OBJECT xmlns=" >... <CODE_STRING tag=" " definer="dicom" name="image Type" offset="352" length="22"> ORIGINAL </CODE_STRING>... <UNIQUE_ID tag=" " definer="dicom" name="sop Instance UID" offset="416" length="54"> </unique_id>... <PERSON_NAME tag=" " definer="dicom" name="patient&apos;s Name" offset="710" length="22"> <NAME type="unibyte"><family>cancio 2HR A </FAMILY> </NAME> <VALUE>CANCIO 2HR A </VALUE> </PERSON_NAME>... </DICOM_OBJECT> 56

57 ORDDicom Przykład (6/11) Wyodrębnienie informacji z metadanych w formacie XML SELECT id, extractvalue(t.dicom.metadata, '/DICOM_OBJECT/*[@name="Patient''s Name"]/VALUE', 'xmlns= as PATIENT_NAME, extractvalue(t.dicom.metadata, '/DICOM_OBJECT/*[@name="Patient ID"]', 'xmlns= as PATIENT_ID FROM medical_images t; ID PATIENT_NAME PATIENT_ID CANCIO 2HR A ISRSCT610b 57

58 ORDDicom Przykład (7/11) Wyodrębnienie informacji z metadanych w formacie XML i umieszczenie ich w kolumnie tabeli UPDATE medical_images t SET patient_name = extractvalue(t.dicom.metadata, '/DICOM_OBJECT/*[@name="Patient''s Name"]/VALUE', 'xmlns= SELECT id, patient_name FROM medical_images; ID PATIENT_NAME CANCIO 2HR A

59 ORDDicom Przykład (8/11) Utworzenie miniatur obrazów DECLARE dcmsrc ordsys.orddicom; imgdst ordsys.ordimage; BEGIN SELECT dicom, thumbnail INTO dcmsrc, imgdst FROM medical_images WHERE id = 179 FOR UPDATE; dcmsrc.processcopy('fileformat=jfif fixedscale=75 100', imgdst); UPDATE medical_images SET thumbnail = imgdst WHERE id = 179; COMMIT; END; / 59

60 ORDDicom Przykład (9/11) Anonimizacja DECLARE dcmsrc ordsys.orddicom; anondst ordsys.orddicom; BEGIN INSERT INTO anon_images(id, dicom) VALUES (179, ordsys.orddicom()) RETURNING dicom INTO anondst; SELECT dicom INTO dcmsrc FROM medical_images WHERE id = 179; dcmsrc.makeanonymous('1.2.3', anondst); UPDATE anon_images SET dicom = anondst WHERE id = 179; COMMIT; END; / 60

61 ORDDicom Przykład (10/11) Anonimizacja - weryfikacja SELECT id, extractvalue(t.dicom.metadata, '/DICOM_OBJECT/*[@name="Patient''s Name"]/VALUE', 'xmlns= AS PATIENT_NAME, extractvalue(t.dicom.metadata, '/DICOM_OBJECT/*[@name="Patient ID"]', 'xmlns= AS PATIENT_ID FROM anon_images t; ID PATIENT_NAME PATIENT_ID anonymous anonymous 61

62 ORDDicom Przykład (11/11) Eksport do pliku DECLARE dcmsrc ordsys.orddicom; BEGIN SELECT dicom INTO dcmsrc FROM anon_images WHERE id = 179; dcmsrc.export('file', 'DICOMFILES', 'anon.dcm'); END; 62

63 SQL/MM Still Image w Oracle Multimedia

64 SQL/MM Still Image w Oracle SQL/MM: SQL Multimedia and Application Packages standard ISO oparty o typy obiektowe SQL99 standard obejmuje wiele części SQL/MM Part 5: Still Image dotyczy obrazów Obecnie brak specyfikacji dla danych audio i wideo Specyfikacja SQL/MM Part 5: Still Image pierwsza edycja: ISO/IEC :2001 druga edycja: ISO/IEC :2003 Oracle Multimedia 10g/11g a standard SQL/MM implementacja pierwszej edycji standardu część nowych cech przewidzianej w drugiej edycji dostępna w Oracle 10g/11g jako ówczesne rozszerzenia standardu 64

65 Zakres SQL/MM Still Image Dotyczy składowania, przetwarzania i wyszukiwania obrazów (np. fotografii) Implementacje standardu mogą wspierać wiele różnych formatów: JPEG, GIF, TIFF,... Zakłada się, że obraz jest dwuwymiarową tablicą pikseli (obraz bitmapowy) Przetwarzanie obejmuje m.in. skalowanie i inne transformacje, wycinanie Wsparcie dla zapytań dotyczących zawartości: Średni kolor Histogramy kolorów (udział kolorów w obrazie) Lokalizacja kolorów Miara podobieństwa obrazów Specyfikacja obecnie zaimplementowana jedynie w Oracle10g/11g 65

66 Typy SQL/MM Still Image SI_StillImage reprezentuje obraz SI_Color reprezentuje kolor SI_AverageColor reprezentuje średni kolor obrazu SI_ColorHistogram reprezentuje histogram kolorów SI_PositionalColor reprezentuje lokalizację kolorów obrazu SI_Texture reprezentuje teksturę obrazu SI_FeatureList reprezentuje listę właściwości wizualnych obrazu 66

67 Typ SI_StillImage: Atrybuty Standardowe: SI_content (typu BLOB), SI_contentLength, SI_reference (typu DATALINK do reprezentacji zewnętrznych źródeł poprzez URL) SI_format, SI_height, SI_width Rozszerzenia/niezgodności w Oracle: mimetype_ora, contentformat_ora, compressionformat_ora + atrybuty do zapamiętania i automatycznej pielęgnacji właściwości wizualnych (retainfeatures_si, averagecolorspec_ora, colorslist_ora, frequencieslist_ora, colorpositions_ora, textureencoding_ora) zmiana nazw atrybutów standardowych (np. SI_content -> content_si) content_si typu ORDSource Obejmuje BLOB dla składowania w bazie i linki do lokalizacji zewnętrznych Oracle10g/11g zgodny z pierwszą wersją SQL/MM SI, typ DATALINK dostępny od drugiej wersji standardu 67

68 Typ SI_StillImage: Metody Konstruktory: SI_StillImage(BLOB), SI_StillImage(BLOB,...) Metody do odczytu atrybutów: np. SI_Height, SI_Width, SI_Format,... Związane z przetwarzaniem obrazów: SI_SetContent, SI_ChangeFormat SI_Thumbnail, SI_Scale, SI_Resize, SI_Rotate Związane z pielęgnacją właściwości wizualnych (Oracle10g/11g): SI_InitFeatures Wyznacza i zapamiętuje wartości własności wizualnych Wartości te będą automatycznie pielęgnowane SI_ClearFeatures 68

69 Metody SI_StillImage - Przykład 69

70 SQL/MM Still Image: Typy danych reprezentujące własności sygnałowe obrazu 70

71 Typ danych SI_Color Typ pomocniczy, wykorzystywany przez SI_AverageColor, SI_ColorHistogram i SI_PositionalColor Atrybuty: redvalue, greenvalue, bluevalue (wartości od 0 do 255) Metody: brak specyficznych konstruktorów dostępny jedynie domyślny systemowy (nieweryfikujący poprawności danych!) inicjalizacja koloru: SI_RGBColor (redvalue, greenvalue, bluevalue) 71

72 Typ danych SI_AverageColor Atrybuty: SI_AverageColorSpec (typu SI_Color) Metody: konstruktory: SI_AverageColor(SI_StillImage), SI_AverageColor(SI_Color) SI_Score(SI_StillImage) wyznaczająca "odległość" obrazu od wzorcowego średniego koloru (wartość od 0.0 do 100.0) Algorytm wyznaczania średniego koloru dla obrazu: obraz jest dzielony na n próbek komponenty koloru R, G i B z poszczególnych próbek są niezależnie od siebie sumowane i dzielone przez liczbę próbek R, G, B SI_ widthsi_ height SI_ widthsi_ height SI_ widthsi_ height R( i, j) G( i, j) B( i, j) i 1 j 1 i 1 j 1 i 1 j 1,, SI _ width* SI _ height SI _ width* SI _ height SI _ width* SI _ height 72

73 Typ danych SI_ColorHistogram Atrybuty: SI_ColorsList (typu SI_Color ARRAY), SI_FrequenciesList (typu DOUBLE ARRAY) Tablice mają taką samą liczbę elementów (maksymalny rozmiar SI_MaxHistogramLength zależny od implementacji) Wartości częstotliwości ograniczone zakresem od 0 do 100 W Oracle10g/11g zamiast ARRAY - "pomocnicze" typy colorslist i colorfrequencieslist, zdefiniowane jako kolekcje VARRAY Metody: konstruktory: SI_ColorHistogram(SI_StillImage), SI_ColorHistogram(SI_Color, DOUBLE PRECISION), SI_ColorHistogram(ARRAY, ARRAY) SI_Append(SI_Color, DOUBLE PRECISION) dodająca kolor i jego częstość do histogramu SI_Score(SI_StillImage) wyznaczająca "odległość" obrazu od wzorcowego histogramu kolorów (wartość od 0.0 do 100.0) 73

74 SI_ColorHistogram algorytm generacji histogramu Realizowana poprzez wywołanie konstruktora SI_ColorHistogram(SI_StillImage) Zasada działania algorytmu: przestrzeń kolorów dzielona jest na pewną liczbę zakresów Zależną od implementacji, ograniczoną przez SI_MaxHistogramLength (wartość tego i innych parametrów w Oracle można sprawdzić w perspektywie SI_INFORMTN_SCHEMA.SI_VALUES) każdy obszar przestrzeni kolorów obejmuje pewien zbiór kolorów i jest reprezentowany przez jeden kolor C i dla każdego obszaru kolorów określana jest jego częstotliwość F i w ramach obrazu poprzez iterację po wszystkich pikselach każdy piksel zwiększa wartość F i o 1 dla tego zakresu i do którego należy jego kolor wartości F i są normalizowane, aby zawierały się w zakresie od 0 do

75 Typ danych SI_PositionalColor Atrybuty: SI_ColorPositions (typu SI_Color ARRAY) Metody: Maksymalny rozmiar tablicy: SI_NumberSections W Oracle10g/11g zamiast ARRAY - "pomocniczy" typ colorpositions konstruktor: SI_PositionalColor(SI_StillImage) SI_Score(SI_StillImage) wyznaczająca odległość obrazu od wzorcowej lokalizacji kolorów (wartość od 0.0 do 100.0) Algorytm wyznaczania lokalizacji kolorów dla obrazu: obraz jest dzielony na siatkę m x n prostokątów dla każdego z prostokątów wyznaczany jest dominujący kolor 75

76 Typ danych SI_Texture Atrybuty: SI_TextureEncoding Metody: W Oracle10g typu textureencoding kolekcja VARRAY zawierająca współczynniki opisujące takie cechy tekstury jak: "chropowatość", kontrast, kierunek ułożenia wzoru konstruktor: SI_Texture(SI_StillImage) SI_Score(SI_StillImage) wyznaczająca "odległość" obrazu od wzorcowej tekstury (wartość od 0.0 do 100.0) Sposób opisu tekstury, algorytm wyznaczania współczynników i określania podobieństwa zależne od implementacji 76

77 Typ danych SI_FeatureList Atrybuty: właściwości i ich wagi: SI_AvgClrFtr (typu SI_AverageColor), SI_AvgClrFtrWght, SI_ClrHstgrFtr (typu SI_ColorHistogram), SI_ClrHstgrFtrWght, SI_PstnlClrFtr (typu SI_PositionalColor), SI_PstnlClrFtrWght, SI_TextureFtr (typu SI_Texture), SI_TextureFtrWght Metody: konstruktor: SI_FeatureList(SI_AverageColor, DOUBLE PRECISION, SI_ColorHistogram, DOUBLE PRECISION, SI_PositionalColor, DOUBLE PRECISION, SI_Texture, DOUBLE PRECISION) metody do ustawiania poszczególnych właściwości i ich wag: SI_SetFeature(SI_AverageColor, DOUBLE PRECISION), SI_SetFeature(SI_ColorHistogram, DOUBLE PRECISION), SI_SetFeature(SI_PositionalColor, DOUBLE PRECISION), SI_SetFeature(SI_Texture, DOUBLE PRECISION), metody do odczytu atrybutów, np. SI_AvgClrFtr, SI_AvgClrFtrWght,... SI_Score(SI_StillImage) wyznaczająca "odległość" obrazu od wzorcowej listy właściwości (wartość od 0.0 do średnia ważona odległości dla poszczególnych właściwości) N i 1 F. SI _ Score image W i N i 1 W i i 77

78 SQL/MM Still Image Funkcje SQL Dla każdego konstruktora i metody typów SQL/MM Still Image istnieje równoważna funkcja lub procedura SQL Charakterystyka funkcji SQL dla Still Image: uruchamiane z prawami wywołującego posiadające publiczne synonimy dostępne dla wszystkich użytkowników bazy danych W Oracle10g/11g utworzone w schemacie ORDSYS (podobnie jak wszystkie typy danych Oracle Multimedia) Przykłady: SI_MkStillImage1(BLOB) dla SI_StillImage.SI_StillImage(BLOB) SI_MkRGBClr dla SI_Color.SI_RGBColor() SI_GetHeight(StillImage) dla SI_StillImage.SI_Height() 78

79 SQL/MM Still Image w Oracle Przykład (1/4) Utworzenie tabeli do składowania obrazów CREATE TABLE si_wzory (nazwa VARCHAR2(40), obraz ORDSYS.SI_StillImage); Wstawienie obrazu do tabeli za pośrednictwem BFILE DECLARE lobd blob; fils BFILE := BFILENAME('TKANINY','kratka.gif'); BEGIN DBMS_LOB.CREATETEMPORARY(lobd, TRUE); DBMS_LOB.fileopen(fils, DBMS_LOB.file_readonly); DBMS_LOB.LOADFROMFILE(lobd, fils, DBMS_LOB.GETLENGTH(fils)); DBMS_LOB.FILECLOSE(fils); INSERT INTO SI_WZORY (nazwa, obraz) VALUES('kratka', new ORDSYS.SI_StillImage(lobd)); DBMS_LOB.FREETEMPORARY(lobd); COMMIT; END; / 79

80 SQL/MM Still Image w Oracle Przykład (2/4) Wyznaczenie sygnatury dla obrazu DECLARE tempimage SI_StillImage; BEGIN SELECT obraz INTO tempimage FROM si_wzory WHERE nazwa = 'kratka' FOR UPDATE; tempimage.si_initfeatures; UPDATE si_wzory SET obraz = tempimage where nazwa = 'kratka'; COMMIT; END; / UWAGA: w rzeczywistości należałoby przejść kursorem po wszystkich wierszach tabeli i modyfikować bieżący wiersz w kursorze (WHERE CURRENT OF) 80

81 SQL/MM Still Image w Oracle Przykład (3/4) Wyszukanie obrazów podobnych do danego pod względem tekstury SELECT w.nazwa FROM si_wzory w WHERE SI_FindTexture( (SELECT v.obraz FROM si_wzory v WHERE v.nazwa = 'kratka')).si_score(w.obraz) < 30; 81

82 SQL/MM Still Image w Oracle Przykład (4/4) Wyszukanie obrazów podobnych do danego pod względem koloru i tekstury DECLARE tempimage SI_StillImage; tempavgcolor SI_AverageColor; temptexture SI_Texture; myfeaturelist SI_FeatureList; score DOUBLE PRECISION; BEGIN SELECT obraz INTO tempimage FROM si_wzory WHERE nazwa = 'kratka'; tempavgcolor := NEW SI_AverageColor(tempimage); temptexture := NEW SI_Texture(tempimage); myfeaturelist := NEW SI_FeatureList( tempavgcolor, 0.7, NULL, NULL, NULL, NULL, temptexture, 0.3); FOR c IN (SELECT nazwa, obraz FROM si_wzory) LOOP score := myfeaturelist.si_score(c.obraz); IF score < 10 THEN dbms_output.put_line(c.nazwa ' score: ' score); END IF; END LOOP; END; / 82

83 Content-based Image Retrieval - Uwagi Dobrze gdy szukany obiekt zajmuje cały obraz Jeśli na obrazie jest wiele kształtów, system poradzi sobie lepiej gdy: gdy są w kontrastujących kolorach na obrazie jest niewiele prostych kształtów Komputer nie dorównuje człowiekowi w zakresie porównywania obrazów: problemy ze skalowaniem, obrotami i przesłanianiem obiektów Na potrzeby analizy obrazy są tymczasowo skalowane do jednego rozmiaru fragment wycięty z obrazu może być uznany za niepodobny do całego obrazu 83

84 Oracle Multimedia Java API

85 Czym jest Oracle Multimedia Java API? Zbiór klas Java umożliwiających korzystanie z obiektów Oracle Multimedia w programach Java Dla obiektowych typów SQL Oracle Multimedia dostarczone są ich odpowiedniki w postaci klas języka Java (OrdAudio, OrdImage, OrdVideo,...) Ponadto dostępne są klasy wspierające obsługę multimediów w serwletach i JSP klasy Oracle Multimedia Java API zdefiniowane w pakiecie: oracle.ord.im import oracle.ord.im.*; 85

86 Oracle Multimedia Servlets and JSP Java API Upraszcza pobieranie i ładowanie multimediów do bazy danych z poziomu serwletów i JSP OrdHttpResponseHandler umożliwia pobranie obiektu medialnego z bazy danych i wysłanie go do przeglądarki z poziomu serwletu OrdHttpJspResponseHandler umożliwia pobranie obiektu medialnego z bazy danych i wysłanie go do przeglądarki z poziomu JSP OrdHttpUploadFormData i OrdHttpUploadFile służą do obsługi danych przesłanych do serwletu/jsp metodą POST z formularza HTML (mechanizm file upload ) 86

87 Klasa OrdHttpResponseHandler (1/2) Przykład zastosowania: PreparedStatement stmt = conn.preparestatement( "select audio from mp3s where id = 1"); OracleResultSet rset = (OracleResultSet)stmt.executeQuery(); if (rset.next()){ OrdAudio media = (OrdAudio)rset.getCustomDatum(1, OrdAudio.getFactory( )); OrdHttpResponseHandler handler = new OrdHttpResponseHandler(request, response); handler.sendaudio(media); } else{ response.setstatus(response.sc_not_found); } rset.close( ); stmt.close( ); 87

88 Klasa OrdHttpResponseHandler (2/2) Uwagi: Korzystanie z pobranych z bazy danych obiektów Multimedia w Javie wymaga pozostawienia otwartego połączenia z bazą Jeśli w obiekcie ORDAudio, ORDDoc, ORDImage, ORDVideo jest ustawiony atrybut MIME Type, odpowiedni nagłówek zostanie automatycznie wysłany przy wywołaniu metody sendaudio, senddoc, sendimage, sendvideo Jawne ustawienie nagłówka Content-Type umożliwia metoda sendresponse... handler.sendresponse( mimetype, media.getcontentlength( ), media.getcontent( ), media.getupdatetime( )); 88

89 File upload w serwletach i JSP Pliki przesyłane są z formularzy HTML metodą POST jako zawartość typu multipart/form-data Klasa OrdHttpUploadFormData analizuje i udostępnia dane przesłane formularza Klasa OrdHttpUploadFile reprezentuje przesłany plik, oferując metody dostępu do niego 89

90 Podsumowanie

91 Podsumowanie (1/2) Oracle Multimedia jest atrakcyjnym rozwiązaniem dla użytkowników pracujących z dużymi kolekcjami obiektów multimedialnych Oracle Multimedia wspiera różne sposoby składowania danych Oracle Multimedia może zapewnić przetwarzanie transakcyjne obiektów multimedialnych Oracle Multimedia oferuje duże możliwości w zakresie ekstrakcji i przetwarzania metadanych Oracle Multimedia jest cechą serwera dostępną w edycji Standard Edition 91

92 Podsumowanie (2/2) Oracle Multimedia najwięcej możliwości oferuje dla obrazów wyszukiwanie ze względu na zawartość podstawowe przetwarzanie (konwersje, edycja) obsługa metadanych w 3 popularnych standardach od wersji 10g wybór między składnią specyficzną dla Oracle lub zgodną z SQL/MM Still Image szczególne wsparcie dla obrazów medycznych w standardzie DICOM Zbliżoną funkcjonalność do Oracle w zakresie multimediów oferują DB2 i Informix jedynie Oracle wspiera standard SQL/MM Still Image podobnie jak Oracle, IBM wycofał się z obsługi wyszukiwania w oparciu o zawartość na poziomie serwera bazy danych (funkcjonalność zbyt specyficzna, pozostawiona aplikacjom) Nadal brak szczególnego wsparcia dla standardu MPEG-7 92

Czym jest Oracle Multimedia?

Czym jest Oracle Multimedia? Oracle Multimedia Czym jest Oracle Multimedia? Oracle Multimedia to cecha (ang. feature) serwera bazy danych Oracle umożliwiająca składowanie, odczyt i przetwarzanie multimediów w sposób zintegrowany z

Bardziej szczegółowo

Od intermedia do Multimedia obsługa danych multime-dialnych w Oracle 10g/11g

Od intermedia do Multimedia obsługa danych multime-dialnych w Oracle 10g/11g XIV Konferencja PLOUG Szczyrk Październik 2008 Od intermedia do Multimedia obsługa danych multime-dialnych w Oracle 10g/11g Marek Wojciechowski Politechnika Poznańska e mail: Marek.Wojciechowski@cs.put.poznan.pl

Bardziej szczegółowo

Multimedialne bazy danych - laboratorium

Multimedialne bazy danych - laboratorium Multimedialne bazy danych - laboratorium Oracle Multimedia (rozwiązania) Celem ćwiczenia jest zapoznanie się z obiektowymi typami danych Oracle dedykowanymi do obsługi multimediów. Autor ćwiczenia: Marek

Bardziej szczegółowo

Multimedialne bazy danych. Andrzej Łachwa, WFAiIS UJ 2011

Multimedialne bazy danych. Andrzej Łachwa, WFAiIS UJ 2011 5 Multimedialne bazy danych Andrzej Łachwa, WFAiIS UJ 2011 Wyszukiwanie obrazów w bazach danych www.cs.put.poznan.pl/mwojciechowski/papers/plougtki03.pdf PLOUG tki nr 28/grudzień 2003 Podstawowe wymagania

Bardziej szczegółowo

Model semistrukturalny

Model semistrukturalny Model semistrukturalny standaryzacja danych z różnych źródeł realizacja złożonej struktury zależności, wielokrotne zagnieżdżania zobrazowane przez grafy skierowane model samoopisujący się wielkości i typy

Bardziej szczegółowo

PODSTAWY BAZ DANYCH. 17. Obiektowość w Oracle. 2009/2010 Notatki do wykładu "Podstawy baz danych"

PODSTAWY BAZ DANYCH. 17. Obiektowość w Oracle. 2009/2010 Notatki do wykładu Podstawy baz danych PODSTAWY BAZ DANYCH 17. Obiektowość w Oracle 1 Obiektowa baza danych Obiektowe bazy danych (OBD) powstały początkowo jako rozwinięcie programowania obiektowego. Bazy danych zorientowane obiektowo przechowują

Bardziej szczegółowo

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze Cechy bloków nazwanych: w postaci skompilowanej trwale przechowywane na serwerze wraz z danymi wykonywane na żądanie użytkownika lub w

Bardziej szczegółowo

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw

Bardziej szczegółowo

MECHANIZMY WYSZUKIWANIA OBRAZEM W ORACLE 11g

MECHANIZMY WYSZUKIWANIA OBRAZEM W ORACLE 11g ZESZYTY NAUKOWE POLITECHNIKI RZESZOWSKIEJ 296, Elektrotechnika 36 RUTJEE, z. 36 (3/2017), październik-grudzień 2017, s. 5-18 Ewa CZARNIK 1 Paweł DYMORA 2 Mirosław MAZUREK 3 MECHANIZMY WYSZUKIWANIA OBRAZEM

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -

Bardziej szczegółowo

15. Funkcje i procedury składowane PL/SQL

15. Funkcje i procedury składowane PL/SQL 15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp

Bardziej szczegółowo

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie. dr inż. Adam Piórkowski. Jakub Osiadacz Marcin Wróbel

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie. dr inż. Adam Piórkowski. Jakub Osiadacz Marcin Wróbel Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Problem magazynowania i przetwarzania wielkoformatowych map i planów geologicznych. Promotor: dr inż. Adam Piórkowski Autorzy: Jakub Osiadacz

Bardziej szczegółowo

Pakiety podprogramów Dynamiczny SQL

Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL 1 Pakiety Pakiet (ang. package)

Bardziej szczegółowo

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie

Bardziej szczegółowo

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1 Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych

Bardziej szczegółowo

Oracle11g: Wprowadzenie do SQL

Oracle11g: Wprowadzenie do SQL Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom

Bardziej szczegółowo

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006 OBIEKTOWOŚĆ W BAZIE DANYCH ORACLE Monika Kruk Mariusz Grabowski Informatyka Stosowana WFiIS, AGH 13 grudzień 2006 Plan prezentacji kilka słów o bazie danych ORACLE rzecz o obiektach ORACLE tworzenie typów

Bardziej szczegółowo

PODSTAWY BAZ DANYCH 13. PL/SQL

PODSTAWY BAZ DANYCH 13. PL/SQL PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących

Bardziej szczegółowo

Obiektowe bazy danych

Obiektowe bazy danych Obiektowe bazy danych Obiektowo-relacyjne bazy danych Wykład prowadzi: Tomasz Koszlajda Obiektowo-relacyjne bazy danych Ewolucja rozszerzeń relacyjnego modelu danych: Składowanie kodu procedur w bazie

Bardziej szczegółowo

Tworzenie raportów XML Publisher przy użyciu Data Templates

Tworzenie raportów XML Publisher przy użyciu Data Templates Tworzenie raportów XML Publisher przy użyciu Data Templates Wykorzystanie Szablonów Danych (ang. Data templates) jest to jedna z metod tworzenia raportów w technologii XML Publisher bez użycia narzędzia

Bardziej szczegółowo

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ]; Braki w SQL obsługi zdarzeń i sytuacji wyjątkowych funkcji i procedur użytkownika definiowania złożonych ograniczeń integralnościowych Proceduralny SQL Transact- SQL używany przez Microsoft SQL Server

Bardziej szczegółowo

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1] JAVA wprowadzenie do programowania (3/3) [1] Czym jest aplikacja Java Web Start? Aplikacje JAWS są formą pośrednią pomiędzy apletami a aplikacjami Javy. Nie wymagają do pracy przeglądarki WWW, jednak mogą

Bardziej szczegółowo

Standard SQL/MM. Wykład prowadzi: Marek Wojciechowski. Standard SQL/MM. Zaawansowane systemy baz danych - ZSBD

Standard SQL/MM. Wykład prowadzi: Marek Wojciechowski. Standard SQL/MM. Zaawansowane systemy baz danych - ZSBD Standard SQL/MM Wykład prowadzi: Marek Wojciechowski Standard SQL/MM Wykład poświęcony jest standardowi SQL/MM, który jest nowym standardem uzupełniającym język SQL o biblioteki do obsługi specjalistycznych

Bardziej szczegółowo

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Wykorzystywanie parsera DOM w programach Java i PL/SQL Wykorzystywanie parsera DOM w programach Java i PL/SQL Maciej Zakrzewicz mzakrz@cs.put.poznan.pl http://www.cs.put.poznan.pl/~mzakrz/ Parser DOM Aplikacja DOM API Parser DOM Dokument XML Drzewo DOM Parser

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?

Bardziej szczegółowo

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u będziemy używać w taki sam sposób, jak wbudowanych funkcji

Bardziej szczegółowo

Oracle intermedia na tle standardu SQL/MM i prototypowych systemów multimedialnych baz danych

Oracle intermedia na tle standardu SQL/MM i prototypowych systemów multimedialnych baz danych IX Konferencja PLOUG Koœcielisko PaŸdziernik 2003 Oracle intermedia na tle standardu SQL/MM i prototypowych systemów multimedialnych baz danych Marek Wojciechowski, ukasz Matuszczak Politechnika Poznañska

Bardziej szczegółowo

Kartografia multimedialna krótki opis projektu. Paweł J. Kowalski

Kartografia multimedialna krótki opis projektu. Paweł J. Kowalski Kartografia multimedialna krótki opis projektu Paweł J. Kowalski Copyright Paweł J. Kowalski 2008 1. Schemat realizacji projektu 2 Celem projektu wykonywanego w ramach ćwiczeń z kartografii multimedialnej

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 6 Marcin Młotkowski 14 listopada 2012 Plan wykładu Trwałość obiektów Bazy danych DBM Bazy danych SQL Active records Szeregowanie obiektów Obiekt Serializacja @tytul = 'Pan Tadeusz'

Bardziej szczegółowo

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle Rozszerzenie obiektowe w SZBD Oracle Cześć 2. Kolekcje Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Malinowski Nowak Kowalski tablica zagnieżdżona (ang.

Bardziej szczegółowo

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze Funkcje użytkownika Tworzenie funkcji Usuwanie funkcji Procedury składowane Tworzenie procedur składowanych Usuwanie procedur składowanych Wyzwalacze Wyzwalacze a ograniczenia i procedury składowane Tworzenie

Bardziej szczegółowo

XML w bazie danych IBM DB2

XML w bazie danych IBM DB2 Instytut Informatyki Politechnika Śląska Gliwice, ul. Akademicka 16 XML w bazie danych IBM DB2 Dr inż. Dariusz Mrozek Wykład: IBM DB2 uniwersalna platforma przetwarzania danych O czym dzisiaj? XML w relacyjnej

Bardziej szczegółowo

Post-relacyjne bazy danych

Post-relacyjne bazy danych Post-relacyjne bazy danych Historia języka SQL 1. Sequel-XRM 2. Sequel/2 SQL 3. ANSI SQL 1986 (ISO 1987) 4. X/Open (UNIX), SAA(IBM) 5. ANSI SQL 1989 6. ANSI/ISO SQL 92 Entry level 7. ANSI SQL 92 (SQL 2)

Bardziej szczegółowo

Database Connectivity

Database Connectivity Oprogramowanie Systemów Pomiarowych 15.01.2009 Database Connectivity Dr inŝ. Sebastian Budzan Zakład Pomiarów i Systemów Sterowania Tematyka Podstawy baz danych, Komunikacja, pojęcia: API, ODBC, DSN, Połączenie

Bardziej szczegółowo

Tomasz Grześ. Systemy zarządzania treścią

Tomasz Grześ. Systemy zarządzania treścią Tomasz Grześ Systemy zarządzania treścią Co to jest CMS? CMS (ang. Content Management System System Zarządzania Treścią) CMS definicje TREŚĆ Dowolny rodzaj informacji cyfrowej. Może to być np. tekst, obraz,

Bardziej szczegółowo

Standard SQL/MM: SQL Multimedia and Application Packages

Standard SQL/MM: SQL Multimedia and Application Packages Standard SQL/MM: SQL Multimedia and Application Packages Krzysztof Jankiewicz, Marek Wojciechowski Politechnika Poznańska, Instytut Informatyki Krzysztof.Jankiewicz@cs.put.poznan.pl Marek.Wojciechowski@cs.put.poznan.pl

Bardziej szczegółowo

Procedury i funkcje składowane

Procedury i funkcje składowane Procedury i funkcje składowane Zmienne podstawienia i zmienne wiązane, podprogramy, procedury składowane, typy argumentów, wywoływanie procedur, funkcje składowane, poziomy czystości funkcji, funkcje tablicowe

Bardziej szczegółowo

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1 Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie wyzwalaczami 1 Procedury wyzwalane

Bardziej szczegółowo

DECLARE VARIABLE zmienna1 typ danych; BEGIN

DECLARE VARIABLE zmienna1 typ danych; BEGIN Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;

Bardziej szczegółowo

Eksploracja i ochrona danych multimedialnych

Eksploracja i ochrona danych multimedialnych Rozdział 35 Eksploracja i ochrona danych multimedialnych Streszczenie. Treścią rozdziału jest analiza funkcjonalności rozszerzenia Oracle intermedia zarządzającego danymi multimedialnymi przechowywanymi

Bardziej szczegółowo

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym 1 Wprowadzenie do środowiska Oracle APEX, obszary robocze, użytkownicy Wprowadzenie Plan Administracja obszarem roboczym 2 Wprowadzenie Co to jest APEX? Co to jest APEX? Architektura Środowisko Oracle

Bardziej szczegółowo

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 4 Budowa prostych formularzy, stany sesji, tworzenie przycisków Plan Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 2 Formularz i jego typy Tworzenie formularza

Bardziej szczegółowo

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł

Bardziej szczegółowo

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

Obiektowe bazy danych Ćwiczenia laboratoryjne (?) Obiektowe bazy danych Ćwiczenia laboratoryjne (?) Tworzenie typów obiektowych 1. Zdefiniuj typ obiektowy reprezentujący SAMOCHODY. Każdy samochód powinien mieć markę, model, liczbę kilometrów oraz datę

Bardziej szczegółowo

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL.

Bardziej szczegółowo

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań, 04.03.2010

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań, 04.03.2010 Bezpieczeństwo interoperacyjnego hostingu Gerard Frankowski, Zespół Bezpieczeństwa PCSS 4. Konferencja MIC Nowoczesne technologie bliżej nas Poznań, 04.03.2010 1 Agenda Wprowadzenie Zespół Bezpieczeństwa

Bardziej szczegółowo

Wykład 5: PHP: praca z bazą danych MySQL

Wykład 5: PHP: praca z bazą danych MySQL Wykład 5: PHP: praca z bazą danych MySQL Architektura WWW Podstawowa: dwuwarstwowa - klient (przeglądarka) i serwer WWW Rozszerzona: trzywarstwowa - klient (przeglądarka), serwer WWW, serwer bazy danych

Bardziej szczegółowo

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. Informatyka I Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 Standard JDBC Java DataBase Connectivity

Bardziej szczegółowo

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX Aktualizowanie dokumentów XML ( Oracle ) do aktualizowania zawartości dokumentów XML służy między innymi funkcja updatexml. wynikiem jej działania jest oryginalny dokument ze zmodyfikowanym fragmentem,

Bardziej szczegółowo

Relacyjne bazy danych a XML

Relacyjne bazy danych a XML Relacyjne bazy danych a XML Anna Pankowska aniap@amu.edu.pl Internet, SQLiXMLwbiznesie Internet nieoceniony sposób komunikacji z klientami, pracownikami i partnerami handlowymi przyspiesza transakcje finansowe

Bardziej szczegółowo

Wykorzystanie Oracle intermedia do przechowywania danych multimedialnych w Oracle 10g

Wykorzystanie Oracle intermedia do przechowywania danych multimedialnych w Oracle 10g Rozdział 24 Wykorzystanie Oracle intermedia do przechowywania danych multimedialnych w Oracle 10g Streszczenie. Specyfikacja języka SQL nie uwzględnia obsługi medialnych typów danych. Dopiero standard

Bardziej szczegółowo

1 Wprowadzenie do J2EE

1 Wprowadzenie do J2EE Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2

Bardziej szczegółowo

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java Informatyka I Standard JDBC Programowanie aplikacji bazodanowych w języku Java dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Standard JDBC Java DataBase Connectivity uniwersalny

Bardziej szczegółowo

Hurtownie danych - przegląd technologii

Hurtownie danych - przegląd technologii Hurtownie danych - przegląd technologii Problematyka zasilania hurtowni danych - Oracle Data Integrator Politechnika Poznańska Instytut Informatyki Robert.Wrembel@cs.put.poznan.pl www.cs.put.poznan.pl/rwrembel

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

Zarządzanie kontami użytkowników w i uprawnieniami

Zarządzanie kontami użytkowników w i uprawnieniami 106 Plan prezentacji 107 Zarządzanie kontami użytkowników w i uprawnieniami Schematy a użytkownicy Tworzenie użytkowników, uwierzytelnianie Przywileje systemowe i obiektowe, role Profile kontrola wykorzystania

Bardziej szczegółowo

EXSO-CORE - specyfikacja

EXSO-CORE - specyfikacja EXSO-CORE - specyfikacja System bazowy dla aplikacji EXSO. Elementy tego systemu występują we wszystkich programach EXSO. Może on ponadto stanowić podstawę do opracowania nowych, dedykowanych systemów.

Bardziej szczegółowo

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych Plan wykładu BAZY DANYCH II WYKŁAD 3 Zasięg zmiennych Zmienne powiązane Instrukcje warunkowe Pętle Pobieranie danych SQL w PL/SQL Rekordy dr inż. Agnieszka Bołtuć Zasięg zmiennych Zmienna jest dostępna

Bardziej szczegółowo

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe -- Definicje relacji i utworzenie stanu początkowego dla ćwiczeń z synchronizacji transakcji DROP TABLE Konta cascade constraints; DROP TABLE

Bardziej szczegółowo

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory. Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory. Konstruktory Konstruktory w językach obiektowych są to specjalne metody wywoływane podczas tworzenia nowego obiektu i służące do

Bardziej szczegółowo

serwisy W*S ERDAS APOLLO 2009

serwisy W*S ERDAS APOLLO 2009 serwisy W*S ERDAS APOLLO 2009 1 OGC (Open Geospatial Consortium, Inc) OGC jest międzynarodowym konsorcjum 382 firm prywatnych, agencji rządowych oraz uniwersytetów, które nawiązały współpracę w celu rozwijania

Bardziej szczegółowo

Zaawansowane bazy danych i hurtownie danych semestr I

Zaawansowane bazy danych i hurtownie danych semestr I Podprogramy Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych semestr I Procedury do przeprowadzenia akcji Funkcje do obliczania wartości Pakiety do zbierania logicznie

Bardziej szczegółowo

Wielojęzykowość w aplikacjach J2EE. Tomasz.Skutnik@e-point.pl

Wielojęzykowość w aplikacjach J2EE. Tomasz.Skutnik@e-point.pl e-point SA 7 marca, 2009 Co to jest duży system? Domeny narodowe Warianty językowe Funkcje (ekrany) Klucze lokalizacyjne Tabele językowe w bazie danych Gdzie mogą wystąpić problemy? Środowisko uruchomieniowe

Bardziej szczegółowo

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r.

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Bazy danych dla producenta mebli tapicerowanych Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Założenia Stworzyć system bazodanowy dla małej firmy produkującej meble tapicerowane. Projekt ma umożliwić

Bardziej szczegółowo

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Wyzwalacze. Anna Fiedorowicz Bazy danych 2 Wyzwalacze Wyzwalacze są specjalnymi procedurami składowanymi, uruchamianymi automatycznie w następstwie zaistnienia określonego typu zdarzenia. Ich główne zadanie polega na wymuszaniu integralności danych

Bardziej szczegółowo

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska Obsługa transakcji rozproszonych w języku j Java Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska Plan prezentacji Transakcje i ich własności Proste transakcje w JDBC

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

Serwery LDAP w środowisku produktów w Oracle

Serwery LDAP w środowisku produktów w Oracle Serwery LDAP w środowisku produktów w Oracle 1 Mariusz Przybyszewski Uwierzytelnianie i autoryzacja Uwierzytelnienie to proces potwierdzania tożsamości, np. przez: Użytkownik/hasło certyfikat SSL inne

Bardziej szczegółowo

PHP: bazy danych, SQL, AJAX i JSON

PHP: bazy danych, SQL, AJAX i JSON 1 PHP: bazy danych, SQL, AJAX i JSON SYSTEMY SIECIOWE Michał Simiński 2 Bazy danych Co to jest MySQL? Jak się połączyć z bazą danych MySQL? Podstawowe operacje na bazie danych Kilka dodatkowych operacji

Bardziej szczegółowo

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Składowe wyzwalacza ( ECA ): określenie zdarzenia ( Event ) określenie

Bardziej szczegółowo

Spis treści. Przedmowa

Spis treści. Przedmowa Spis treści Przedmowa V 1 SQL - podstawowe konstrukcje 1 Streszczenie 1 1.1 Bazy danych 1 1.2 Relacyjny model danych 2 1.3 Historia języka SQL 5 1.4 Definiowanie danych 7 1.5 Wprowadzanie zmian w tabelach

Bardziej szczegółowo

Wykład I. Wprowadzenie do baz danych

Wykład I. Wprowadzenie do baz danych Wykład I Wprowadzenie do baz danych Trochę historii Pierwsze znane użycie terminu baza danych miało miejsce w listopadzie w 1963 roku. W latach sześcdziesątych XX wieku został opracowany przez Charles

Bardziej szczegółowo

PL/SQL. Zaawansowane tematy PL/SQL

PL/SQL. Zaawansowane tematy PL/SQL PL/SQL Zaawansowane tematy PL/SQL Cele Poznanie złożonych i referencyjnych typów danych Poznanie konstrukcji kursora Poznanie kodu składowanego Poznanie procedur i funkcji 2 Złożone typy danych RECORD

Bardziej szczegółowo

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Plan. Raport. Tworzenie raportu z kreatora (1/3) 3 Budowa prostych raportów opartych o bazę danych Plan Co to jest raport? Tworzenie za pomocą kreatora Tworzenie opartego o polecenie SQL Edycja atrybutów Atrybuty regionu Atrybuty Atrybuty kolumn 2 Raport

Bardziej szczegółowo

Język PL/SQL Procedury i funkcje składowane

Język PL/SQL Procedury i funkcje składowane Język PL/SQL Procedury i funkcje składowane Podprogramy, procedury i funkcje składowane, typy argumentów, wywoływanie procedur i funkcji, poziomy czystości funkcji 1 Podprogramy Procedury (wykonują określone

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł mysqli ma dwa interfejsy: proceduralny i obiektowy) PostgreSQL Oracle MS

Bardziej szczegółowo

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X Wrocław 2006 INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl INTERNETOWE BAZY DANYCH PLAN NA DZIŚ zajęcia 1: 2. Procedury składowane

Bardziej szczegółowo

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV Piotr Jarosik, Kamil Jaworski, Dominik Olędzki, Anna Stępień Dokumentacja wstępna TIN Rozproszone repozytorium oparte o WebDAV 1. Wstęp Celem projektu jest zaimplementowanie rozproszonego repozytorium

Bardziej szczegółowo

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne Materiały dostępne są na stronie: Materiały Technologie baz danych aragorn.pb.bialystok.pl/~gkret Wykład 5: Kursory jawne. Podprogramy. Małgorzata Krętowska Wydział Informatyki Politechnika Białostocka

Bardziej szczegółowo

Java Server Faces narzędzie do implementacji w wy prezentacji

Java Server Faces narzędzie do implementacji w wy prezentacji Java Server Faces narzędzie do implementacji w wy prezentacji pojęcie komponentu powiązanie z modelem danych widok (View) jako drzewo komponentów obiekty pomocnicze: konwertery, walidatory, obsługa zdarzeń

Bardziej szczegółowo

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne Jarosław Kuchta Internetowe Usługi Informacyjne Komponenty IIS HTTP.SYS serwer HTTP zarządzanie połączeniami TCP/IP buforowanie odpowiedzi obsługa QoS (Quality of Service) obsługa plików dziennika IIS

Bardziej szczegółowo

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa) Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa dwunasty PL/SQL, c.d. 1 / 37 SQL to za mało SQL brakuje możliwości dostępnych w językach proceduralnych.

Bardziej szczegółowo

Oracle10g: Programowanie w PL/SQL

Oracle10g: Programowanie w PL/SQL Oracle10g: Programowanie w PL/SQL OPIS: Szkolenie dotyczy użytkowników Oracle8i, Oracle9i i Oracle10g. Ten kurs pozwala zrozumieć zalety tego potężnego narzędzia programowania do PL/SQL. Studenci uczą

Bardziej szczegółowo

akademia androida Składowanie danych część VI

akademia androida Składowanie danych część VI akademia androida Składowanie danych część VI agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie. 1. SharedPreferences.

Bardziej szczegółowo

XML w bazach danych i bezpieczeństwie

XML w bazach danych i bezpieczeństwie XML w bazach danych i bezpieczeństwie Patryk Czarnik Instytut Informatyki UW XML i nowoczesne technologie zarzadzania treścia 2007/08 Klasyfikacja wsparcia dla XML-a w bazach danych (Relacyjna) baza danych

Bardziej szczegółowo

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15 T-SQL dla każdego / Alison Balter. Gliwice, cop. 2016 Spis treści O autorce 11 Dedykacja 12 Podziękowania 12 Wstęp 15 Godzina 1. Bazy danych podstawowe informacje 17 Czym jest baza danych? 17 Czym jest

Bardziej szczegółowo

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki. Pakiety Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki. Pakiet składa się ze: specyfikacji (interfejsu) i ciała (implementacji). W specyfikacji mieszczą

Bardziej szczegółowo

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL, Mój projekt przedstawia bazę danych noclegów składającą się z 10 tabel. W projekcie wykorzystuje program LibreOffice Base do połączenia psql z graficznym interfejsem ( kilka formularzy przedstawiających

Bardziej szczegółowo

1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...

1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków... Plan wykładu Spis treści 1 Kursory 1 2 Wyjątki 4 2.1 Wyjątki predefiniowane............................. 4 2.2 Wyjątki niezdefiniowane wcześniej....................... 5 2.3 Definiowanie własnych wyjątków........................

Bardziej szczegółowo

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE) Programowanie w języku Java Wykład 13: Java Platform, Enterprise Edition (Java EE) Standard J2EE Programowanie w języku Java 2 J2EE - komunikacja Programowanie w języku Java 3 J2EE warstwa biznesowa Programowanie

Bardziej szczegółowo

dlibra 3.0 Marcin Heliński

dlibra 3.0 Marcin Heliński dlibra 3.0 Marcin Heliński Plan prezentacji Wstęp Aplikacja Redaktora / Administratora Serwer Aplikacja Czytelnika Aktualizator Udostępnienie API NajwaŜniejsze w nowej wersji Ulepszenie interfejsu uŝytkownika

Bardziej szczegółowo

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko Podstawowe pojęcia dotyczące relacyjnych baz danych mgr inż. Krzysztof Szałajko Czym jest baza danych? Co rozumiemy przez dane? Czym jest system zarządzania bazą danych? 2 / 25 Baza danych Baza danych

Bardziej szczegółowo

Podstawowe wykorzystanie Hibernate

Podstawowe wykorzystanie Hibernate Podstawowe wykorzystanie Hibernate Cel Wykonanie prostej aplikacji webowej przedstawiającą wykorzystanie biblioteki. Aplikacja sprawdza w zależności od wybranej metody dodaje, nową pozycje do bazy, zmienia

Bardziej szczegółowo

Porównanie systemów zarządzania relacyjnymi bazami danych

Porównanie systemów zarządzania relacyjnymi bazami danych Jarosław Gołębiowski 12615 08-07-2013 Porównanie systemów zarządzania relacyjnymi bazami danych Podstawowa terminologia związana z tematem systemów zarządzania bazami danych Baza danych jest to zbiór danych

Bardziej szczegółowo

Wprowadzenie. Rozdział 23 PDO. Podstawowe kroki aplikacji. Źródło danych

Wprowadzenie. Rozdział 23 PDO. Podstawowe kroki aplikacji. Źródło danych Wprowadzenie Rozdział 23 PDO Wprowadzanie do PDO, kursory zwykłe, kursory przewijane, obsługa błędów, przetwarzanie transakcyjne PDO PHP Data Objects, obiektowo-zorientowany interfejs programistyczny dostępu

Bardziej szczegółowo

DICOM protocol. Urszula Krukar, Agnieszka Lewandowska. 13 czerwca Wst p Protokó Serwery DICOM a Toolkits

DICOM protocol. Urszula Krukar, Agnieszka Lewandowska. 13 czerwca Wst p Protokó Serwery DICOM a Toolkits 13 czerwca 2006 Wst p Historia Opis Protokó Podstawowe poj cia DIMSE-C Serwery DICOM a PacsOne ConquestDicomServer Toolkits Historia Historia I norma opracowana przez ARC/NEMA (American College of Radiology/National

Bardziej szczegółowo

Bazy danych 2. Wykład 1

Bazy danych 2. Wykład 1 Bazy danych 2 Wykład 1 Sprawy organizacyjne Materiały i listy zadań zamieszczane będą na stronie www.math.uni.opole.pl/~ajasi E-mail: standardowy ajasi@math.uni.opole.pl Sprawy organizacyjne Program wykładu

Bardziej szczegółowo

JAVA I BAZY DANYCH. MATERIAŁY: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html

JAVA I BAZY DANYCH. MATERIAŁY: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html JAVA I BAZY DANYCH ZAGADNIENIA: wprowadzenie; JDBC; komunikacja z bazą danych; HSQLDB. MATERIAŁY: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo