veri tabanı sistemleri - nesne veri tabanları

91
Nesne Veri Tabanları Nesne-Ba˘ gıntı Veri Tabanları XML Veri Tabanları Veri Tabanı Sistemleri Nesne Veri Tabanları H. Turgut Uyar ¸ Sule ¨ ud¨ uc¨ u 2005-2012 H. Turgut Uyar, ¸ Sule ¨ ud¨ uc¨ u Veri Tabanı Sistemleri

Upload: turgut-uyar

Post on 25-May-2015

2.123 views

Category:

Education


8 download

DESCRIPTION

Nesne veri tabanları, nesne-bağıntı eşleştirmesi. XML, XPath, XQuery.

TRANSCRIPT

Page 1: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

Veri Tabanı SistemleriNesne Veri Tabanları

H. Turgut Uyar Sule Oguducu

2005-2012

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 2: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

License

c©2005-2012 T. Uyar, S. Oguducu

You are free:

to Share – to copy, distribute and transmit the work

to Remix – to adapt the work

Under the following conditions:

Attribution – You must attribute the work in the manner specified by the author or licensor (but not in anyway that suggests that they endorse you or your use of the work).

Noncommercial – You may not use this work for commercial purposes.

Share Alike – If you alter, transform, or build upon this work, you may distribute the resulting work onlyunder the same or similar license to this one.

Legal code (the full license):http://creativecommons.org/licenses/by-nc-sa/3.0/

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 3: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

Konular

1 Nesne Veri TabanlarıGirisNesne KimligiOrnek: db4o

2 Nesne-Bagıntı Veri TabanlarıGirisOrnek: Persist

3 XML Veri TabanlarıGirisXQueryOrnek: DBXML

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 4: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Konular

1 Nesne Veri TabanlarıGirisNesne KimligiOrnek: db4o

2 Nesne-Bagıntı Veri TabanlarıGirisOrnek: Persist

3 XML Veri TabanlarıGirisXQueryOrnek: DBXML

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 5: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Nesne Modeli

veri modeli ile yazılım modeli arasında uyumsuzluk

veride: bagıntı, coklu, dıs anahtar, . . .yazılımda: nesne, yontem, . . .

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 6: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Model Farkı Ornegi

Ornek (filme oyuncu ekleme - SQL tanımları)

CREATE TABLE MOVIE (ID INTEGER PRIMARY KEY ,TITLE VARCHAR (80) NOT NULL)

CREATE TABLE PERSON (ID INTEGER PRIMARY KEY ,NAME VARCHAR (40) NOT NULL)

CREATE TABLE CASTING(MOVIEID INTEGER REFERENCES MOVIE ,ACTORID INTEGER REFERENCES PERSON ,PRIMARY KEY (MOVIEID , ACTORID)

)

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 7: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Model Farkı Ornegi

Ornek (filme oyuncu ekleme - SQL islemleri)

INSERT INTO MOVIE (ID , TITLE)VALUES (110, ’Sleepy Hollow ’)

INSERT INTO PERSON (ID, NAME)VALUES (26, ’Johnny Depp’)

INSERT INTO CASTING (MOVIEID , ACTORID)VALUES (110, 26)

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 8: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Model Farkı Ornegi

Ornek (filme oyuncu ekleme - Java tanımları)

public class Movie {...private List <Person > cast;

...public void addActor(Person p) {

this.cast.add(p);}

}

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 9: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Duzey Farkı Ornegi

Ornek (filme oyuncu ekleme - Java islemleri)

Movie m = new Movie("Sleepy Hollow", ...);Person p = new Person("Johnny Depp", ...);m.addActor(p);

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 10: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Konular

1 Nesne Veri TabanlarıGirisNesne KimligiOrnek: db4o

2 Nesne-Bagıntı Veri TabanlarıGirisOrnek: Persist

3 XML Veri TabanlarıGirisXQueryOrnek: DBXML

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 11: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Nesne Kimligi

her nesnenin bir nesne kimligi var

ozellikler degisse bile kimlik aynı kalır

birincil anahtardan farklı

birincil anahtar gorunur (kullanıcı tanımlar)birincil anahtardaki degerler degisebilir

programlama dillerindeki referanslara karsı duser

nesne kimligi ile baska nesnelere basvurulabilir:icerme hiyerarsisi

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 12: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Nesne Kimligi

her nesnenin bir nesne kimligi var

ozellikler degisse bile kimlik aynı kalır

