Ana İçeriğe Atla
  • AWS
  • NoSQL Nedir?

NoSQL Nedir?

NoSQL veri tabanları nedir?

Amaca yönelik veri tabanları olarak da bilinen 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. Birçok veri tabanı iş yükü, NoSQL veri tabanlarının maliyet etkinliği ve performansından yararlanabilir. Örnek olarak, Amazon DynamoDB sunucusuzdur, bu nedenle kaynak kullanımı otomatik olarak optimize edilir ve aşırı provizyon için asla ödeme yapmazsınız. 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.

Kullanmaya başlayın:
DynamoDB, ElastiCache, DocumentDB, Keyspaces, MemoryDB, Neptune, Timestream, QLDB

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 veri tabanları, 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 veri tabanları 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 veri tabanları 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 veri tabanları ile gerçek zamanlı öneriler, kişiselleştirme ve geliştirilmiş kullanıcı deneyimleri sunabilirsiniz. Örneğin Disney+, NoSQL veri tabanı 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 veri tabanları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 veri tabanları; 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 veri tabanı 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 veri tabanı, 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 veri tabanı ö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 tablosu ISBN, Book Title ve Edition Number sütunlarına; Authors tablosu AuthorID ve Author Name sütunlarına; Author-ISBN tablosu ise AuthorID 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 öge, ISBN, Book Title, Edition Number, Author Name ve AuthorID 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 veri tabanları tarafından kullanılan terminoloji ile SQL veri tabanları 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 veri tabanları son derece bölümlenebilir bir yapıya sahiptir ve diğer NoSQL veri tabanı 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 veri tabanı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 veri tabanları 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ısı (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:

  • Bölünmezlik, bir işlemin ya tamamen yürütülmesini ya da hiç yürütülmemesini gerektirir.
  • Tutarlılık, bir işlem gönderildiğinde verilerin veritabanı şemasına uygun olmasını gerektirir.
  • Yalıtım, eş zamanlı işlemlerin birbirinden bağımsız olarak yürütülmesini gerektirir.
  • Dayanıklılık, beklenmeyen bir sistem hatasından veya güç kesintisinden son bilinen duruma kurtarma becerisi gerektirir.

Ç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 veri tabanı gereksinimlerinizi nasıl destekleyebilir?

AWS, tüm NoSQL gereksinimlerinizi karşılayacak çeşitli NoSQL veri tabanı 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 veri tabanı 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 veri tabanı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 veri tabanı 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 veri tabanı 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.

Browse all cloud computing concepts

Browse all cloud computing concepts content here:

Yükleniyor
Yükleniyor
Yükleniyor
Yükleniyor
Yükleniyor

Did you find what you were looking for today?

Let us know so we can improve the quality of the content on our pages