Reklam

SQL ve NoSQL

SQL ve NoSQL'in Avantaj-Dezavantajları, Arasındaki Farklar Nelerdir?
SQL ve NoSQL’in ne olduğunu, nasıl çalıştığını ve ne işe yaradığını önceki yazılarımda ayrı olarak ele almıştım. Bugünse SQL ve NoSQL arasındaki farklardan, SQL ve NoSQL’in artı-eksilerinden bahsedeceğim.

SQL ve NoSQL hakkında bilgi sahibi değilseniz SQL Nedir? ve NoSQL Nedir? konulu yazılarıma gidebilir ve sonrasında buraya dönebilirsiniz. 

SQL Nedir? Nasıl Çalışır? Ne İşe Yarar?

SQL Nedir? Nasıl Çalışır? Ne İşe Yarar?

1970’li yıllarda Edgar F. Codd tarafından “relational database” kavramının ortaya atılmasından kısa süre sonra SQL programlama (?) dili,  Donald D. Chamberlin ve Raymond F. Boyce tarafından IBM’de geliştirilmiştir. Bugün açılımı Structured Query Language olan SQL’in ne olduğundan, ne işe yaradığından, nasıl bir yazım şekline (syntax) sahip olduğundan bahsederken SQL tarihine, SQL Server ve MySQL kavramlarına da değineceğim.

  • 21.01.2023

SQL ve NoSQL Arasındaki Farklar Nelerdir?

SQL ve NoSQL, iki karşıt veri tabanı yönetimi yaklaşımıdır. SQL, 1970’li yıllarda ilişkisel veri tabanı (relational database) modeline dayanarak geliştirildikten sonra 1986 ve 1987 yıllarında standart haline getirilmiştir. Aksine NoSQL, 2000’li yıllarda ilişkisel olmayan (non-relational) veri tabanı mantığında geliştirilmiştir.

SQL ve NoSQL pek çok konuda birbirinden ayrılmaktadır. Peki nedir bu farklar? Hadi SQL ve NoSQL’in farklarını karşılaştırdığım tabloya göz atalım.

SQL NoSQL
Yapılandırılmış Sorgu Dili (Structured Query Language) Non-relational, Non-SQL, Not only SQL
Yapılandırılmış veri tabanıdır. Yapılandırılmamış ya da yarı yapılandırılmış bir veri tabanıdır.
Veriler sütün ve kolonların bulunduğu tablolarda tutulur. Veriler Document, Graph, Key-Value, Wide-Column veri tabanlarında tutulur.
İlişkisel bir veri tabanıdır. İlişkisel olmayan bir veri tabanıdır.
Veriler dikey (vertical) şekilde genişler. Veriler yatay (horizontal) ve dikey (vertical) şekilde genişleyebilir.
Verilerin yatay olarak genişlemesi mümkün olmadığından verilerin fazlalığı ya da trafiğin artması sunucuya, sunucunun kapasitesi ve performansına bağlıdır. Veriler yatay genişlemenin mümkün olması nedeniyle birden fazla sunucuda parçalar halinde depolanabilir. Bundan veri tabanının hızı ve performansı olumlu yönde etkilenir.
Veri yönetimi, veri analizi, müşteri ilişkisi yönetimi vb. amaçlarla kullanılır. Web, mobil, masaüstü uygulamalarında sıklıkla kullanılır. Mobil, web ve büyük veri uygulamalarında, gerçek zamanlı uygulamalarda sıklıkla tercih edilir.
ANSI ve ISO tarafından standartlaştırılmıştır. -
Verilerin belirli bir şemaya uygun olma zorunluluğu vardır. Esnektir, verilerin tek bir şemaya bağlı kalmasına gerek yoktur.
PostgreSQL, SQL Server, MySQL, Oracle Database, MariaDB, MSSQL MongoDB, Neo4J, DynamoDB, Elasticsearch, HBase, CouchDB, OrientDB, Cassandra, Redis, RavenDB, Bigtable
Schema on Write yaklaşımını kullanmaktadır. Scheme on Read yaklaşımını kullanmaktadır.

