Sayfalar

9 Temmuz 2012 Pazartesi

Couchbase NoSQL Veritabanı



                                       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