NoSQL Nedir? SQL, Mysql ve PostgreSQL ile Arasındaki Farklar

1970’lerin başında, işletme verilerini depolamak için düz dosya sistemleri kullanıldı. Düz dosya sistemindeki en büyük sorun, her işletmenin kendi düz dosyalarını uygulamasıydı. Düz dosyalardan veri depolamak ve bunlara erişmek için standartlar yoktu.

Bu sorunun üstesinden gelmek için ilişkisel veri tabanları ortaya çıktı. Ancak ilişkisel veri tabanları da daha sonra hacimli verileri işleyemediği için bir sorun yaşadı ve sorunları yönetmek için NoSQL veri tabanları geliştirildi.

NoSQL Nedir?

Carl Strozzi, açık kaynak dosya tabanlı veri tabanları için 1998 yılında NoSQL terimini tanıttı. Geleneksel olarak, SQL veya ilişkisel veri tabanları, gelecekteki öngörüler için verileri depolamak veya almak için kullanılırken, NoSQL veri tabanı yapılandırılmış, yarı yapılandırılmış, yapılandırılmamış veya polimorfik verileri bir arada depolayabilen çok çeşitli veri tabanı teknolojilerini kapsar.

  • NoSQL veya “Not SQL”, yakın geçmişte ilişkisel veri tabanlarına alternatif olarak ortaya çıkan yeni bir veri tabanları setidir.
  • Sabit bir şema gerektirmeyen, ölçeklendirmesi kolay, birleşimleri önleyen, ilişkisel olmayan veri yönetim sistemidir.
  • Büyük veriler, dağıtılmış veri depoları ve gerçek zamanlı web uygulamaları için kullanılır. Örneğin Facebook, Twitter veya Google gibi şirketler neredeyse her gün terabaytlarca veri toplar.

NoSQL Veri Tabanı Tarihi

1998 – Carl Strozzi, açık kaynak dosya tabanlı veri tabanları için 1998’de NoSQL terimini tanıttı.

2000 – Grafik veri tabanı kullanıma sunuldu.

2004 – Google Big Table piyasaya sürüldü.

2005 – CouchDB piyasaya sürüldü.

2007 – Amazon Dinamo piyasaya sürüldü.

2008 – Facebook açık kaynaklı Cassandra projeleri önerildi.

2009 – NoSQL veri tabanları yeniden tanıtıldı.

NoSQL Veri Tabanının Özellikleri

İlişkisel Olmayan

  • NoSQL veri tabanları asla ilişkisel veri tabanı modellerini takip etmez.
  • Hiçbir zaman sabit sütun kayıtları içeren bir tablo sağlamaz.
  • Herhangi bir veri normalizasyonu veya nesne-ilişkisel eşleme gerektirmez.
  • İlişkisel veri tabanları gibi karmaşık özellikler yoktur.

Dağıtılmış Bilgi İşlem

  • Birden çok veri tabanını dağıtılmış bir şekilde yürütmek mümkündür.
  • Yük devretme yetenekleri ve otomatik ölçeklendirme özellikleri sunar.
  • Tüm programlama dilleri ile kullanılabilir veya NoSQL veri tabanları ile kullanılacak standart bir sorgu yoktur.
  • Nihai tutarlılık sağlar.
  • Dağıtılmış düğümler arasında eşzamanlı çoğaltma sağlamaz.
  • Veri düğümleri arasında maksimum dağıtım ve daha az koordinasyon sağlar.

Şemasız

  • NoSQL veri tabanları ya rahat şemalara sahiptir ya da şema içermez.
  • Verilerin şeması için herhangi bir tanımlama gerektirmez.
  • Aynı etki alanları için heterojen veri yapıları sunar.

Basit API

  • Veri depolama ve veri sorgulama için kullanımı kolay arayüz sunar.
  • Düşük seviyeli seçim yöntemlerine ve düşük seviyeli veri manipülasyonuna izin verir.
  • HTTP ve JSON ile metin tabanlı protokoller kullanır.
  • Standart tabanlı bir sorgulama dili yoktur.
  • İnternete yönelik hizmetler olarak çalışan web etkin bir veri tabanıdır.

NoSQL Veri Tabanı Türleri

