3. NoSQL Nedir?
• NoSQL, temelde büyük, yapılandırılmamış veri kümelerini yönetmek için kullanılan bir veritabanıdır.
• NoSQL, SQL benzeri sorgu dillerini de destekleyebileceklerini vurgulamak için "Yalnızca SQL" olarak da
adlandırılır.
• NoSQL veritabanları, büyük verilerde ve gerçek zamanlı web uygulamalarında giderek daha fazla
kullanılmaktadır.
• NoSQL, birden çok sanal sunucuda kullanıma sunulan çok büyük bir veri kümesine erişmesi ve bunları
analiz etmesi gereken kurumsal bir uygulamada hayati bir rol oynar.
• NoSQL veritabanı, İlişkisel Veritabanlarında görülen Performans, Ölçeklenebilirlik, Veri Modelleme ve
Dağıtım sınırlamalarının üstesinden gelmek için tasarlanmıştır.
5. Veritabanı Tarihi
• 1970'lerin İlişkisel veritabanları icat edildi.
– Pahalı Depolama
– Normalleştirilmiş Veriler
• 1980'lerin RDBMS'si ticarileştirildi.
– Client/Server Model
– SQL’ın standart olması
• 1990’larda birşeyler değişmeye başlar.
– Client/Server 3-Tier Mimari
– İnternet ve Web’in Yükselişi
• 2000’ler Web 2.0
– Sosyal media ve E-Ticaret’in yükselişi!
– Hardware fiyatlarındaki sürekli düşüş.
6. Yeni Bir Veritabanı Türü İhtiyacı
• Yatay Ölçeklendirme
• Hızlı Geliştirme
• Esnek Veri Modeli
• Düşük Maliyet
– Düşük Sunucu Maliyeti
– Düşük Yönetim Maliyeti
7. NoSQL Özellikleri
• Yüksek ölçeklenebilirlik
• SQL Sınırlamalarının Önüne Geçmek
• Büyük Veri Hacimleri
• Yüksek Veri Ölçeklendirme
• ACID özelliklerine ihtiyaç duymaz
• Asenkron INSERT ve UPDATE
• Büyük Veri Hacimleri
10. NoSQL Veritabanı Türleri
• Key-Value
– It uses a hash table in which there exists a unique key and a pointer to a particular item of data.
– There can be identical keys in different buckets.
• Örn : Redis and Riak
• Column-Oriented
– Veriler, veri satırları yerine veri sütunlarında gruplanmış hücrelerde depolanır.
– Çalışma zamanında oluşturulabilen neredeyse sınırsız sayıda sütun içerebilir.
• Örn : Hbase and Cassandra
• Document-Oriented
– Belge odaklı bilgileri depolamak, almak ve yönetmek için tasarlanmıştır.
– It pair each key with a complex data structure known as a document.
• Örn : CouchDB and MonoDB
• Graph Store
– Sosyal bağlantılar gibi ağ hakkındaki bilgileri depolamak için kullanılır.
– Veriler sosyal ilişkiler, toplu taşıma bağlantıları, yol haritaları vb. Olabilir.
11. NoSQL Faydaları
• Sorgu dilini destekler.
• Yatay ölçeklenebilirlik sağlar.
• Yüksek ölçeklenebilirlik sağlar.
• Elastik Ölçeklendirme
• JOIN’lerden Kaçınmak
• Verinin Şemalara Uymasına Gerek Yok
• Hızlı ve Kolay Geliştirme
• Ağ Sorunlarıyla Başa Çıkma Kabiliyeti
• Düşük Gecikme ve Yüksek Performans
• NoSQL Sunucularının Bakımı Daha Ucuz ve Kolaydır
• Entegre Cache Kabiliyeti
12. Ne Zaman NoSQL?
• Büyük miktarda veriyi saklamak ve almak istediğinizde.
• Sakladığınız veriler arasındaki ilişki o kadar da önemli değilse.
• Veriler yapılandırılmaz ve zamanla değişmez.
• Constraint ve JOIN desteği veritabanı düzeyinde gerekli değilse.
• Veriler sürekli olarak büyüyor ve verileri işlemek için veritabanını düzenli olarak ölçeklendirmeniz
gerekiyorsa.
13. ACID Özellikleri
• Çoğunlukla RDBMS’ler, İ.V. Yönetimi ve veri işleme için standart bir bilgisayar dili olan SQL'i kullanır.
• İlişkisel veritabanları ACID özelliklerini takip eder:
– Atomicity, Consistency, Isolation, Durability
– Atomiklik, Tutarlılık, İzolasyon, Dayanıklılık
• ACID, veritabanı işlemlerinin güvenilir şekilde işlenmesini garanti eden bir dizi özelliktir.
– Atomicity
• Atomiklik özelliği, işlemin atomik olduğunu tanımlar. Atomik bir işlem ya tamamen
tamamlandı ya da hiç başlamadı.
– Consistency
• Bir örnekteki değerlerde yapılan herhangi bir değişikliğin, aynı örnekteki diğer değerlerdeki
değişikliklerle tutarlı olmasını sağlar.
– Isolation
• Eşzamanlı işlemler olduğunda gereklidir. Paylaşılan nesnelere erişen birden fazla kullanıcının
paylaşılması gibi aynı anda gerçekleşen işlemler.
– Durability
• Bir işlem, başarılı bir şekilde tamamlandığında, sistemde yaptığı tüm değişikliklerin kalıcı
olması açısından dayanıklıdır.
15. CAP Theorem
• Brewer’s Teoremi olarak da bilinen CAP Teoremi, dağıtık bir bilgisayar sisteminin aşağıdaki garantilerin
tümünü aynı anda sağlamasının imkansız olduğunu belirtir:
– Consistency : Tüm düğümler aynı verileri aynı anda görür.
– Availability : Her istek, başarılı olup olmadığı hakkında bir yanıt alır.
– Partition-Tolerance : The system continues to operate even if there is a partition between
two nodes.
• Temelde bunlardan 2'sini seçebilirsiniz ama 3'ünü birden yapamazsınız.
16. CAP Theorem
(CAP Teoreminin Kombinasyonları)
• CA : Tek site kümesi, tüm düğümler her zaman ACID ile CA'ya odaklanır
• AP : Some data may be inaccurate BASE focus on AP.
• CP : Bazı verilere erişilemeyebilir.
17. BASE Properties
• BASE kısaltması, genellikle NoSQL veritabanları olmak üzere belirli veritabanlarının özelliklerini
tanımlamak için kullanılır.
• Genellikle ACID'e bir alternatiftir.
• BASE sistemi, daha fazla Availability ve Partition toleransına sahip olmak için tutarlılıktan vazgeçer.
• BASE consists of three principles:
– Basic Availability
• NoSQL veritabanı yaklaşımı, birden çok arıza durumunda bile verilerin kullanılabilirliğine
odaklanır.
– Soft-State
• It indicates that the state of the system may change over time, even without input.
• Bunun nedeni nihai tutarlılık modelidir.
– Evantual Consistency
• It indicates that the system will become consistent over time, given that the system doesn't
receive input during that time.
19. NoSQL vs. RDBMS
• Relationship ve JOIN içermez.
• Çok daha düşük bakım maliyeti.
• ACID yerine BASE kullanır.
• Yatay ölçekleme sağlar.(Horizontal Scaling)
• Şema içermez(Schemaless)
20. NoSQL vs. RDBMS
• Kaynak maliyetli JOIN ve Relationship’ler kullanır.
• Yüksek yönetim maliyeti
• ACID özelliklerini kullanır
• Dikey Ölçekleme(Vertical Scaling)
• Tanımlanmış özniteliklere sahip yapı gerektirir.
21. Neden NoSQL Kullanmalı?
• Eğer ölçeklenebilirlik bir endişe ise…
• Daha sade veri modeli(JOIN’siz)
• Çok düşük bir bütçeyle uygulama ve ölçeklenmiş olması gerekiyor ise…
• Gerçek Zamanlı Analizler
• Dağıtık Depolama
• Esneklik sağlar
• Hızlı geliştirme sağlar
• Redundancy/Reliability
• Streaming/Volume