SQL vs NoSQL

Altan Emre Demirci
ucuncubinyil
Published in
5 min readDec 20, 2022

SQL nedir?

Yapılandırılmış Sorgu Dili, genellikle şu şekilde kısaltılır: SQL , RDBMS’de (İlişkisel Veritabanı Yönetim Sistemi) veri depolamak, işlemek ve almak için kullanılan alana özgü bir programlama dilidir.

Temelde, çeşitli varlıklar ve verilerin değişkenleri arasında bir ilişkiye sahip olduğumuz yapılandırılmış verileri yönetmek için kullanılır.

SQL, veritabanlarında depolanan verileri sorgulamak veya işlemek için çeşitli türden ifadelerden oluşur.

Bu tür ifadeler aşağıda gösterildiği gibi ayrıca sınıflandırılır:

  • DDL (Veri Tanımlama Dili): Bunlar, şema oluşturma ve değiştirme için kullanılan Sorgulardır. SQL’deki yaygın DDL komutları arasında CREATE, ALTER ve DROP bulunur.
  • DML (Veri işleme dili): Bu Sorgu, veritabanında seçme, ekleme, güncelleme ve silme işlemlerini gerçekleştirmek için kullanılır. SQL’deki yaygın DML komutları SELECT, INSERT, UPDATE ve DELETE’dir.
  • DCL (Veri Kontrol Dili): Bu tür sorgular, veritabanına erişimi kontrol etmek ve yetkilendirme sağlamak için kullanılır. SQL’deki yaygın DCL komutları GRANT ve REVOKE’dur.
  • TCL (İşlem Kontrol Dili): Bu sorgular, veri bütünlüğünü korumak için işlemleri kontrol etmek ve yönetmek için kullanılır. SQL’deki yaygın TCL komutları arasında BEGIN, COMMIT ve ROLLBACK bulunur.

NoSQL nedir?

NoSQL ( NotOnlySQL — yalnızca SQL değil, SQL olmayan veya ilişkisel olmayan anlamına da gelir), size ilişkisel olmayan bir biçimde olan, yani tablo şeklinde yapılandırılmamış ve tablo biçiminde olmayan verileri yönetmenin bir yolunu sunan bir veri tabanıdır.

NoSQL, büyük veri ve gerçek zamanlı uygulamalarda kullanıldığı için giderek daha popüler hale geliyor. Veri yapıları, ilişkisel veritabanlarından tamamen farklıdır.

NoSQL, verilerin tablolara yerleştirildiği ve veritabanı oluşturulmadan önce veri yapısının dikkatlice tasarlandığı geleneksel ilişkisel veri tabanlarına bir alternatiftir. Esas olarak devasa dağıtılmış veri kümeleriyle çalışmak için yararlıdır. NoSQL veri tabanları ölçeklenebilir, yüksek performanslı ve doğası gereği esnektir.

NoSQL Veri tabanlarının Türleri:

Temel olarak, dört tür NoSQL veritabanı vardır.

1) Sütun: Geniş sütun, veri tablolarını satırlar yerine sütunlar olarak depolar ve düzenler.

Geleneksel veritabanlarından çok daha hızlı bir şekilde büyük hacimli verileri sorgulayabilirler. Öneri motorları, kataloglar, dolandırıcılık tespiti vb. İçin kullanılabilirler.

Örnekler: Cassandra, HBase, Google BigTable, Scylla, Vertica vb.

2) Belge: Belge veri tabanları, yani belge, yarı yapılandırılmış verileri belge biçiminde açıklamasıyla birlikte depolar ve saklar.

Her belgenin ele alındığı benzersiz bir anahtar vardır. İçerik yönetimi ve mobil uygulama verilerinin işlenmesi için faydalıdırlar. JSON ve JavaScript ile birlikte yaygın olarak kullanılırlar. Belge veritabanları ayrıca belgelerin içeriklerine göre getirilebileceği bir API ve sorgu dili sunar.

Örnekler: Apache, MongoDB, MarkLogic, CouchDB, BaseX, IBM Domino vb.

3) Anahtar / değer çifti: Anahtar değer veritabanları, verilerin bir anahtar-değer çiftleri koleksiyonunu temsil ettiği ilişkilendirilebilir bir diziye (harita veya sözlük) dayalı veri modeline sahiptir. Web uygulamalarında oturum yönetimi ve önbelleğe alma için oldukça uygundurlar.

Örnekler: Aerospike, Berkeley DB, Apache tutuşturur, Dynamo, Redis, Riak, ZooKeeper vb.

4) Grafik: Grafik depolarında veriler düğümler ve kenarlar olarak düzenlenir.

Bir düğümü bir kayıt ve kenarı ilişkisel veritabanındaki kayıtlar arasındaki bir ilişki olarak düşünebilirsiniz. Bu model, veri ilişkilerinin daha zengin bir temsilini destekler. Müşteri ilişkileri Yönetim sistemleri, yol haritaları, rezervasyon sistemleri vb. İçin yararlıdır.

Örnekler: AllegroGraph, InfiniteGraph, MarkLogic, Neo4j, IBM grafiği, Titan vb.

SQL ve NoSQL Arasındaki Fark

SQL ve NoSQL arasında belirli ölçütler açısından farklılıklar bulunuyor. Bu farklılıklar şu şekilde sıralanabilir:

> NoSQL veritabanları ilişkisel değilken, SQL veritabanları ilişkiseldir.

> SQL veritabanlarında yapılandırılmış sorgu dili kullanılır ve önceden tanımlanmış bir şema bulunur. NoSQL veritabanları ise yapılandırılmamış veriler için dinamik şemalara sahiptir.