Benzersiz nitelikleri ve sınırlamaları olan dört NoSQL veri tabanı sınıfı vardır. Bu yüzden her birini derinlemesine anlamalı ve gereksinimlerinize en uygun olanı seçmeniz gerekir. 

1. Anahtar/değer çifti tabanlı

Bu veri tabanı, ağır yükleri ve çok sayıda veriyi basit bir şekilde yönetmek için tasarlanmıştır. Verileri, her bir anahtarın benzersiz olduğu ve değerin nesne, dize JSON, vb. gibi herhangi bir şey olabileceği anahtar-değer çiftlerinde depolar.

Koleksiyonlar, diziler, sözlükler vb. olarak kullanılabilecek en temel veri tabanı türüdür. Geliştiricilerin şemasız verileri depolamasına yardımcı olur. Alışveriş sepeti içeriği için en iyi sonucu verir.

2. Sütun tabanlı NoSQL veri tabanı

Bu veri tabanı, her sütunun ayrı ayrı ele alındığı ve değerlerin bitişik olarak depolandığı sütun odaklıdır. 

SUM, Count, MAX, MIN, AVG vb. toplama sorguları için en iyi sonucu verir. Sütunlarda hızlı bir şekilde veri bulmaya yardımcı olur. Bu veri tabanı büyük ölçüde katalogları, veri ambarını, BI projelerini, CRM’yi veya kütüphaneyi vb. yönetmek için kullanılır.

3. Belge odaklı NoSQL veri tabanı

Verileri anahtar/değer çifti olarak saklar ve alır, ancak değer, XML veya JSON formatlarındaki belgelerde depolanır. Bir veri tabanının kendisi verileri anlar veya sorgular. 

Çoğunlukla blog platformları, CRM sistemleri veya gerçek zamanlı analizler vb. için kullanılır. Değişken toplu işlevlere karşı birden çok işlem gerektiren karmaşık işlemler için kullanılır.

4. Grafik tabanlı NoSQL veri tabanları

Bu veri tabanı varlığı depolar ve farklı varlıklar arasındaki ilişkiyi tanımlar. Depolanan varlık düğüm olarak adlandırılır ve ilişki kenar olarak tanımlanır. Her düğüm ve kenar benzersiz bir tanımlayıcıya sahip olmalıdır. Burada tablolar, doğası gereği çok ilişkiseldir, gevşek bir şekilde bağlı değildir. NoSQL veritabanlarında çapraz ilişki, ilişkisel veri tabanlarına kıyasla çok daha hızlıdır. Çoğunlukla lojistik, ağlar ve mekansal veriler için kullanılır.

NoSQL Veri Tabanının Avantajları Nelerdir?

NoSQL veri tabanın avantajları aşağıdaki şekildedir:

1. Birincil ve Analitik Veri Kaynağı Yeteneği

Herhangi bir NoSQL çözümü için ilk kriter, farklı iş uygulamalarından veri alan birincil veya aktif veri kaynağı olarak hizmet etmesi gerektiğidir. İş uygulamalarının genel işlevlerini geliştirmek için ikincil veri kaynağı veya analitik veri tabanı görevi görmelidir. Ayrıca, yapılandırılmış, yarı yapılandırılmış veya yapılandırılmamış gibi farklı veri türleri ile bütünleşebilmelidir. Ek olarak, karmaşık sorguları da yürütebilir.

2. Büyük Veri Yeteneği

NoSQL veri tabanları büyük veriler konusunda iyidir ve terabaytlardan petabaytlara kadar hacimli verileri yönetmek için hızla ölçeklenebilirler. Ek olarak, veri hızı, veri karmaşıklığı ve veri çeşitliliği için yüksek performans sunar.

3. Sürekli Kullanılabilirlik

NoSQL veri tabanı, tek bir hata noktası olmadan her zaman kullanılabilir. Kümedeki tüm düğümler, bazı makineler kapalı olsa bile isteği okuyabilir. Bir veri merkezindeki farklı fiziksel makineler arasında verileri çoğaltabilir. Donanım kesintilerini de önler.

4. Çoklu Veri Merkezi Yeteneği

