19.07.2013 Views

Semantik Ağ ve Üst Veri Sistemleri İçin Yeni Nesil Veri Tabanı ...

Semantik Ağ ve Üst Veri Sistemleri İçin Yeni Nesil Veri Tabanı ...

Semantik Ağ ve Üst Veri Sistemleri İçin Yeni Nesil Veri Tabanı ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Semantik</strong> <strong>Ağ</strong> <strong>ve</strong> <strong>Üst</strong> <strong>Veri</strong> <strong>Sistemleri</strong> <strong>İçin</strong><br />

<strong>Yeni</strong> <strong>Nesil</strong> <strong>Veri</strong> <strong>Tabanı</strong> Yönetim Modeli:<br />

NoSQL<br />

R. Orçun Madran<br />

Atılım Üni<strong>ve</strong>rsitesi<br />

www.madran.net


İçerik<br />

● NoSQL Ne Değildir?<br />

● Neden NoSQL?<br />

● Ne Zaman NoSQL?<br />

● NoSQL'in Tarihçesi.<br />

● NOSQL <strong>Veri</strong> <strong>Tabanı</strong> Kategorileri<br />

● Doküman Deposu<br />

● JSON & BSON<br />

● Örnek <strong>Veri</strong> <strong>Tabanı</strong>: MongoDB<br />

● Soru & Cevap


NoSQL Ne Değildir?<br />

● Klasik "İlişkisel <strong>Veri</strong> Modeli"ni kullanmaz.<br />

● <strong>Veri</strong>ler, tablolar içindeki satırlarda<br />

depolanmaz.<br />

● <strong>Veri</strong> işleme SQL adı <strong>ve</strong>rilen sorgulama dili ile<br />

yapılmaz.<br />

● <strong>Veri</strong>ye erişim karmaşık birleştirme (Join)<br />

işlemleri ile sağlanmaz.<br />

● İlişkisel <strong>ve</strong>ri modeli alternatifi değildir,<br />

● ACID (Ya Hep Ya Hiç) garantisi <strong>ve</strong>rmez.


ACID - Ya Hep Ya Hiç<br />

● Atomicity: Ya hep ya hiç kuralını sağlar.<br />

● Consistency: <strong>Veri</strong> uygunluğunu garanti eder.<br />

● Isolation: Eş zamanlı işlem kontrolü.<br />

● Durability: Yapılan değişikliklerin (işlemlerin)<br />

gerçekleşeceği garantisini <strong>ve</strong>rir.


ACID - Ya Hep Ya Hiç (Özet)<br />

İşlemler kuyruktayken<br />

sabit diskte depolanır<br />

(geneneksel <strong>ve</strong>ritabanları)<br />

İşlemler kuyruktayken<br />

geçici bellekte depolanır<br />

(NoSQL <strong>ve</strong>ritabanları)


Neden NoSQL?<br />

● Çok yüksek işlem trafiğine sahip ağ tabanlı<br />

uygulamalardaki performans artışı,<br />

(Twitter, Facebook vb.)<br />

● Dağıtık <strong>ve</strong>ri mimarisi konusunda esneklik,<br />

● Yük dengeleme açısından ölçeklenebilirlik,<br />

● Kayıt bazında <strong>ve</strong>ri alanı özelleştirmesi.


Ne Zaman NoSQL?<br />

● Uygulama performansı işlem tutarlılığından<br />

daha önemli olduğunda,<br />

● Uygulamanın koştuğu sunucuların sürekli<br />

artışı (ya da duruma göre) öngörülüyorsa,<br />

● Çok büyük <strong>ve</strong>ri yığınları ile çalışılıyorsa.<br />

● <strong>Üst</strong> <strong>ve</strong>ri <strong>ve</strong> doküman yönetimi üzerinde<br />

deneysel çalışmalar amaçlanıyorsa ;)


NoSQL'in Tarihçesi<br />

● NoSQL kavramı ilk kez 1998'de ortaya çıktı,<br />

● İlişkisel model kullanılmadığı için NoREL,<br />

● 2009 yılında yeniden ortaya çıktı,<br />

● 2011 yılında SQL yerine UnQL<br />

