NoSQL
NoSQL Databases
Cihan Özhan | DeepLab.co | Founder, AI Engineer, Mentor
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.
Motivasyon
• Tasarım Sadeliği
• Yatay Ölçeklendirme (Horizontal Scaling)
• Erişilebilirlik
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üşüş.
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
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
NoSQL Veritabanı Türleri
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.
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
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.
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.
RDBMS’in Eksiklikleri
• Yapılandırılmış veriler için kullanışlıdır.
• Veri Patlaması
• JOIN’lerin Ek Yükü
• İlişkileri(Relationships) yönetmek zor.
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.
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.
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.
NoSQL vs. RDBMS
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)
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.
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

MongoDB - NoSQL Overview

  • 2.
    NoSQL NoSQL Databases Cihan Özhan| DeepLab.co | Founder, AI Engineer, Mentor
  • 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.
  • 4.
    Motivasyon • Tasarım Sadeliği •Yatay Ölçeklendirme (Horizontal Scaling) • Erişilebilirlik
  • 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
  • 8.
  • 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ı • Sorgudilini 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ğunluklaRDBMS’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.
  • 14.
    RDBMS’in Eksiklikleri • Yapılandırılmışveriler için kullanışlıdır. • Veri Patlaması • JOIN’lerin Ek Yükü • İlişkileri(Relationships) yönetmek zor.
  • 15.
    CAP Theorem • Brewer’sTeoremi 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 TeoremininKombinasyonları) • 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 • BASEkı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.
  • 18.
  • 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