Ticari işletmeler, herhangi bir performans sorunu olmadan birden çok veri merkezine veya grafik yerel ayarlara yayılmış yüksek düzeyde dağıtılmış veri tabanlarına ihtiyaç duyar. Çözüm, okuma ve yazma işlemlerinin genel oluşumları ile ilgilenmeden birden çok veri merkezini işleme yeteneğini içerir. İyi bir NoSQL veri tabanı, birden çok veri merkezini destekler ve tutarlılık ile performans arasında uygun bir denge sağlamak için yapılandırma seçenekleri sunar.

5. Ayrı Önbellek Katmanı Gerekli Değildir

İyi bir NoSQL veri tabanı, verileri katılan farklı düğümler arasında kullanır ve dağıtır. Verileri depolamak için ayrı bir önbellek katmanına sahip değildir. Birden çok katılımcı düğümün bellek önbelleği, anında G/Ç erişimi için verileri hızlı bir şekilde depolar. Kalıcı veri tabanı ile önbellek verilerini senkronize etme sorunlarını ortadan kaldırır. Bu sayede daha az yönetim sorunuyla daha yüksek ölçeklenebilirliği destekler.

6. Buluta Hazır

Bulut platformlarının benimsenmesi, dünya çapında lider işletmeler tarafından her geçen gün artmaktadır. Her sağlam platformun buluta hazır olmasının nedeni budur. MongoDB gibi NoSQL veri tabanları, gerektiğinde bulut ortamında çalışabilmek için buluta hazırdır. Veri tabanının bir kısmı kurum içinde, diğer kısmı ise bulutta barındırıldığında hibrit çözümü destekler.

7. Yüksek Performans ve Ölçeklenebilirlik

NoSQL veri tabanları, kümeye birden çok düğüm ekleyerek performansı artırabilir. Genellikle, bir veri tabanı sisteminin performansı, bir kümeye ek düğümler ile düşer. Ancak, iyi bir NoSQL veri tabanı, yeni düğümler eklendiğinde hem okuma hem de yazma işlemleri için performansı artırır ve performans kazanımları doğrusaldır.

Neden NoSQL Veri Tabanlarını Seçmelisiniz?

Sosyal medyanın artan kullanımı, uygun şekilde yönetilmesi, analiz edilmesi ve arşivlenmesi gereken kullanıcı odaklı verileri hızla büyüttü. Ek olarak; GPS, sensörler, otomatik izleyiciler ve izleme sistemleri gibi diğer veri kaynakları da düzenli olarak büyük miktarda veri üretir.

Devasa veri seti, veri depolama, veri yönetimi, veri analizi vb. zorlukları beraberinde getirir. Ayrıca yarı yapılandırılmış ve seyrektir. RDBMS durumunda, önceden şema ve ilişkisel referanslara ihtiyaç vardır.

Yarı yapılandırılmış veya yapılandırılmamış verilerle ilgili bu sorunları çözmek için son birkaç yılda bir dizi yeni veri tabanı ürünü ortaya çıkmıştır. Yeni veri tabanı ürünleri sınıfı, sütun tabanlı veri depolarından, anahtar-değer çifti veri tabanlarından ve belge veri tabanlarından vb. oluşur. Birlikte kullanıldıklarında, bu veri tabanlarına NoSQL adı verilir. Her biri benzersiz bir dizi özellik ve önermeye sahip çeşitli ürünlerden oluşur.

Bunun dışında NoSQL veri tabanları, SQL veri tabanlarına kıyasla kolayca ölçeklenebilir. Yük arttığında birden çok ana bilgisayar arasında dağıtılır.

RDBMS NoSQL
  • Veriler, satırlar ve sütunlarla ilişkisel bir modelde depolanır.
  • Bir satır bir öğe hakkında bilgi içerirken, sütunlar ‘Model’, ‘Üretim Tarihi’, ‘Renk’ gibi belirli bilgileri içerir.
  • Sabit şemayı takip eder. Yani sütunlar veri girişinden önce tanımlanır ve kilitlenir. Ayrıca, her satır, her sütun için veri içerir.
  • Dikey ölçeklendirmeyi destekler. Bir RDBMS’yi birden çok sunucu arasında ölçeklendirmek zorlu ve zaman alıcı bir süreçtir
  • Atomisite, Tutarlılık, İzolasyon ve Dayanıklılık(ACID) Uyumludur.
  • Veriler, farklı veri depolama modelleri ile bir dizi farklı veri tabanında depolanır.
  • Dinamik şemaları takip eder. Anlamı, istediğiniz zaman sütun ekleyebilirsiniz.
  • Yatay ölçeklemeyi destekler. Birden çok sunucu arasında ölçeklendirebilirsiniz. Birden çok sunucu, dikey ölçeklemeye kıyasla ölçeklendirmeyi uygun maliyetli hale getiren ucuz ticari donanım veya bulut örnekleridir.
  • ACID Uyumlu değildir.

