1.1 NoSQL veritabanı nasıl çalışır?

NoSQL veritabanları, verilere erişmek ve verileri işlemek için çeşitli veri modelleri kullanır. Bu tür veritabanları, düşük gecikme süresi ve esnek veri modelleri gerektiren veri yoğun uygulamalar için optimize edilmiştir. Tüm bunlar, diğer veritabanları türleri için tipik olan katı veri tutarlılığı gereksinimlerinin yumuşatılmasıyla elde edilir.

Basit bir kitap veritabanı için bir şema modelleme örneğini ele alalım.

  • İlişkisel bir veritabanında, bir kitap girişi genellikle birden çok parçaya bölünür (veya "normalleştirilir") ve ilişkileri birincil ve yabancı anahtar kısıtlamalarıyla tanımlanan ayrı tablolarda saklanır. Bu örnekte, Books tablosunda ISBN , Book Title ve "ISBN"ve"Yazar"Author-ISBNvesütunlarıAuthor NameveAuthor IDtablosundaAuthorsNumberEdition. İlişkisel model, bir veritabanındaki tablolar arasında bilgi bütünlüğünü korumak için tasarlanmıştır. Veriler fazlalığı azaltmak için normalleştirilir ve genellikle depolama için optimize edilir.

  • Bir NoSQL veritabanında, bir kitap kaydı genellikle bir JSON belgesi olarak depolanır. Her kitap veya öğe için ISBN , Kitap Başlığı , Baskı Numarası , Yazar Adı ve Yazar Kimliği değerleri, tek bir belgede öznitelikler olarak saklanır. Bu modelde, veriler sezgisel geliştirme ve yatay ölçeklenebilirlik için optimize edilmiştir.

1.2 NoSQL veritabanları ne için kullanılabilir?

NoSQL veritabanları, maksimum kullanılabilirlik sağlayabilen yüksek performanslı ve zengin işlevselliğe sahip esnek, ölçeklenebilir veritabanları gerektiren mobil, oyun, web uygulamaları gibi birçok modern uygulama için çok uygundur.

  • esneklik _ Tipik olarak NoSQL veritabanları, daha hızlı geliştirmeye ve artımlı uygulamaya olanak tanıyan esnek şemalar sunar. Esnek veri modellerinin kullanılması nedeniyle, NoSQL veritabanları yarı yapılandırılmış ve yapılandırılmamış veriler için çok uygundur.

  • ölçeklenebilirlik _ NoSQL veritabanları, pahalı, güvenilir sunucular ekleyerek değil, dağıtılmış donanım kümelerini kullanarak ölçeklendirmek üzere tasarlanmıştır. Bazı bulut hizmeti sağlayıcıları, bu işlemleri arka planda çalıştırarak tam olarak yönetilen bir hizmet sunar.

  • Yüksek performans NoSQL veritabanları, ilişkisel veritabanlarından daha yüksek performans elde etmek için belirli veri modelleri ve erişim kalıpları için optimize edilmiştir.

  • Geniş işlevsellik . NoSQL veritabanları, ilgili veri modelleri için özel olarak tasarlanmış zengin API'ler ve veri türleri sağlar.

1.3 NoSQL veritabanı türleri

NoSQL veritabanları, verileri tablolar biçiminde depolamanın çok uygun olmadığı yerlerde kullanılır. Bu nedenle, çok farklı formatlarda depolanırlar. Genellikle, NoSQL veritabanlarının 6 ana veri türü vardır.

Anahtar-değer çiftlerine dayalı veritabanı

Anahtar-değer çiftlerini kullanan veritabanları, yüksek düzeyde ayrılabilirliği destekler ve diğer veri tabanı türleri ile elde edilemeyen eşi benzeri görülmemiş yatay ölçeklendirme sağlar. Anahtar/değer veritabanları için iyi kullanım durumları oyun, reklam ve IoT uygulamalarıdır.

Örneğin, Amazon DynamoDB, herhangi bir ölçekte birkaç milisaniyeden fazla olmayan bir gecikmeyle kararlı veritabanı işlemi sağlar. Bu güçlü performans, Snapchat Stories'in DynamoDB'ye taşınmasının ana nedeniydi, çünkü bu Snapchat özelliği en büyük depolama yazma yüküyle ilişkilendiriliyor.