(Yapılandırılmamış Sorgu Dili) üzerinde<br />

çalışılmaya başlandı.


NoSQL Neden Bana Sıcak Geliyor ;)<br />

UnQL (Doküman <strong>Veri</strong>tabanları) ile birlikte:<br />

● Tablolar yerine Koleksiyonlar (Collections),<br />

● Satırlar yerine Dokümanlar (Documents),<br />

● Sütunlar yerine de Alanlar (fields),<br />

kullanılmaya başlandı.


NoSQL <strong>Veri</strong> <strong>Tabanı</strong> Kategorileri<br />

Yoğunlaşılan kategoriler:<br />

● Doküman Deposu (Document Store)<br />

○ Doküman-tabanlı <strong>Veri</strong> Tabanları<br />

○ XML <strong>Veri</strong> Tabanları<br />

● Çizelge (Graph)<br />

● Anahtar-değer Deposu (Key-valued Store)<br />

Tüm kategori listesi: http://en.wikipedia.org/wiki/NoSQL


Doküman Deposu (Document Store)<br />

● Doküman Deposu yaklaşımının merkezinde<br />

"Doküman"'nın kendisi yer alır.<br />

● Yarı-yapılandırılmış bir platform olarak<br />

tanımlanır.<br />

● Standart bir "Şema" kullanımı yoktur.


Dokümanın Kodlanması<br />

Dokümanın kodlanması (encode) için:<br />

● XML<br />

● YAML<br />

● JSON


İkili Düzende Erişim (Binary Forms)<br />

Dokümana fiziksel erişimi için:<br />

● BSON<br />

● PDF<br />

● Microsoft Ofis Dokümanları<br />

● HTML vb.


Doküman (Kayıt / Record) Yapısı<br />

{<br />

}<br />

{<br />

}<br />

AdıSoyadı: "Umut Al",<br />

ePosta: "umutal@hacettepe.edu.tr"<br />

AdıSoyadı: "Yaşar Tonta",<br />

ePosta: "tonta@hacettepe.edu.tr"<br />

Eğitim: [<br />

{Derece: "Doktora", Kurum: "Berkeley", Yıl:"1992"},<br />

{Derece: "Y. Lisans", Kurum: "Wales", Yıl:"1986"},<br />

{Derece: "Lisans", Kurum: "Hacettepe", Yıl:"1981"},<br />

]


Doküman Tabanlı VS İlişkisel VT<br />

● Boş alanlar doküman içinde yer almıyor.<br />

● Doküman alanları birbiri ile aynı ya da farklı<br />

olabiliyor.<br />

● <strong>Yeni</strong> bir alan yapısal bir değişikliği<br />

gerektirmiyor.<br />

● Dokümana yeni bir alan eklenmesi <strong>ve</strong> / <strong>ve</strong>ya<br />

çıkarılması çok hızlı bir şekilde<br />

gerçekleştirilebiliyor.


Anahtarlar (Keys)<br />

● Her bir doküman <strong>ve</strong>ri tabanındaki eşsiz bir<br />

anahtar yardımıyla adreslenir.<br />

● Bu anahtar genelde metin tabanlı bir yapıya<br />

sahiptir.<br />

● Anahtar Web adresinden ya da sabit disk<br />

üzerindeki bir patikadan oluşabilir.<br />

● Bu şekilde anahtar dokümana erişim için de<br />

kullanılır.


Erişim<br />

● Sorgulama dili ile,<br />

● <strong>Veri</strong> tabanının uygulama arayüzü (API) ile


Organizasyon<br />

● Koleksiyonlar<br />

● Etiketler<br />

● Görünmeyen <strong>Üst</strong> <strong>Veri</strong><br />

● Hiyerarşik Klasörler


Doküman Tabanlı <strong>Veri</strong> Tabanları<br />

Mongo DB - BSON <strong>ve</strong>ri depolama (JSON)


MongoDB - http://www.mongodb.org/


BSON - http://bsonspec.org/


MongoDB - http://www.mongodb.org/ - TRY IT OUT


Teşekkürler<br />

R. Orçun Madran<br />

Atılım Üni<strong>ve</strong>rsitesi<br />

www.madran.net

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!