> SQL veritabanları dikey olarak, NoSQL veritabanları ise yatay olarak ölçeklenebilir.

> SQL veritabanları tablo tabanlıdır. NoSQL veritabanları ise belge, anahtar/değer, grafik veya geniş sütun depolayabilir.

> SQL veritabanları çok satırlı işlemler açısından daha elverişliyken, NoSQL belgeler veya JSON gibi yapılandırılmamış veriler için daha kullanışlıdır.

NoSQL Veritabanının Avantajları Nelerdir?

NoSQL veritabanları, standart ilişkisel veritabanı teknolojisinin sınırlamalarına karşılık olarak oluşturulmuştur. SQL veritabanları gibi ilişkisel veritabanları ile karşılaştırıldığında, NoSQL veritabanları genellikle daha ölçeklenebilirdir ve bu sayede daha üstün performans sağlayabilir. Ayrıca, veri modellerinin esnekliği ve kullanım kolaylığı, özellikle bulut ortamında ilişkisel veritabanı modellerine kıyasla gelişimi hızlandırabilir.

Her bir NoSQL veritabanı türünün farklı güçlü yönleri bulunsa da tamamı sahip oldukları ortak özellikler ile belirli avantajlar sağlar. NoSQL veritabanın avantajlarını şu şekilde özetleyebiliriz:

  • Yüksek Hızda Veri İşleme: SQL veritabanları çoğunlukla, performansı artırmak için daha fazla CPU’ya ve belleğe sahip bilgisayarların kullanılmasına dayanan bir ölçek büyütme yapısına sahiptir. NoSQL veritabanları ise internet ve bulut sistemleriyle ölçek genişletmeyi daha kolay uygulanabilir bir sürece dönüştürüyor. NoSQL sistemlerinin ölçeklenebilir yapısı, veri hacmi ve trafiği yoğunlaştığında ölçeklenebilirlik için açık bir yol sağlar. SQL veritabanlarında ise benzer türde ölçeklenebilirlik elde etmek maliyetli olabiliyor.
  • Çeşitli Veri Türlerini Depolama: SQL veritabanı gibi ilişkisel veritabanları, verileri önceden tanımlanmış bir şemaya sahip yapılandırılmış tablolarda depolar. NoSQL veritabanının şemaları ise esnektir. Bu durum, NoSQL veritabanını yeni veri biçimlerine uyarlamayı kolaylaştırır. Metin verileri, zaman serisi verileri gibi her türden büyük veri, JSON dosyaları, anahtar-değer ikili değerleri, bağıntılı bilgi ağları gibi yaygın olarak kullanılan veri biçimleri NoSQL tarafından desteklenir.
  • Şema ve Alanları Kolayca Güncelleştirme: SQL veritabanlarının aksine NoSQL veritabanlarında kullanılan veri modelleri daha basit ve anlaşılır biçimlerde depolanırlar. Ayrıca, NoSQL veritabanları geliştiricilerin verilerin yapısını doğrudan değiştirmesine, güncelleştirmesine izin verir. Bu sayede, yeni bir veri türü mevcut depolanan veriler kadar kolay bir şekilde depolanabiliyor.
  • Geliştirici Dostu: NoSQL veritabanlarında, veriler uygulamalarda kullanılan veri nesnelerine yakın biçimlerde depolar. Bu nedenle, veriler için veritabanlarının içine veya dışına taşınırken daha az dönüşüm gerekiyor. Verilerin olduğu gibi saklanabilmesi biçimleri dönüştürmek ve yeni bir veritabanı başlatmak için geliştirilecek veya satın alınacak gerekli olan uygulama maliyetleri ortadan kalıyor.
  • Yatay Ölçekleme: Çoğu SQL veritabanı, mevcut sunucu kapasite gereksinimlerinin aşılmasıyla daha büyük ve pahalı bir sunucuya geçilmesini gerektirir. NoSQL veritabanı yatay olarak ölçeklendirmeye izin verir. Bu sayede, ihtiyaç halinde daha ucuz ticari sunucular eklenebiliyor.

NoSQL Veritabanının Dezavantajları Nelerdir?

NoSQL veritabanı sahip olduğu avantajlar gibi belirli dezavantajları da bulunuyor. NoSQL veritabanının dezavantajları şu şekilde sıralanabilir:

  • Standartlaşma Eksikliği: NoSQL veritabanlarının kurallarını ve rollerini belirleyen bir standart bulunmuyor. NoSQL veritabanlarının tasarım ve sorgulama dilleri farklı NoSQL ürünleri arasında büyük farklılık gösterebiliyor. Bu farklılıklar, SQL veritabanında olduğunda çok daha fazladır.
  • Veritabanının Yedeklenmesi: Yedeklemeler NoSQL veritabanları için sunulan bir diğer dezavantajdır. Belirli NoSQL veritabanları yedekleme için çeşitli araçlar sağlasa da bu araçlar eksiksiz veri yedekleme çözümü sağlamak için yeterli olmayabiliyor.
  • Tutarlılık: NoSQL veritabanı ölçeklendirilebilirliği ve yüksek performansı ile ön plana çıksa da söz konusu verilerin tutarlılığı olduğunda NoSQL veritabanı çok fazla dikkate almaz. Bu nedenle, SQL gibi ilişkisel veritabanlarına kıyasla daha az güvenilir olarak görülüyor.

Yukarıda avantaj ve dezavantajlarını listelediğimiz NoSQL veritabanlarının özellikleri sağlayıcılara göre farklılık gösterebiliyor. Sağlayıcıya bağlı olarak, avantajlar artarken dezavantajlara yönelik farklı çözümler sunulabiliyor.

--

--