belge

Uygulama kodunda veriler, geliştiriciler için verimli ve sezgisel bir veri modeli olduğundan genellikle JSON benzeri bir biçimde bir nesne veya belge olarak temsil edilir. Belge veritabanları, geliştiricilerin uygulama kodlarında kullandıkları aynı belge modelini kullanarak verileri bir veritabanında depolamasına ve sorgulamasına olanak tanır. Belgelerin ve belge veritabanlarının esnek, yarı yapılandırılmış, hiyerarşik doğası, uygulama gereksinimlerine göre gelişmelerine olanak tanır.

Belge modeli, her belgenin benzersiz olduğu ve zaman içinde değiştiği kataloglarda, kullanıcı profillerinde ve içerik yönetim sistemlerinde iyi çalışır. Amazon DocumentDB (MongoDB ile uyumlu) ve MongoDB, çevik geliştirme için işlevsel ve sezgisel API'ler sağlayan yaygın belge veritabanlarıdır.

Grafik veritabanları

Grafik veritabanları, karmaşık veri kümeleriyle çalışan uygulamaların geliştirilmesini ve çalıştırılmasını kolaylaştırır. Grafik veritabanlarını kullanmanın tipik örnekleri, sosyal ağlar, öneri hizmetleri, dolandırıcılık tespit sistemleri ve bilgi grafikleridir. Amazon Neptune, tümüyle yönetilen bir grafik veritabanı hizmetidir. Neptune, Özellik Grafiği ve Kaynak Açıklama Çerçevesini (RDF) destekler ve aralarından seçim yapabileceğiniz iki grafik API'si sağlar: TinkerPop ve RDF/SPARQL. Yaygın grafik veritabanları arasında Neo4j ve Giraph bulunur.

bellekteki veritabanı

Oyun ve reklamcılık uygulamaları genellikle lider tabloları, oturum depolaması ve gerçek zamanlı analitiği kullanır. Bu tür yetenekler, birkaç mikrosaniye içinde bir yanıt gerektirirken, trafikte her an keskin bir artış mümkündür.

Redis için Amazon MemoryDB, okuma gecikmesini milisaniyelere indiren ve birden çok kullanılabilirlik bölgesinde dayanıklılık sağlayan, Redis uyumlu, güvenilir bir bellek içi veritabanı hizmetidir. MemoryDB, ultra yüksek performans ve güvenilirlik için özel olarak üretilmiştir, bu nedenle modern mikro hizmet tabanlı uygulamalar için birincil veritabanı olarak kullanılabilir.

Amazon ElastiCache, düşük gecikme süreli, yüksek verimli iş yüklerine hizmet vermek için tam olarak yönetilen bir Redis ve Memcached uyumlu bellek içi önbelleğe alma hizmetidir. Uygulamalarının gerçek zamanlı olarak yanıt vermesine ihtiyaç duyan Tinder gibi müşteriler, disk depolama sistemleri yerine bellek içi kullanıyor. Amaca yönelik oluşturulmuş bir veri ambarının başka bir örneği de Amazon DynamoDB Accelerator'dur (DAX). DAX, DynamoDB'nin verileri birkaç kat daha hızlı okumasını sağlar.

Veritabanlarında ara

Birçok uygulama, geliştiricilerin sorunları gidermesini ve düzeltmesini kolaylaştırmak için günlükler oluşturur. Amazon OpenSearch, yarı yapılandırılmış günlükleri ve ölçümleri dizine ekleyerek, bir araya getirerek ve arayarak otomatik olarak oluşturulan veri akışlarının neredeyse gerçek zamanlı görselleştirilmesi ve analitiği için amaca yönelik oluşturulmuş bir hizmettir.

Ayrıca Amazon OpenSearch güçlü, yüksek performanslı bir tam metin arama hizmetidir. Expedia, operasyonel izleme ve sorun gidermeden dağıtılmış uygulama yığını izleme ve maliyet optimizasyonuna kadar çeşitli görev açısından kritik kullanım durumları için 150'den fazla Amazon OpenSearch hizmet etki alanından, 30 TB veriden ve 30 milyar belgeden yararlanır.