birincil anahtardan farklı

birincil anahtar gorunur (kullanıcı tanımlar)birincil anahtardaki degerler degisebilir

programlama dillerindeki referanslara karsı duser

nesne kimligi ile baska nesnelere basvurulabilir:icerme hiyerarsisi

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 13: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Nesne Kimligi

her nesnenin bir nesne kimligi var

ozellikler degisse bile kimlik aynı kalır

birincil anahtardan farklı

birincil anahtar gorunur (kullanıcı tanımlar)birincil anahtardaki degerler degisebilir

programlama dillerindeki referanslara karsı duser

nesne kimligi ile baska nesnelere basvurulabilir:icerme hiyerarsisi

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 14: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Icerme Hiyerarsisi Ornegi

Ornek

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 15: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Icerme Hiyerarsisi Ornegi

Ornek

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 16: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Nesne Veri Tabanları

uygulamanın kalıcı nesneleri veri tabanındabagıntılar degil nesneler halinde saklanır

yazma: nesne → ic format (serilestirme)

okuma: ic format → nesne

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 17: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Konular

1 Nesne Veri TabanlarıGirisNesne KimligiOrnek: db4o

2 Nesne-Bagıntı Veri TabanlarıGirisOrnek: Persist

3 XML Veri TabanlarıGirisXQueryOrnek: DBXML

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 18: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o

gomulu calısabilen bir nesne veri tabanı sistemi

kosulla sorgulama

ornege gore sorgulama

sorgulanacak sınıftan bir nesne yaratılıristenen nitelikler ayarlanır, digerleri bos bırakılırbu nesneye benzer nesneler aratılır

guncellenecek ya da silinecek nesnelerinveri tabanından cekilmis olması gerek (nesne kimligi)

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 19: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o

gomulu calısabilen bir nesne veri tabanı sistemi

kosulla sorgulama

ornege gore sorgulama

sorgulanacak sınıftan bir nesne yaratılıristenen nitelikler ayarlanır, digerleri bos bırakılırbu nesneye benzer nesneler aratılır

guncellenecek ya da silinecek nesnelerinveri tabanından cekilmis olması gerek (nesne kimligi)

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 20: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o

gomulu calısabilen bir nesne veri tabanı sistemi

kosulla sorgulama

ornege gore sorgulama

sorgulanacak sınıftan bir nesne yaratılıristenen nitelikler ayarlanır, digerleri bos bırakılırbu nesneye benzer nesneler aratılır

guncellenecek ya da silinecek nesnelerinveri tabanından cekilmis olması gerek (nesne kimligi)

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 21: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Arayuzu

veri tabanına baglantı (gomulu kip):Db4oEmbedded.openFile(filePath) → ObjectContainer

ekleme ve guncelleme:ObjectContainer.store(object)

silme:ObjectContainer.delete(object)

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 22: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Arayuzu

veri tabanına baglantı (gomulu kip):Db4oEmbedded.openFile(filePath) → ObjectContainer

ekleme ve guncelleme:ObjectContainer.store(object)

silme:ObjectContainer.delete(object)

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 23: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Arayuzu

bir sınıftan butun nesneler:ObjectContainer.query(Class.class) → List<Class>

ornege gore sorgulama:ObjectContainer.queryByExample(Class prototype)→ ObjectSet<Class>

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 24: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Arayuzu

bir sınıftan butun nesneler:ObjectContainer.query(Class.class) → List<Class>

ornege gore sorgulama:ObjectContainer.queryByExample(Class prototype)→ ObjectSet<Class>

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 25: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Arayuzu

sorgulama kosulu: Predicate<Class>

bu sınıfın match yontemi gerceklenir:public boolean match(Class object)

sorgulama:ObjectContainer.query(Predicate<Class> predicate)→ List<Class>

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 26: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Arayuzu

sorgulama kosulu: Predicate<Class>

bu sınıfın match yontemi gerceklenir:public boolean match(Class object)

sorgulama:ObjectContainer.query(Predicate<Class> predicate)→ List<Class>

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 27: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Ornekleri

Ornek (veri tabanına baglantı)

ObjectContainer db = Db4oEmbedded.openFile("imdb.db4o"

);

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 28: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Ornekleri

Ornek (sorgulama: butun filmler)

List <Movie > movies = db.query(Movie.class);for (Movie movie : movies) {

...}

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 29: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Ornekleri

Ornek (ornege gore sorgulama: 1977’de cekilmis filmler)

