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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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