1.4 SQL (ilişkisel) ve NoSQL (ilişkisel olmayan) veritabanlarının karşılaştırılması

NoSQL'in pek çok avantajı vardır, bu yüzden en azından teorik olarak, ihtiyacınız olan aracın kendiniz yazmadan önce zaten var olduğunu bilmelisiniz. Aşağıda NoSQL ve SQL veritabanlarının bir karşılaştırmasını yapacağım:

Uygun iş yükleri

İlişkisel veritabanları, işlemsel ve son derece tutarlı gerçek zamanlı işlem işleme (OLTP) uygulamaları için tasarlanmıştır ve gerçek zamanlı analitik işleme (OLAP) için çok uygundur.

NoSQL veritabanları, düşük gecikmeli uygulamalar da dahil olmak üzere çeşitli veri erişim modelleriyle çalışacak şekilde tasarlanmıştır. NoSQL arama veritabanları, yarı yapılandırılmış verilerin analizi için tasarlanmıştır.

Veri örneği

İlişkisel model, verileri normalleştirir ve satır ve sütunlardan oluşan tablolara dönüştürür. Bir şema, tabloları, satırları, sütunları, dizinleri, tablolar arasındaki ilişkileri ve diğer veritabanı öğelerini katı bir şekilde tanımlar. Böyle bir veritabanı, tablolar arasındaki ilişkilerde referans verilerinin bütünlüğünü sağlar.

NoSQL veritabanları, yüksek performans ve ölçeklenebilirlik için optimize edilmiş anahtar/değer çiftleri, belgeler ve grafikler gibi çeşitli veri modelleri sağlar.

ASİT Özellikleri

İlişkisel veritabanları bir dizi ACID özelliği sağlar: atomiklik, tutarlılık, yalıtım, güvenilirlik.

  • Atomiklik, bir işlemin bütünüyle yürütülmesini veya hiç yapılmamasını gerektirir.
  • Tutarlılık, bir işlem tamamlanır tamamlanmaz verilerin veritabanı şemasına uyması gerektiği anlamına gelir.
  • İzolasyon, paralel işlemlerin birbirinden ayrı çalışmasını gerektirir.
  • Güvenilirlik, beklenmeyen bir sistem arızası veya elektrik kesintisinden sonra kaydedilen son duruma geri dönebilme yeteneği anlamına gelir.

NoSQL veritabanları, yatay ölçeklendirmeye izin veren daha esnek bir veri modeli lehine ACID özelliklerinin katı gereksinimlerini gevşeterek genellikle bir uzlaşma sunar. Bu, NoSQL'i tek bir örneğin ötesinde yatay ölçeklendirme gerektiren yüksek bant genişliğine sahip, düşük gecikmeli kullanım durumları için mükemmel bir seçim haline getirir.

Verim

Performans esas olarak disk alt sistemine bağlıdır. Maksimum performans için genellikle sorguların, dizinlerin ve tablo yapısının optimizasyonu gerekir.

Performans genellikle temeldeki donanım kümesinin boyutuna, ağ gecikmesine ve çağıran uygulamaya bağlıdır.

ölçekleme

İlişkisel veritabanları genellikle donanımın bilgi işlem gücünü artırarak veya okuma iş yükleri için ayrı kopyalar ekleyerek ölçeklenir.

NoSQL veritabanları, genellikle dağıtılmış bir mimariye dayalı ölçeklenebilir erişim kalıpları aracılığıyla yüksek düzeyde ayrılabilirliği destekler. Bu, verimi artırır ve neredeyse sınırsız ölçekte tutarlı performans sunar.

API

Veri yazma ve alma istekleri SQL'de yazılır. Bu sorgular, ilişkisel bir veritabanı tarafından ayrıştırılır ve yürütülür.

Nesne yönelimli API'ler, uygulama geliştiricilerin veri yapılarını kolayca yazmasına ve almasına olanak tanır. Uygulamalar, bölüm anahtarlarını kullanarak anahtar-değer çiftlerini, sütun kümelerini veya seri nesneleri ve uygulama özniteliklerini içeren yarı yapılandırılmış belgeleri arayabilir.