SQL (Structured Query Language), ve NoSQL arasındaki farkların ne olduğunu maddeler halinde inceledik. Şimdi sıra geldi SQL ve NoSQL’in artı-eksilerinin neler olduğunu öğrenmeye.


SQL’in Avantajları Nelerdir?

1970 yılında geliştirilen ve ilişkisel modeli kullanan SQL (Structured Query Language), yapısı ve tasarımı itibariyle bazı avantajlara sahiptir. SQL’in avantajları şunlardır:

  1. Verilerin işlenmesi, değiştirilmesi, sorgulanması işlemlerinde hızlı ve etkili şekilde çalışır. Milyonlarca veriyi hızlı şekilde analiz ederek sonuçların gösterilmesini sağlar. Aynı zamanda SQL, büyük hacimlerdeki verileri saniyeler içinde işleyebilir, sorgulayabilir.
  2. SQL ilişkisel modeli (relation model) kullanır.
  3. SQL isminden anlaşılacağı üzere yapılandırılmış (structured) bir veri tabanıdır. Verilerin tekrardan karakterize edilmesine ihtiyaç yoktur. Bunu şöyle açıklayabilirim: NoSQL veri tabanları esnektir. Yani verileri ilk olarak belirli bir şema olmadan ekler. Sonrasında verinin yorumlanması esnasında bir şemanın hazırlanması gerekir. (Schema on Read) SQL’deyse tablolar belirli bir şemaya uygun olarak oluşturulmak zorundadır ki veriler yazılabilsin. (Schema on Write)
  4. SQL’in kullanıcı sayısı ve toplulukları fazladır. Bu da herhangi bir soruya, sıkıntıya hızlıca dönüt verilmesi anlamına gelmektedir.
  5. Gramer yapısı oldukça basit ve kolaydır. SQL’deki SELECT, INSERT, DELETE gibi ifadeler oldukça basit bir yazım şekline sahiptir. Çoğunlukla noktalı virgüle dahi ihtiyaç olmaz ki bu yazımı daha da kolaylaştırır.
  6. ANSI (American National Standards Institute) ve ISO (International Standards Organization) tarafından standartlaştırılmıştır. Microsoft, Oracle gibi büyük şirketler tarafından desteklenmektedir.
  7. Verilerin gösterilmesi için farklı türlerde View yapıları kullanılabilmektedir. Aynı tabloyu birden fazla şekilde göstermek, farklı tabloları View’ler aracılığıyla birleştirmek ve sorgulamak mümkündür.
  8. Güncel kalmaya devam etmektedir. SQL zaman zaman aldığı güncellemelerle kendisini geliştirmekte ve eksiklerini minimize etmektedir.

SQL’in Dezavantajları Nelerdir?

SQL’in dezavantajları ise şunlardır:

  1. Esnek değildir. Bu durumun hem artısı hem eksisi vardır. SQL yapılandırılmış olduğundan esnek değildir. Bu yüzden sadece bir satır verinin ihtiyaç duyduğu yeni bir alan (field), diğer tüm veriler için de NULL olarak oluşturulacaktır. Bu da zamanla performans kaybı oluşturabilmektedir.
  2. Yatay genişlemeyi engelleyen ve sadece dikey genişlemeye izin veren yapısı vardır. Bundan dolayı verilerin devasa boyutlara ulaşması, verilerin depolandığı sunucudaki kaynakları yetersiz hale getirecektir ve RAM, işlemci gibi bilgisayar kaynaklarının artırılmasına ihtiyaç duyulacaktır.
  3. Programcıların bir veri tabanı üzerinde tümüyle kontrole sahip olmasına izin verilmez.
  4. Şemalar tablolar oluşturulmadan önce tasarlanmak zorundadır. Bu durum değişiklikleri ve düzenlemeleri daha zor ve kompleks bir hale sokabilmektedir.