Movie prototype = new Movie(null);prototype.setYear (1977);ObjectSet <Movie > movies =

db.queryByExample(prototype );while (movies.hasNext ()) {

Movie m = movies.next ();...

}

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 30: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Ornekleri

Ornek (kosulla sorgulama: 1977’den sonra cekilmis filmler)

List <Movie > movies = db.query(new Predicate <Movie >() {

public boolean match(Movie movie) {return movie.getYear () > 1977;

}});

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 31: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Ornekleri

Ornek (ekleme)

Movie m = new Movie("Casablanca");m.setYear (1942);db.store(m);db.commit ();

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 32: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Ornekleri

Ornek (guncelleme)

Movie prototype = new Movie("Casablanca");ObjectSet <Movie > result =

db.queryByExample(prototype );Movie found = result.next ();found.setYear (1943);db.store(found);db.commit ();

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 33: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

db4o Ornekleri

Ornek (silme)

Movie prototype = new Movie("Casablanca");ObjectSet <Movie > result =

db.queryByExample(prototype );Movie found = result.next ();db.delete(found);db.commit ();

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 34: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisNesne KimligiOrnek: db4oKaynaklar

Kaynaklar

Okunacak: Date

Chapter 25: Object Databases

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 35: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Konular

1 Nesne Veri TabanlarıGirisNesne KimligiOrnek: db4o

2 Nesne-Bagıntı Veri TabanlarıGirisOrnek: Persist

3 XML Veri TabanlarıGirisXQueryOrnek: DBXML

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 36: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Nesne-Bagıntı Eslestirmesi

yazılım nesneye dayalı

veri tabanı bagıntılar seklinde

yazılım bilesenleri veri tabanı bilesenleriyle eslestirilir

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 37: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Konular

1 Nesne Veri TabanlarıGirisNesne KimligiOrnek: db4o

2 Nesne-Bagıntı Veri TabanlarıGirisOrnek: Persist

3 XML Veri TabanlarıGirisXQueryOrnek: DBXML

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 38: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Ornek: Persist

bir JDBC baglantısını sarmalıyor

nesne veri tabanı arayuzunu JDBC komutlarına ceviriyor

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 39: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Persist Arayuzu

veri tabanına baglantı: Connection connectionPersist(connection) → Persist

ekleme:Persist.insert(object)

guncelleme:Persist.update(object)

silme:Persist.delete(object)

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 40: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Persist Arayuzu

veri tabanına baglantı: Connection connectionPersist(connection) → Persist

ekleme:Persist.insert(object)

guncelleme:Persist.update(object)

silme:Persist.delete(object)

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 41: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Persist Arayuzu

sorgulama: bir sınıftan butun nesnelerPersist.readList(Class.class) → List<Class>

SQL ile sorgulama: hazır komut yazımına benzer sekildePersist.readList(Class.class, String query, params)→ List<Class>

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 42: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Persist Ornekleri

Ornek (veri tabanına baglantı)

Connection connection =DriverManager.getConnection(jdbcURL );

Persist db = new Persist(connection );

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 43: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Persist Ornekleri

Ornek (sorgulama: butun filmler)

List <Movie > movies = db.readList(Movie.class);for (Movie movie : movies) {

...}

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 44: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Persist Ornekleri

Ornek (SQL ile sorgulama: 1977’de cekilmis filmler)

List <Movie > movies = db.readList(Movie.class ,"SELECT * FROM MOVIE WHERE (YEAR = ?)",1977);

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 45: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Persist Ornekleri

Ornek (ekleme)

Movie m = new Movie("Casablanca");m.setYear (1942);db.insert(m);

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 46: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Persist Ornekleri

Ornek (guncelleme)

List <Movie > movies = db.readList(Movie.class ,"SELECT * FROM MOVIE WHERE (TITLE = ?)","Casablanca");

Movie found = movies.get (0);found.setYear (1943);db.update(found);

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 47: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Persist Ornekleri

Ornek (silme)

List <Movie > movies = db.readList(Movie.class ,"SELECT * FROM MOVIE WHERE (TITLE = ?)","Casablanca");

Movie found = movies.get (0);db.delete(found);

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 48: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisOrnek: PersistKaynaklar

Kaynaklar

Okunacak: Date

Chapter 26: Object/Relational Databases

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 49: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

Konular

1 Nesne Veri TabanlarıGirisNesne KimligiOrnek: db4o