NoSQL Kullanım Örnekleri

Bazı iş uygulamalarına daha yüksek esneklik ve ölçeklenebilirlik sağlamak için ilişkisel veri tabanlarının yerini alan NoSQL veri tabanlarının bazı kurumsal kullanım durumları aşağıdaki şekildedir:

1. İçerik Yönetimi (CM)

İçerik yönetimi; metin, resim, ses ve video dahil olmak üzere herhangi bir formatta bilgilerin toplanması, yönetilmesi, iletilmesi, alınması ve yayınlanması için bir dizi işlemdir. NoSQL veri tabanları, esnek ve açık uçlu veri modelleriyle multimedya içeriğini depolamak için daha iyi bir seçenek sunabilir.

Örneğin, Forbes sadece birkaç ay içinde MongoDB’ye dayalı özel bir içerik yönetim sistemi oluşturarak daha düşük maliyetle daha fazla çeviklik kazandı.

2. Gerçek Zamanlı Büyük Veri İşleme

Büyük veri, geleneksel işleme sistemleriyle işlenemeyecek kadar büyük bir veri kümesini ifade eder. Büyük verileri gerçek zamanlı olarak depolayan ve alan sistemler, NoSQL veri tabanlarına ideal olarak uyan bir dizi işlev olan geçmiş verileri analiz ederken yeni verileri almak için akış işlemeyi kullanır.

Zoom, hizmetin COVID-19 pandemisinin ilk günlerinde kullanım artışı görmesine rağmen, verilerinin performans sorunları olmadan ölçeklenmesini sağlamak için DynamoDB’yi (isteğe bağlı mod) kullandı.

3. Nesnelerin İnterneti (IoT)

IoT cihazları, internete veya iletişim ağlarına bağlı olan ve insan müdahalesi olmadan veri toplayıp paylaşabilen gömülü yazılımlara ve sensörlere sahiptir. Sayısız miktarda veri üreten milyarlarca cihazla IoT NoSQL veri tabanları, IoT servis sağlayıcılarına ölçeklenebilirlik ve daha esnek şema sağlar.

Böyle bir hizmet, büyük, dinamik, tek tip olmayan veri kümeleriyle daha iyi başa çıkmak için MySQL’den MongoDB’ye geçen Freshub’dur.

4. Mobil Uygulamalar

Milyarlarca akıllı telefon kullanıcısıyla, mobil cihazlarda hizmet sunan işletmeler için ölçeklenebilirlik en büyük zorluk haline gelir. Daha esnek veri modellerine sahip bir NoSQL VTYS, genellikle mükemmel bir çözümdür.

Örneğin, hava durumu kanalları, kullanıcı verilerini işlerken ve hava durumu güncellemeleri sunarken, dakikada milyonlarca isteği işlemek için bir MongoDB veri tabanı kullanır.

NoSQL ve SQL, Mysql ve PostgreSQL ile Arasındaki Farklar

NoSQL ve SQL arasındaki farkları aşağıdaki tabloda bulabilirsiniz:

