NoSQL veri tabanı nedir?
NoSQL veri tabanları, belirli veri modelleri için özel olarak tasarlanmıştır ve modern uygulamalar için kolayca ölçeklenebilen esnek şemalarla veri depolar. NoSQL veri tabanları uygun ölçekte geliştirme kolaylığı, işlevselliği ve performansıyla geniş çapta kabul görmüştür. Bu sayfa, NoSQL veri tabanlarını daha iyi anlamanıza ve kullanmaya başlamanıza yardımcı olacak kaynaklar içermektedir.
NoSQL veri tabanlarının avantajları nelerdir?
Modern uygulamalar, NoSQL veri tabanları ile çözülebilecek çeşitli zorluklarla karşı karşıyadır. Örneğin, uygulamalar sosyal medya, akıllı sensörler ve üçüncü taraf veri tabanları gibi farklı kaynaklardan büyük bir veri hacmi işler. Tüm bu farklı veriler ilişkisel modele tam olarak uymaz. Tablo yapılarının uygulanması; yedeklilik, veri çoğaltma ve büyük ölçekte performans sorunlarına yol açabilir.
NoSQL veritabanları, ilişkisel olmayan veri modelleri için özel olarak tasarlanmıştır ve modern uygulamalar oluşturmaya yönelik esnek şemalara sahiptir. Bunlar büyük ölçekte geliştirme kolaylığı, işlevselliği ve performansıyla geniş çaplı olarak kabul görmüştür. NoSQL veritabanlarının faydaları aşağıda listelenmiştir.
Esneklik
NoSQL veritabanları genellikle daha hızlı ve daha fazla yinelemeli yazılım geliştirmeyi mümkün kılan esnek şemalar sağlar. Esnek veri modeli sayesinde NoSQL veritabanları yarı yapılandırılmış ve yapılandırılmamış veriler için idealdir.
Ölçeklenebilirlik
NoSQL veritabanları genellikle pahalı ve güçlü sunucular eklenerek ölçeği artıracak şekilde değil, dağıtılmış donanım kümeleri kullanarak ölçeği genişletecek şekilde tasarlanır. Bazı bulut sağlayıcıları bu işlemleri arka planda, tam olarak yönetilen bir hizmet olarak gerçekleştirir.
Yüksek performans
NoSQL veritabanları, belirli veri modelleri ve erişim yöntemleri için optimize edilmiştir. Bunlar, ilişkisel veritabanlarıyla benzer işlevleri gerçekleştirmeye çalışmanıza nazaran daha yüksek performans sağlar.
Yüksek oranda işlevsel
NoSQL veritabanları, her biri ilgili veri modeli için özel olarak tasarlanmış yüksek oranda işlevsel API'ler ve veri türleri sağlar.
NoSQL veritabanlarının kullanım örnekleri nelerdir?
Uygun ölçekte harika kullanıcı deneyimleri sağlayan çok çeşitli yüksek performanslı mobil, Nesnelerin İnterneti (IoT), oyun ve web uygulamaları oluşturmak için NoSQL veritabanlarını kullanabilirsiniz. NoSQL veritabanları yelpazesi ve ilgili kullanım örnekleri geniş kapsamlıdır. Temsili bir dizi kullanım senaryosu sunmak zor olsa da aşağıda düşünce tetikleyici olarak birkaç açıklayıcı örnek sunuyoruz ve sizi her NoSQL veritabanı ve ilgili kullanım örnekleri hakkında daha fazla bilgi edinmeye teşvik ediyoruz.
Gerçek zamanlı veri yönetimi
NoSQL veritabanları ile gerçek zamanlı öneriler, kişiselleştirme ve geliştirilmiş kullanıcı deneyimleri sunabilirsiniz. Örneğin Disney+, NoSQL veritabanı teknolojisini kullanarak kapsamlı dijital içerik kitaplığını 150 milyondan fazla aboneye sunuyor. Amazon DynamoDB sayesinde İzlemeye Devam Et, İzleme Listesi ve Kişiselleştirilmiş Öneriler gibi popüler özellikleri ölçeklendirerek sunabiliyor.
Bulut güvenliği
Verilerinizdeki karmaşık ilişkileri hızlı bir şekilde keşfetmek için grafik veritabanlarını kullanabilirsiniz. Örneğin Wiz, Amazon Neptune'u kullanarak bulut güvenliğini bir grafik olarak yeniden tasarladı. Wiz, en kritik riskleri hızlı bir şekilde belirleyip düzelterek müşterilerinin güvenlik duruşlarını iyileştirmelerine yardımcı oluyor. Şirket, kritik risk teşkil eden risk faktörlerinin toksik kombinasyonunu ortaya çıkarmak için Amazon Neptune'da depolanan grafik modelini kullanıyor. Wiz risk altyapıları, grafiği dikkatle inceliyor ve saniyeler içinde bir dizi birbirine bağlı risk faktörünü bir güvenlik grafiğinde birleştiriyor.
Yüksek erişilebilirlik içeren uygulamalar
Dağıtılmış NoSQL veritabanları; mesajlaşma, sosyal medya, dosya paylaşımı ve daha fazlasına yönelik olarak yüksek erişilebilirlik, düşük gecikme içeren uygulamalar oluşturmak için mükemmeldir. Örneğin Snapchat, günde milyarlarca resim ve video mesajı gönderen 290 milyondan fazla kullanıcıya sahip. Şirket, mesaj göndermeye ilişkin ortalama gecikme süresini %20 azaltmak için NoSQL veritabanı sistemlerini kullanıyor.
NoSQL veritabanları nasıl çalışır?
NoSQL veri tabanlarında, verilere erişmek ve onları yönetmek için çeşitli veri modelleri kullanılır. Bu tür veri tabanları, özellikle esnek veri modelleri, büyük veri hacmi ve düşük gecikme süresi gerektiren uygulamalar için optimize edilmiştir. Bu gereksinimler, ilişkisel veri tabanı veri tutarlılığı kısıtlamalarının bir kısmı esnetilerek karşılanır. Veri modeline bağlı olarak uygulamada farklılıklar bulunur. Bununla birlikte, birçok NoSQL veritabanı, verileri ad-değer çiftleri koleksiyonu olarak temsil eden açık bir veri değişim biçimi olan Javascript Nesne Notasyonu'nu (JSON) kullanır.
NoSQL veritabanı örneği
Basit bir kitap veritabanının şemasını modelleme örneğini ele alalım:
- İlişkisel bir veri tabanında, genellikle bir kitap kaydı parçalarına ayrılarak (veya "normalleştirilerek") ayrı tablolarda depolanırken, ilişkiler birincil ve yabancı anahtar kısıtlamalarıyla tanımlanır. Bu örnekte Books (Kitaplar) tablosu ISBN, Book Title (Kitap Başlığı) ve Edition Number (Baskı Sayısı) sütunlarına; Authors (Yazarlar) tablosu AuthorID (Yazar Kimliği) ve Author Name (Yazar Adı) sütunlarına; Author-ISBN (Yazar-ISBN) tablosu ise AuthorID (Yazar Kimliği) ve ISBN sütunlarına sahiptir. İlişkisel model; veri tabanının, yedekliliği azaltacak şekilde normalleştirilmiş ve genel olarak depolama için optimize edilmiş tablolar arasında başvurusal bütünlük uygulamasına imkan tanıyacak şekilde tasarlanmıştır.
- Bir NoSQL veri tabanında, kitap kaydı genellikle belge olarak saklanır. Her kitap için öğe, ISBN, Book Title (Kitap Başlığı), Edition Number (Baskı Sayısı), Author Name (Yazar Adı) ve AuthorID (Yazar Kimliği) bilgileri tek bir belgede öznitelikler olarak depolanır. Bu modelde, veriler sezgisel yazılım geliştirme ve yatay ölçeklenebilirlik için optimize edilir.
SQL ve NoSQL terminolojisinin karşılaştırması
Aşağıdaki tabloda, belirli NoSQL veritabanları tarafından kullanılan terminoloji ile SQL veritabanları tarafından kullanılan terminoloji karşılaştırılmıştır.
SQL | MongoDB | DynamoDB | Cassandra | Couchbase |
---|---|---|---|---|
Tablo | Koleksiyon | Tablo | Tablo | Veri klasörü |
Satır | Belge | Öğe | Satır | Belge |
Sütun | Alan | Öznitelik | Sütun | Alan |
Birincil anahtar | Nesne Kimliği | Birincil anahtar |
Birincil anahtar | Belge Kimliği |
Dizin | Dizin | İkincil dizin | Dizin | Dizin |
Görünüm | Görünüm | Genel ikincil dizin | Gerçekleştirilmiş görünüm | Görünüm |
İç içe tablo veya nesne | Katıştırılmış belge | Harita | Harita | Harita |
Dizi | Dizi | Liste | Liste | Liste |
NoSQL veritabanı türleri nelerdir?
Şemasız verileri yönetme ve depolama biçimlerindeki farklılıklar nedeniyle birkaç farklı NoSQL veritabanı sistemi bulunur. Aşağıda yaygın türlerden bazılarını açıklıyoruz.
Anahtar-değer veritabanları
Anahtar-değer veritabanları son derece bölümlenebilir bir yapıya sahiptir ve diğer NoSQL veritabanı türlerinde elde edilemeyecek düzeylerde yatay ölçeklendirmeye imkan tanır. Anahtar-değer veritabanı, verileri anahtarın benzersiz bir tanımlayıcı olarak işlev gördüğü bir anahtar-değer çiftleri koleksiyonu olarak depolar. Anahtarlar ve değerler basit nesnelerden karmaşık bileşik nesnelere kadar her şey olabilir. Anahtar-değer deposu veri tasarımı için özellikle oyun, reklam teknolojisi ve IoT gibi kullanım örnekleri uygundur. Amazon DynamoDB her ölçekte iş yükü için milisaniye cinsinden tek basamaklı gecikme süresi ile tutarlı performans sunacak şekilde tasarlanmıştır.
Belge veri tabanları
Belge veri tabanları, geliştiricilerin uygulama kodlarında kullandıkları belge modeli biçimine sahiptir. Verileri esnek, yarı yapılandırılmış ve doğası gereği hiyerarşik olan JSON nesneleri olarak depolar. Belgelerin ve belge veri tabanlarının esnek, yarı yapılandırılmış ve hiyerarşik yapısı sayesinde geliştiriciler, uygulamaların gereksinimleri doğrultusunda geliştirme yapabilirler. Belge veri tabanı modeli; kataloglar, kullanıcı profilleri ve her belgenin hem benzersiz olduğu hem de zamanla geliştiği içerik yönetim sistemleri ile birlikte oldukça kullanışlıdır. Amazon DocumentDB (MongoDB uyumlu) ve MongoDB, esnek ve yinelemeli geliştirme için hem güçlü hem de sezgisel API'ler sağlayan popüler belge veri tabanlarıdır.
Grafik veri tabanları
Grafik veri tabanları, yüksek derecede bağlantılı veri kümeleriyle çalışan uygulamalar geliştirmeyi ve çalıştırmayı kolaylaştırmak için amaca yönelik olarak oluşturulmuştur. Veri varlıklarını depolamak için düğümleri, varlıklar arasındaki ilişkileri depolamak için de uçları kullanırlar. Bir ucun daima bir başlangıç düğümü, bitiş düğümü, türü ve yönü bulunur. Ana-alt öğe ilişkilerini, eylemleri, sahipliği ve benzer kavramları açıklayabilir. Bir düğümün sahip olabileceği ilişkilerin sayısı ve türleri açısından bir sınır yoktur. Bir grafik veritabanını, yüksek derecede bağlantılı veri kümeleriyle çalışan uygulamalar geliştirmek ve çalıştırmak için kullanabilirsiniz. Grafik veri tabanlarının yaygın olarak karşılaşılan kullanım örnekleri arasında sosyal ağlar, öneri altyapıları, dolandırıcılık algılama ve bilgi grafikleri yer alır. Amazon Neptune, iki grafik API'si (TinkerPop ve RDF/SPARQL) seçeneğiyle hem Property Graph modelini hem de Resource Description Framework'ü (RDF) destekleyen, tam olarak yönetilen bir grafik veri tabanı hizmetidir.
Bellek içi veri tabanları
Diğer ilişkisel olmayan veritabanları verileri disk veya SSD'lerde depolarken, bellek içi veri depoları disklere erişme ihtiyacını ortadan kaldırmak için tasarlanmıştır. Mikrosaniyelik yanıt süreleri gerektiren veya trafikte büyük ani artışlara sahip uygulamalar için idealdirler. Bunları oyun ve reklam teknolojisi uygulamalarında puan tabloları, oturum depoları ve gerçek zamanlı analiz gibi özellikler için kullanabilirsiniz. Redis İçin Amazon MemoryDB, mikrosaniye düzeyinde okuma gecikmesi, tek haneli milisaniye düzeyinde yazma gecikmesi ve Multi-AZ dayanıklılığı sağlayan, Redis uyumlu, dayanıklı, bellek içi bir veri tabanı hizmetidir. Amazon ElastiCache, düşük gecikme süreli, yüksek aktarım hızlı iş yükleri sağlamak üzere, Redis ve Memcached ile uyumlu, tam olarak yönetilen, bellek içi bir önbelleğe alma hizmetidir. Amazon DynamoDB Hızlandırıcı (DAX), DynamoDB'nin çok daha hızlı okumasını sağlayan, amaca yönelik bir veri deposunun başka bir örneğidir.
Arama veri tabanları
Arama altyapısı veri tabanı, geliştiriciler tarafından sorunları gidermek için kullanılan uygulama çıktı günlükleri gibi veri içeriğinin aranmasına adanmış, ilişkisel olmayan bir veri tabanı türüdür. Veriler arasında benzer özellikleri kategorize etmek ve arama özelliğini kolaylaştırmak için dizinler kullanır. Arama altyapısı veri tabanları, görüntüler ve videolar gibi yapılandırılmamış verileri sınıflandırmak için optimize edilmiştir. Amazon OpenSearch Hizmeti, yarı yapılandırılmış günlükleri ve ölçümleri dizine ekleyerek, biriktirerek ve bunlarda arama yaparak makineler tarafından oluşturulan veriler için neredeyse gerçek zamanlı görselleştirme ve analizler sağlamak için amaca yönelik tasarlanmıştır.
NoSQL ve SQL veri tabanları arasındaki farklar nelerdir?
Onlarca yıldır, uygulama geliştirmede baskın olan veri modeli, verileri satır ve sütunlardan oluşan tablolarda depolayan ilişkisel veri modeliydi. Bu ilişkisel tabloları oluşturmak ve düzenlemek için Yapılandırılmış Sorgu Dili (SQL) kullanılıyordu. SQL veri tabanları, veri ilişkilerini tablo olarak modeller. Tablodaki satırlar, bir nesne veya varlığın ilgili değerlerinden oluşan bir koleksiyonu temsil eder. Tablodaki her sütun bir veri özniteliğini temsil eder ve bir alan (veya tablo hücresi) özniteliğin gerçek değerini depolar. Veri tabanı tablolarını yeniden düzenlemeden verilere birçok farklı şekilde erişmek için bir ilişkisel veri tabanı yönetim sistemi (RDBMS) kullanabilirsiniz.
Diğer esnek veri modellerinin önemli ölçüde benimsenmesi ve kullanılması 2000'lerin ortasında ve sonunda gerçekleşmeye başladı. Bu yeni veri tabanı ve veri modeli sınıflarının diğerlerinden ayırt edilmesi ve sınıflandırılması için NoSQL terimi bulundu. NoSQL terimi "sadece SQL değil" veya "SQL hariç" anlamlarına gelir. NoSQL terimi genellikle "ilişkisel olmayan" terimiyle aynı şeyi ifade etmek için kullanılır. İlişkisel ve ilişkisel olmayan veri tabanları arasındaki temel farklar aşağıdaki tabloda verilmiştir.
|
İlişkisel veritabanları |
NoSQL veritabanları |
En uygun iş yükleri
|
İlişkisel veritabanları, işlemsel ve güçlü tutarlılığa sahip çevrimiçi işlem gerçekleştirme (OLTP) uygulamaları için tasarlanmıştır. Ayrıca, çevrimiçi analiz işleme (OLAP) için de uygundurlar. |
NoSQL veritabanları, düşük gecikme süreli uygulamalar içeren çeşitli veri erişimi modelleri için tasarlanmıştır. NoSQL arama veritabanları, yarı yapılandırılmış veriler üzerinde analiz için tasarlanmıştır.
|
Veri modeli |
İlişkisel model, verileri satır ve sütunlardan oluşan tablolar halinde normalleştirir. Tablolar, satırlar, sütunlar, dizinler, tablolar arasındaki ilişkiler ve diğer veritabanı öğeleri bir şema tarafından kesin bir şekilde tanımlanır. Veritabanı, tablolar arasındaki ilişkilerde başvurusal bütünlük uygular. |
NoSQL veritabanları, performans ve ölçek için optimize edilmiş anahtar-değer, belge, grafik ve sütun gibi çeşitli veri modelleri sağlar. |
ACID özellikleri |
İlişkisel veritabanları bölünmezlik, tutarlılık, yalıtım ve dayanıklılık (ACID) özelliklerini sağlar:
|
Çoğu NoSQL veritabanı, yatay olarak ölçeklendirilebilen daha esnek bir veri modeli elde etmek için ilişkisel veritabanlarının bazı ACID özelliklerini esnetmek suretiyle ödünleşim sunarlar. Bu, NoSQL veritabanlarının, tek bir bulut sunucusunun ulaşamayacağı derecede yatay ölçeklendirme gerektiren yüksek aktarım hızlı, düşük gecikme süreli kullanım örnekleri için mükemmel bir seçim olmasını sağlar. |
Performans |
Performans genellikle disk alt sistemine bağlıdır. En üst düzey performans için genellikle sorguların, dizinlerin ve tablo yapısının optimize edilmesi gerekir. |
Performans genel olarak temel donanımın küme boyutu, ağ gecikme süresi ve çağrı yapan uygulama gibi etmenlerin birleşimine bağlıdır. |
Ölçek |
İlişkisel veritabanları genellikle donanımın işlem kapasitesini artırarak ölçeği artırır veya salt okunur iş yüklerine yönelik replikalar ekleyerek ölçeği genişletir. |
NoSQL veritabanları genellikle bölümlenebilir. Bunun nedeni, erişim modellerinin neredeyse sınırsız ölçekte tutarlı performans sağlamak üzere aktarım hızını artırmak için dağıtılmış mimariyi kullanarak ölçeği genişletebilmesidir. |
API'ler |
Veri depolama ve alma istekleri, yapılandırılmış sorgu diline (SQL) uygun sorgular kullanılarak iletilir. Bu sorgular ilişkisel veritabanı tarafından ayrıştırılır ve yürütülür. |
Nesne tabanlı API'ler, uygulama geliştiricilerinin veri yapılarını kolayca depolamasına ve almasına imkan tanır. Bölümleme anahtarları, uygulamaların anahtar-değer çiftlerini, sütun kümelerini veya seri hale getirilmiş uygulama nesneleri ve öznitelikleri içeren yarı yapılandırılmış belgeleri bulmasına imkan tanır. |
SQL veritabanları yerine NoSQL veritabanlarını ne zaman seçmelisiniz?
Bir NoSQL veritabanı belirsiz, alakasız veya hızla değişen verilerin işlenmesinde en uygun seçenektir. Uygulama veritabanı şemasını gerektirdiğinde, geliştiriciler için kullanımı sezgiseldir. Aşağıdaki özelliklerde uygulamalar için kullanabilirsiniz:
- Daha hızlı ve daha fazla yinelemeli yazılım geliştirmeyi mümkün kılan esnek şemalara ihtiyacı olan.
- Güçlü veri tutarlılığından çok performansa öncelik veren ve veri tabloları arasındaki ilişkileri koruyan (referans bütünlüğü).
- Sunucular arasında parçalama yaparak yatay ölçeklendirme gerektiren.
- Yarı yapılandırılmış ve yapılandırılmamış veriler için destek sunan.
Her zaman ilişkisel olmayan ve ilişkisel veri tabanı şemaları arasında seçim yapmak zorunda değilsiniz. Uygulamalarınızda SQL ve NoSQL veritabanlarının bir kombinasyonunu kullanabilirsiniz. Bu hibrit yaklaşım oldukça yaygındır ve ideal fiyat performansı için her iş yükünün doğru veritabanına eşlenmesini sağlar.
AWS, NoSQL veritabanı gereksinimlerinizi nasıl destekleyebilir?
AWS, tüm NoSQL gereksinimlerinizi karşılayacak çeşitli NoSQL veritabanı hizmetlerine sahiptir. Örneğin:
- Amazon DynamoDB, sınırsız ölçeklenebilirlikle tutarlı, tek basamaklı milisaniye cinsinden performans sağlayan sunucusuz, tam olarak yönetilen bir anahtar-değer veritabanı hizmetidir.
- Amazon DocumentDB (MongoDB uyumlu), altyapıyı yönetmeden neredeyse tüm ölçeklerde kritik belge iş yüklerini çalıştırmayı kolay ve uygun maliyetli hale getiren, tam olarak yönetilen bir yerel JSON belge veritabanıdır.
- Amazon Neptune, milyarlarca ilişkiyi saniyeler içinde sorgulayabilme özelliği ile üstün ölçeklenebilirlik ve erişilebilirlik için tasarlanmış, sunucusuz, tam olarak yönetilen bir grafik veritabanı hizmetidir.
- Redis İçin Amazon MemoryDB, ultra hızlı performans için mikrosaniyelik okuma ve yazma yanıt süreleri sağlayan, dayanıklı, bellek içi bir veritabanı hizmetidir.
- Amazon ElastiCache, gerçek zamanlı ve maliyet için optimize edilmiş performans sunan, tam olarak yönetilen, Redis ve MemCached uyumlu, bellek içi veri deposu ve önbellek hizmetidir.
- Amazon Keyspaces (Apache Cassandra İçin), çok bölgeli replikasyonla %99,999'a varan erişilebilirlik için tasarlanmış, sunucusuz, tam olarak yönetilen bir geniş sütun veri tabanıdır. Ölçeklenebilir, yüksek oranda erişilebilir ve yönetilen bir Apache Cassandra uyumlu veri tabanı hizmeti.
- Amazon Timestream, günde trilyonlarca olayı ilişkisel veri tabanlarından 1.000 kata kadar daha hızlı depolamayı ve analiz etmeyi kolaylaştıran, sunucusuz, tam olarak yönetilen bir zaman serisi veri tabanıdır.
- Amazon OpenSearch Hizmeti, iş verileri ve operasyonel verilerin gerçek zamanlı arama, izleme ve analizini sağlayan, tam olarak yönetilen dağıtılmış arama ve analiz paketidir.
Hemen ücretsiz bir hesap oluşturarak AWS'de NoSQL'yi kullanmaya başlayın!