2 Nesne-Bagıntı Veri TabanlarıGirisOrnek: Persist

3 XML Veri TabanlarıGirisXQueryOrnek: DBXML

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 50: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XML

XML kendisi bir dil degil

dil tanımlama kuralları

XML ile tanımlanmıs diller

XHTML, DocBook, SVG, MathML, ...

XML ile baglantılı diller

XPath, XQuery, XSL Transforms, SOAP, XLink, ...

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 51: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XML

XML kendisi bir dil degil

dil tanımlama kuralları

XML ile tanımlanmıs diller

XHTML, DocBook, SVG, MathML, ...

XML ile baglantılı diller

XPath, XQuery, XSL Transforms, SOAP, XLink, ...

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 52: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XML

XML kendisi bir dil degil

dil tanımlama kuralları

XML ile tanımlanmıs diller

XHTML, DocBook, SVG, MathML, ...

XML ile baglantılı diller

XPath, XQuery, XSL Transforms, SOAP, XLink, ...

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 53: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XML Yapısı

agac yapısı

dugumler: eleman

kok dugumu: belge elemanıyapraklar: karakter verileri, bos elemanlar

acılıs-kapanıs takıları

nitelikler

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 54: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XML Yapısı

agac yapısı

dugumler: eleman

kok dugumu: belge elemanıyapraklar: karakter verileri, bos elemanlar

acılıs-kapanıs takıları

nitelikler

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 55: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XML Ornegi

Ornek (HTML)

<html><head><title>Foo Bar</title></head><body>

<h1>Welcome to Foo Bar!</h1><p>You can get more information from the

<a href="http://www.foobar.net/">foobar page</a>.</p>

<img src="logo.jpg" alt="Foo Bar logo" /></body></html>

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 56: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XML Ornegi

Ornek (DocBook)

<book lang="tr"><title>Foobar Report </title><bookinfo >...</bookinfo ><chapter >...</chapter ><chapter >...</chapter >...

</book>

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 57: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XML Ornegi

Ornek (DocBook)

<bookinfo ><author >

<firstname >John</firstname ><surname >Foobar </surname >

</author ><date>2007</date>

</bookinfo >

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 58: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XML Ornegi

Ornek (DocBook)

<chapter ><title>Introduction </title ><section >

<title>Description </title><para>Foobar is ...</para>

</section >...

</chapter >

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 59: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XML Ornegi

Ornek (filmler)

<movies ><movie color="Color">

<title>Usual Suspects </title>...

</movie><movie color="Color">

<title>Being John Malkovich </title>...

</movie>...

</movies >

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 60: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XML Ornegi

Ornek (filmler)

<movie color="Color"><title>Usual Suspects </title><year>1995</year><score>8.7</score><votes>35027</votes><director >Bryan Singer </director ><cast>

<actor>Gabriel Byrne</actor><actor>Benicio Del Toro</actor>

</cast></movie>

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 61: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

Konular

1 Nesne Veri TabanlarıGirisNesne KimligiOrnek: db4o

2 Nesne-Bagıntı Veri TabanlarıGirisOrnek: Persist

3 XML Veri TabanlarıGirisXQueryOrnek: DBXML

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 62: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XQuery

XPath: XML belgelerinden dugum ve veri cekme

XQuery: XPath + guncelleme islemleri

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 63: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XPath

aranılan dugumlerin yolu: yol adımları zinciri

kok dugumunden baslanarak (mutlak)bulunulan dugumden baslanarak (bagıl)

yol adımları / isaretleriyle ayrılır

Ornek

/movies/movie

cast/actor veya ./cast/actor

../../year

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 64: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XPath

aranılan dugumlerin yolu: yol adımları zinciri

kok dugumunden baslanarak (mutlak)bulunulan dugumden baslanarak (bagıl)

yol adımları / isaretleriyle ayrılır

Ornek

/movies/movie

cast/actor veya ./cast/actor

../../year

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 65: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

Yol Adımları

yol adımı yapısı:axis::node_selector[predicate]

eksen: nerede aranacak?

secici: ne aranacak?

yuklem: hangi kosula uyanlar aranacak?

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 66: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

Yol Adımları

yol adımı yapısı:axis::node_selector[predicate]

eksen: nerede aranacak?

secici: ne aranacak?

yuklem: hangi kosula uyanlar aranacak?

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 67: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

Eksenler

child: butun cocuklarda, bir duzey (varsayılan eksen)

