COUCHBASE
NOSQL VERİ TABANI
TARİHÇE
CouchDB IBM lotus
Notes geliştiricisi olan Damien Katz
tarafından 2005 yılı Nisan ayında oluşturulan bir projedir. En başta Damien
Katz bu projeyi “büyük ölçekli nesne veritabanı için bir depolama sistemi”
olarak tanımladı.Onun temel hedefi büyük bir internet veritabanı yaratmak ve
bunu da web uygulamaları üzerinde dizayn etmek olmuştur.Projesini iki yıl
boyunca GNU Genel Kamu Lisansı altında bir açık kaynak projesi olarak piyasaya
sürdü 2008 şubat ayında bir Apache inkübator projesi oldu lisansı Apache
Lisansı olarak değiştirildi.Bundan birkaç ay sonra bir üst proje için mezun
olan Damien Katz 2012 nin başlarında Couchbase’e odaklanmak için projeden ayrıldı
ve Couchbase geliştirmesine devam etti.
ÖZELLİKLER
CouchDB kullanımı kolay olan ve tamamen Web i kucaklayan
açık bir kaynaktır.CouchDB bir NOSQL veritabanıdır. Veri depolamak için en
başta JavaScript kullanılmıştır,daha sonra .NET,PHP,RUBY ,C ve PHYTON dilleri
de kullanılmıştır.Bir ilişkisel veritabanı aksine CouchDB veri ve tablolar
arasındaki, ilişkileri saklamaz. Bunun yerine her veritabanı bağımsız belgeler
topluluğu oluşturur. Her doküman kendi veri ve kendi şemasını tutar ve böylece
bir uygulama çoklu verilere ulaşabilir. Örneğin başka bir sunucudaki bir
kişinin ceptelefonunda saklanan verilere ulaşmak gibi. Belgeler metadata ve revizyon gibi
bilgileri içerir.CouchDB dosyaları yazdırırken veritabanı kilitlenmesi gibi
durumlardan korunmak için MVCC(Multi-Version Concurrency Control) biçimi
uygular. Veriler arasındaki çatışmalar bir uygulamanın çözümüne bırakılmıştır.
Çatışmaların çözümünde genellikle belgelerin içinde ilk olarak veri
birleştirmesi yapılır daha sonra eski veri silinir.
Maddeler halinde genel özellikler:
-Belge
Depolama(Document Storage)
CouchDB “belgeler” olarak verileri saklar.Bir veya daha
fazla alan/değer olarak veriler tutulur.
Alan değerleri dizeler,numaralar veya tarihler şeklinde olabilir ama bunun
yanında da sipariş listeleri ve ilişkisel dizeler de kullanılabilir.CouchDB
içindeki her bir belgenin benzersiz bir kimliği(id) vardır ama gerekli belge
şemaları yoktur.
-Asit Anlambilim(ACID
Semantics)CouchDB Asit Anlambilimi sağlar.Bunu bir formu uygulayarak
Çoklu-Model Eşzamanlılık Kontrolü yapar.Bunun anlamı ise CouchDB içsel bir çatışma
olmadan yüksek hacimli okuyucuları ve yazıcıları işleyebilir.
-Harita/Görüntüleme
ve Dizinleri Azaltmak(Map/Reduce and Views and Indexes)
Depolanan veri kullanıcı görünümleri kullanılarak
yapılandırılmıştır.CouchDB içinde her bakış JavaScript donksiyonları tarafından
yapılmıştır ve bu bir Haritanın Yarısı/Operasyonların Azaltılması gibi
davranabilir.Fonksiyon bir belge alır ve onu döndüren tek bir değere
dönüştürür.CouchDB index görünümler olabilir ve bir belgenin eklenmesi
,taşınması ve güncellenmesini sağlar.Kısacası belgeleri güncel olarak tutar.
-Çoğaltma ve
Dağıtılmış Mimari(Distributed Architecture with Replication)
CouchDB iki yönde çoğaltma(veya senkronizasyon) ve akıldaki
çevrimdışı işlemler olarak tasarlanmıştır. Bunun temel anlamı Çoklu kopyalamalar
aynı verilerin kopyalarını oluşturabilir ve daha sonra bu değişiklikleri
senkronize edebilir.
--Temsili
Durum Transferi (Rest
API)
Tüm öğeler tek bir URL ye sahiptir ve bunlar HTTP REST üzerinden POST,GET,PUT ve
DELETE metodlarını 4 temel CRUD(create,read,update,delete)
için kullanırlar.
--Nihai
Tutarlılık(Eventual Consistency)
CouchDB bölüm toleransları ve kullanabilirlik sunmak için
nihai tutarlılığı garanti eder.
-- Çevrimdışı için
tasarlandı( Built For Offline)
CouchDB cihazları çoğaltabilir(akıllı telefonlar ), cihaz
çevrimdışı olabilir ve cihaz tekrar çevrimiçi olduğunda veriler senkronize
edilebilir.
--Şema Gereksinimi
duyulmaz(No Schema Required)
Veriler şema tanımlanmadan bir NOSQL veri tabanına
yerleştirilebilmektedir.Sonuç olarak eklenmiş olan verinin formatı uygulama
kesintisi olmaksızın herhangi bir zamanda değiştirilebilir.Bu da önemli bir iş
esnekliği sunar ve muazzam uygulama esnekliği sağlar
Esneklik(Auto-Sharding)
Bir NOSQL veritabanında uygulamalara katılmadan otomatik
olarak sunucular arasında veri yayılır.
Uygulama kesintisi olmadan sunucular ,veri katmanına eklenip
çıkarılabilir.Couchbase in en önemli özlliklerinden birisi esnek olmasıdır.
Yani birden çok couchbase server birbirleriyle bağlantılı bir şekilde
çalışabilir.Programdaki veriler bağlanılan sunucular arasında paylaştırılır ve
bu şekilde RAM kapasitesi de dengelenebilir.
Couchbase ‘i oluşturan
iki temel yapı CouchOne ve Membase
CouchOne(CouchDB):
CouchDB B ağaç yapısının bir versiyonu olan oldukça hıza
sahip B+ ağaç yapısını kullanmaktadır.B+ çok büyük miktarlarda veri saklmak ve
bu verilere çok hızlı ulaşmasını sağlayan mükemmel bir veri yapısıdır.B
ağaçları genellikle sığ ama geniş bir veri yapısına sahiptir.B ağaçlarında girdiler
milyonlarca ,tek basamaklı bir yüksekliğe sahip olabilir.Couch DB için ilginç
olan tarafı ise bu ağacın yaprakları bir sabit disk gibi yavaş bir ortamda
saklanır.
CouchDB de B-tree
uygulanması orjinalinden biraz farklıdır ,yani B-tree nin tüm önemli
özellikleri korunurken bir MVCC ve birde tasarım eklenir bu yapıya.B ağaçlar
ana veritabanı dosyalarını indexler şeklinde depolamak için kullanılır.Bir
veritabanı içintek B tree ve bir index görünümü için tek B tree vardır.MVCC
eşzamanlı izin okumaya ve kilitleme sistemi olmadan yazmaya izin verir.Bu
şekilde yazılar seri bir şekilde yazılır ve bir veritabanı için sadece bir yazı
işlemine izin verilir. Yaz işlemleri okuru engellemez ve herhangi bir zamanda
okuma işlemi yapılabilir.Her okuma işlemi veritabanının tutarlılığını gösterir.
Membase:
Dağıtık nesne deposu:
Kolayca depolanabilir veherhangi bir uygulama gerekmeden çok
sayıda veriyi alabilir.
Dinamik küme
boyutlandırması ve dengelenmesi:
Kolayca büyür ve Membase kümelerini küçültür,bir uygulamanın
veri yönetimi değişimlerini uyum sağlar.
Garantili veri
tutarlılığı:Uygulama da asla verilerin tutarlılığı garantisi verilmektedir.
Düşük öngürülebilir
gecikme:
Belek dışında çalışırken çoğu işlemler 1ms”den daha az
sürede gerçekleşir
Membase verilerin önbelleğe
alınması ve kümeleme teknolojileirin lideri durumundaydı
CouchOne:çok
güvenilir ve tüm özellikleri barındıran belge veritabanıdır.
Couchbase: bu
ikisinin birleşmesiyle oluşan Couchbase çok hızlı ve en güvenilir NoSQL
veritabanı durumuna gelmiştir
Couchbase Mobil
CouchOne ve MemBase’nin birleşmesiyle oluşan NOSQL
veritabanı şirketi CouchBase IOS beta sürümü için Mobile CouchBase’n hazır
olduğunu duyurdu. Mobile CouchBase Apache CouchDB ile
güçlendirilmiştir.CouchBase ailesine katılan Mobil CouchBase yerli İOS uygulama geliştiricileri ve mobile-cloud veri
senkronizasyonu sağlayan tek NOSQL veritabanıdır. Mobile CouchBase ile
geliştiriciler ,ağ bağlantısı kullanılabilir olduğunda otomatik olarak bir
bulut yada veri merkezi dağıtılan CouchBase yerel olarak depolanan verileri
senkronize ederek IOS uygulamalar geliştirebilmektedir.
CouchBase teknolojisi ölçeklenebilir web ve mobil uygulamalar
geliştirmek için en kapsamlı veri yönetimi çözümünü temsil eder.bunun yanında
esnek kümeleme ,sağlam depolama yönetimi ve sürekli artan yüksek
performansı sistem yöneticileri ve
operatörler tarafından sağlanılır.
IOS için Mobile CouchBase uygulama geliştirmede büyük bir
sorunu çözer,yani uygulamaların mobile aletlere senkronize çalışmasını
sağlar.Sync çözülememiş bir sorun olmuştur. Ağ sorunları olsa bile kullanıcılar
genellikle yavaş uygulamalar tarafından kapatılır. Ama CouchBase sayesinde
artık geliştiriciler herhangi bir mobil cihaz üzerinden rahat bir şekilde veri
paylaşabilir.Bu yüzden Mobile CouchBase NOSQL alanında lider hale gelmiştir.
Hiç yorum yok:
Yorum Gönder