NoSQL’in Avantajları Nelerdir?

Son yıllarda popülerleşen NoSQL’in avantajları şunlardır:

  1. Esnektir. Tümüyle belirli bir şemaya bağlı değildir. Bu durum performansın ve hızın artmasına katkı sağlar.
  2. Çevik (Agile) üretimi teşvik eder. SQL’deki gibi başlangıçta bir şema zorunluluğu olmadığından dolayı verilerin hızlıca işlenmesini sağlar.
  3. Yatay ve dikey genişlemeye izin verir. Böylelikle verilerin tek bir sunucuda tutulma zorunluluğu ortadan kalkmış olur. (NoSQL’in scalable özelliği)
  4. Sorgu işlemesi hızlıdır.
  5. Esnek yapısı nedeniyle büyük veri setlerinin oluşmasını mümkün kılar.
  6. SQL’in aksine NoSQL’de verilerin yapısı kolaylıkla değiştirilebilir. Örneğin, User isimli bir veri deposu olsun ve burada kullanıcı hesapları tutulsun. Böyle bir senaryoda “@ofcskn” kullanıcı adına sahip bir kişinin cep telefonu bilgisini sisteme eklemesi diğer verilerin yapısını ve karakterini etkilemez. Ancak SQL’de bunun için tabloya yeni bir sütun eklenmelidir.
  7. Yazılımcılar ve geliştiriciler için büyük bir topluluğa sahiptir ki bu SQL’de olduğu gibi soru ve sıkıntıların hızlıca çözülmesini kolaylaştırmaktadır.

NoSQL’in Dezavantajları Nelerdir?

NoSQL’in dezavantajlarıysa şunlardır:

  1. Veri tabanının yedekleme işlemleri çeşitli araçlar sağlanıyor olsa da kolay değildir.
  2. NoSQL’de veriler ilişkisel bir model kullanmazlar. Bu sebeple önceden eklenmiş bilgilerin tekrar yazılması, silinmesi mümkün olabilir ki bu da veri tabanını güvensiz yapacaktır.
  3. Kuralların ve rollerin tanımlandığı herhangi bir standardı yoktur. SQL’in aksine NoSQL ürünleri birbirlerinden oldukça farklıdır. (MongoDb, Neo4J gibi farklı ürünler) Tasarım ve sorgu dilleriyse yine belirli bir standarda sahip değildir. [3]


Reklam

Bugün SQL ve NoSQL veri tabanlarının arasındaki farklardan, SQL ve NoSQL’in avantaj-dezavantajlarının neler olduğundan maddeler halinde bahsettim. Yazım hakkındaki görüşlerinizi yorumlar kısmından belirtebilirsiniz. Peki sizin favoriniz SQL mi NoSQL mi?

Ömer Faruk Coşkun - ÖFC
Ömer Faruk Coşkun

İstanbul Üniversitesi-Cerrahpaşa Bilgisayar Mühendisliği öğrencisiyim. Araştırmayı, öğrenmeyi ve aynı zamanda öğrendiklerimi paylaşmayı seviyorum.

Yorumlar

Belirli sürede gönderebileceğinizden fazla yorum gönderdiniz. Bir süre bekleyiniz.
Belirli sürede gönderebileceğinizden fazla yorum gönderdiniz. Bir süre bekleyiniz.
Belirli sürede gönderebileceğinizden fazla yorum gönderdiniz. Bir süre bekleyiniz.
Yorumunuz başarılı bir şekilde gönderilmiştir. Teşekkür ederiz.
Yorumunuz gönderilirken bir hata meydana geldi. Lütfen daha sonra tekrar deneyin. Sorun devam ederse lütfen bizimle iletişime geçin.

İlk yorumu paylaşan siz olun.

Reklam