descendant: butun cocuklarda, rekursif olarak(kısa gosterilim: //)

parent: anne dugumde, bir duzey

ancestor: butun anne dugumlerde, koke kadar

attribute: niteliklerde (kısa gosterilim: @)

following-sibling: sonra gelen kardeslerde

preceding-sibling: once gelen kardeslerde

...

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 68: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

Dugum Seciciler

dugum takısı

dugum niteligi

dugum metni: text()

dugumun butun cocukları: *

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 69: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XPath Ornekleri

Ornek

butun yonetmenlerin isimleri:/movies/movie/director/text()//director/text()

bu filmdeki butun oyuncular:./cast/actor.//actor

butun filmlerin renkleri://movie/@color

bundan sonraki filmlerin puanları:./following-sibling::movie/score

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 70: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XPath Ornekleri

Ornek

butun yonetmenlerin isimleri:/movies/movie/director/text()//director/text()

bu filmdeki butun oyuncular:./cast/actor.//actor

butun filmlerin renkleri://movie/@color

bundan sonraki filmlerin puanları:./following-sibling::movie/score

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 71: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XPath Ornekleri

Ornek

butun yonetmenlerin isimleri:/movies/movie/director/text()//director/text()

bu filmdeki butun oyuncular:./cast/actor.//actor

butun filmlerin renkleri://movie/@color

bundan sonraki filmlerin puanları:./following-sibling::movie/score

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 72: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XPath Ornekleri

Ornek

butun yonetmenlerin isimleri:/movies/movie/director/text()//director/text()

bu filmdeki butun oyuncular:./cast/actor.//actor

butun filmlerin renkleri://movie/@color

bundan sonraki filmlerin puanları:./following-sibling::movie/score

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 73: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XPath Yuklemleri

dugum sırası sınaması: [position]

cocuk varlıgı sınaması: [child_tag]

cocuk degeri sınaması: [child_tag="value"]

nitelik varlıgı sınaması: [@attribute]

nitelik degeri sınaması: [@attribute="value"]

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 74: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XPath Yuklemleri

dugum sırası sınaması: [position]

cocuk varlıgı sınaması: [child_tag]

cocuk degeri sınaması: [child_tag="value"]

nitelik varlıgı sınaması: [@attribute]

nitelik degeri sınaması: [@attribute="value"]

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 75: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XPath Yuklemleri

dugum sırası sınaması: [position]

cocuk varlıgı sınaması: [child_tag]

cocuk degeri sınaması: [child_tag="value"]

nitelik varlıgı sınaması: [@attribute]

nitelik degeri sınaması: [@attribute="value"]

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 76: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XPath Ornekleri

Ornek

birinci filmin baslıgı:/movies/movie[1]/title/text()

1997 yılında cekilmis filmler://movie[year="1997"]

siyah-beyaz filmler://movie[@color="BW"]

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 77: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XPath Ornekleri

Ornek

birinci filmin baslıgı:/movies/movie[1]/title/text()

1997 yılında cekilmis filmler://movie[year="1997"]

siyah-beyaz filmler://movie[@color="BW"]

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 78: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

XPath Ornekleri

Ornek

birinci filmin baslıgı:/movies/movie[1]/title/text()

1997 yılında cekilmis filmler://movie[year="1997"]

siyah-beyaz filmler://movie[@color="BW"]

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 79: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

Konular

1 Nesne Veri TabanlarıGirisNesne KimligiOrnek: db4o

2 Nesne-Bagıntı Veri TabanlarıGirisOrnek: Persist

3 XML Veri TabanlarıGirisXQueryOrnek: DBXML

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 80: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

Ornek: Oracle Berkeley DBXML

gomulu XML veri tabanı

XML belgeleri tutuyor

XQuery ile veri uzerinde islem yapılabiliyor

kendi istemcisi ile kullanılabiliyor

cesitli programlama dilleri icin arayuzleri var

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 81: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

DBXML Arayuzu

veri tabanı yaratma:

XmlManager nesnesi yaratılırXmlManager.createContainer(name) → XmlContainerbelge elemanı (kok) yerlestirilir:XmlContainer.putDocument(namespace, xml_string,

configuration)

var olan veri tabanına baglanma:

XmlManager nesnesi yaratılırXmlManager.existsContainer(name) != 0 iseXmlManager.openContainer(name) → XmlContainer

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 82: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

DBXML Arayuzu

veri tabanı yaratma:

XmlManager nesnesi yaratılırXmlManager.createContainer(name) → XmlContainerbelge elemanı (kok) yerlestirilir:XmlContainer.putDocument(namespace, xml_string,

configuration)

var olan veri tabanına baglanma:

XmlManager nesnesi yaratılırXmlManager.existsContainer(name) != 0 iseXmlManager.openContainer(name) → XmlContainer

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 83: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

DBXML Arayuzu

XmlManager.createQueryContext() → XmlQueryContext

XmlQueryContext.setNamespace(namespace, URL)

sorgu katarı: collection(name)/xpath_expression

sorgunun calıstırılması:XmlManager.query(query, context) → XmlResults

XmlResults yineleyicisinin her bir elemanı bir XmlValue

getFirstChild(), getLastChild(), getNextSibling(),...

karakter verisi: getNodeValue() → String

nitelikler: XmlValue.getAttributes() → XmlResults

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 84: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

DBXML Arayuzu

XmlManager.createQueryContext() → XmlQueryContext

XmlQueryContext.setNamespace(namespace, URL)

sorgu katarı: collection(name)/xpath_expression

sorgunun calıstırılması:XmlManager.query(query, context) → XmlResults

XmlResults yineleyicisinin her bir elemanı bir XmlValue

getFirstChild(), getLastChild(), getNextSibling(),...

karakter verisi: getNodeValue() → String

nitelikler: XmlValue.getAttributes() → XmlResults

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 85: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

DBXML Arayuzu

XmlManager.createQueryContext() → XmlQueryContext

XmlQueryContext.setNamespace(namespace, URL)

sorgu katarı: collection(name)/xpath_expression

sorgunun calıstırılması:XmlManager.query(query, context) → XmlResults

XmlResults yineleyicisinin her bir elemanı bir XmlValue

getFirstChild(), getLastChild(), getNextSibling(),...

karakter verisi: getNodeValue() → String

nitelikler: XmlValue.getAttributes() → XmlResults

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 86: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

DBXML Ornekleri

Ornek (veri tabanına baglantı)

db = new XmlManager ();XmlContainer container = null;if (db.existsContainer("imdb.dbxml") != 0)

container = db.openContainer("imdb.dbxml");else {

container = db.createContainer("imdb.dbxml");container.putDocument("movies",

"<movies />",(XmlDocumentConfig) null);

}

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 87: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

DBXML Ornekleri

Ornek (film nesnesini XML katarına cevirme)

public static String toXml(Movie movie) {StringBuffer buffer = new StringBuffer ();buffer.append("<movie >");buffer.append("<title >"

+ movie.getTitle () + "</title >");buffer.append("<year >"

+ movie.getYear (). toString () + "</year >");buffer.append("</movie >");return buffer.toString ();

}

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 88: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

DBXML Ornekleri

Ornek (XML dugumunu film nesnesine cevirme)

private static Movie fromNode(XmlValue node)throws XmlException {

XmlValue tn = node.getFirstChild ();String title =

tn.getFirstChild (). getNodeValue ();XmlValue yn = tn.getNextSibling ();String yearValue =

yn.getFirstChild (). getNodeValue ();Integer year = Integer.parseInt(yearValue );Movie movie = new Movie(title);movie.setYear(year);return movie;

}H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 89: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

DBXML Ornekleri

Ornek (sorgulama: butun filmler)

XmlQueryContext context = ...;context.setNamespace (...);String query =

"collection (\" imdb.dbxml \")/ movies/movie";XmlResults results = db.query(query , context );if (results.hasNext ()) {

XmlValue node = results.next ();Movie movie = fromNode(node);...

}results.delete ();

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 90: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

DBXML Ornekleri

Ornek (ekleme)

Movie m = new Movie("Casablanca");m.setYear (1942);

XmlQueryContext context = ...;context.setNamespace (...);String query = "insert nodes " + toXml(m)

+ " into collection (\" imdb.dbxml \")/ movies";XmlResults results = db.query(query , context );results.delete ();

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri

Page 91: Veri Tabanı Sistemleri - Nesne Veri Tabanları

Nesne Veri TabanlarıNesne-Bagıntı Veri Tabanları

XML Veri Tabanları

GirisXQueryOrnek: DBXMLKaynaklar

Kaynaklar

Okunacak: Date

Chapter 27: The World Wide Web and XML

H. Turgut Uyar, Sule Oguducu Veri Tabanı Sistemleri