Parametre SQL NoSQL
Tanım SQL veri tabanlarına RDBMS veya İlişkisel Veri Tabanları denir. NoSQL veri tabanları ilişkisel olmayan veya dağıtılmış veri tabanı olarak adlandırılır.
Tasarım Geleneksel RDBMS, daha fazla içgörü için verileri analiz etmek ve elde etmek için SQL sözdizimini ve sorguları kullanır. OLAP sistemleri için kullanılırlar. NoSQL veri tabanı sistemi, çeşitli veri tabanı teknolojilerinden oluşur. Bu veri tabanları, modern uygulamanın geliştirilmesi için sunulan taleplere yanıt olarak geliştirilmiştir.
Sorgu Dili Yapılandırılmış sorgu dili (SQL). Bildirime dayalı sorgu dili yoktur.
Tür SQL veri tabanları tablo tabanlı veri tabanlarıdır NoSQL veri tabanları belge tabanlı, anahtar/değer çiftleri ve grafik veri tabanları olabilir.
Şema SQL veri tabanlarının önceden tanımlanmış bir şeması vardır. NoSQL veri tabanları, yapılandırılmamış veriler için dinamik şema kullanır.
Ölçekleme Yeteneği SQL veri tabanları dikey olarak ölçeklenebilir. NoSQL veri tabanları yatay olarak ölçeklenebilir
Örnekler Oracle, Postgres ve MS-SQL. MongoDB, Redis, Neo4j, Cassandra, Hbase.
Uygunluk  Karmaşık sorgu yoğun ortam için ideal bir seçimdir. Karmaşık sorgulara uygun değildir.
Hiyerarşik Veri Depolama SQL veri tabanları hiyerarşik veri depolama için uygun değildir. Anahtar/değer çifti yöntemini desteklediğinden hiyerarşik veri deposu için daha uygundur.
Geliştirme Yılı Düz dosya depolama ile ilgili sorunları çözmek için 1970’lerde geliştirildi. SQL veri tabanlarının sorunlarının ve sınırlamalarının üstesinden gelmek için 2000’lerin sonlarında geliştirildi.
En İyi Kullanım RDBMS veri tabanı, ACID sorunlarını çözmek için doğru seçenektir. NoSQL, veri kullanılabilirliği sorunlarını çözmek için en iyi kullanılan yöntemdir.
Önem Veri geçerliliği çok önemli olduğunda kullanılmalıdır. Hızlı verilere sahip olmanın doğru verilerden daha önemli olduğu durumlarda kullanılmalıdır.
Ne Zaman En İyi Seçenektir? Dinamik sorguları desteklemeniz gerektiğinde en iyi seçenektir. Değişen gereksinimlere göre ölçeklendirmeniz gerektiğinde en iyi seçenektir.
Donanım Özelleştirilmiş DB donanımı

(Oracle Exadata, vb.)

Emtia donanımı
Depolama Yüksek kullanılabilir depolama türü (SAN, RAID, vb.) Emtia, depolamayı yönlendirir (standart

HDD’ler, JBOD).

En İyi Özellikler Platformlar arası destek sağlar, güvenli ve ücretsizdir. Kullanımı kolaydır, yüksek performanslıdır ve esnek araçlar sunar.
En Çok Kullanan Şirketler Hootsuite, CircleCI, Gauges. Airbnb, Uber, Kickstarter.

MySQL ve NoSQL arasındaki bazı önemli farklar aşağıdaki şekildedir:

Öncelikle MySQL, tablo tasarımına dayalı ilişkisel bir veri tabanıdır. NoSQL ilişkisel değildir ve belge tabanlı bir tasarıma sahiptir.

MySQL veri tabanı şu anda piyasada NoSQL’den daha popülerdir. Bu, MySQL’in büyük bir topluluğu kapsadığı, NoSQL’in ise nispeten küçük bir topluluğa sahip olduğu anlamına gelir.

MySQL, katı şema kısıtlamaları nedeniyle kolayca ölçeklenemezken, dinamik şema yapısı nedeniyle NoSQL kolayca ölçeklenebilir.

Diğer bir önemli fark, MySQL’in veri tabanının oluşturulmasından önce ayrıntılı bir veritabanı modeli gerektirmesidir, NoSQL ise ayrıntılı bir modelleme gerektirmez.

Ayrıca, bir ilişkisel veri tabanı türü olan MySQL’den farklı olarak NoSQL, CouchDB ve MongoDB gibi örneklerle daha çok tasarım tabanlıdır. Ayrıca NoSQL, MySQL’den çok daha esnektir.

MySQL’in iyi yanlarından biri, bir uygulamanın geçerliliğine yardımcı olabilecek geniş bir raporlama araçları yelpazesine sahip olmasıdır. Öte yandan, NoSQL veri tabanlarında performans testi ve analizi için raporlama araçları yoktur.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Önceki Yazı

Openshift Nedir? Kubernetes vs. Openshift Arasındaki Farklar

Sonraki Yazı

Ağ Güvenliği Nedir? Network Security Hakkında Bilmeniz Gerekenler

İlgili Diğer Yazılar