4 Ağustos 2020 Salı

NoSQL - İlişkisel Veritabanları (RDMS) Karşılaştırması - mongodb.com çevirisi

Merhaba bu yazımda size mongodb.com'da yayınlanan NoSQL vs Relational Databases başlıklı makaleyi çevireceğim.


NoSQL  - İlişkisel Veritabanları (RDMS) Karşılaştırması




Aralarından seçim yapabileceğiniz iki ana modern veritabanı türü ilişkisel ve ilişkisel olmayan , SQL veya NoSQL (sorgu dilleri için) olarak da bilinen veritabanlarıdır. Hangi veritabanının ihtiyaçlarınıza en uygun olduğuna karar verirken aşina olmanız gereken birkaç temel farklılık vardır.

TLDR: NoSQL (“SQL olmayan” veya “sadece SQL” değil) veritabanları, ölçeklendirme, hızlı sorgular, sık uygulama değişikliklerine izin verilmesi ve programcıları geliştiriciler için basitleştirmeye odaklanarak 2000'li yılların sonlarında geliştirilmiştir. SQL (Yapılandırılmış Sorgu Dili) ile erişilen ilişkisel veritabanları, depolama alanı geliştirici süresinden çok daha maliyetli olduğundan veri tekrarını azaltmaya odaklanarak 1970'lerde geliştirilmiştir. SQL veritabanları katı, karmaşık, tablo şeklinde şemalara sahip olma eğilimindedir ve tipik olarak pahalı dikey ölçeklendirme gerektirir.

tldr özeti: SQL veritabanları ilişkisel veritabanları olarak bilinir ve kesin, önceden tanımlanmış bir şema gerektiren tablo tabanlı bir veri yapısına sahiptir. NoSQL veritabanları veya ilişkisel olmayan veritabanları belge tabanlı, grafik veritabanları, anahtar / değer çiftleri veya geniş sütun depoları olabilir. NoSQL veritabanları, önceden yapılandırılmamış bir şema gerektirmez ve "yapılandırılmamış veriler" ile daha serbest çalışmanıza olanak tanır. İlişkisel veritabanları dikey olarak ölçeklendirilebilir, ancak genellikle daha pahalıdır, oysa NoSQL veritabanlarının yatay ölçekleme özelliği daha düşük maliyetlidir.

İlişkisel Veritabanlarının (RDBMS) ve NoSQL'in Tarihçesi

İlişkisel veritabanları (RDBMS) 40 yılı aşkın bir süredir kullanılmaktadır. Tarihsel olarak, veri yapılarının çok daha basit ve statik olduğu zamanlarda iyi çalıştılar. Bununla birlikte, teknoloji ve büyük veri uygulamaları ilerledikçe, geleneksel SQL tabanlı ilişkisel veritabanı hızla genişleyen veri hacimlerini ve veri yapılarının artan karmaşıklıklarını ele almak için daha az donanımlıydı. Son on yılda, ilişkisel olmayan, NoSQL veritabanları geleneksel SQL tabanlı ilişkisel veritabanlarına daha esnek, ölçeklenebilir, düşük maliyetli bir alternatif sunmak için daha popüler hale geldi.

1-Veri Modelleri ve Şema

NoSQL veritabanları dinamik şema içerir ve “yapılandırılmamış veriler” olarak bilinenleri kullanmanızı sağlar. Bu, ilk önce şemayı tanımlamak zorunda kalmadan uygulamanızı oluşturabileceğiniz anlamına gelir. İlişkisel bir veritabanında, veritabanına veri eklemeden önce şemanızı tanımlamanız gerekir. Önceden tanımlanmış bir şemaya ihtiyaç duyulmaması, veri ve gereksinimler değiştikçe NoSQL veritabanlarının güncellenmesini çok daha kolay hale getirir. İlişkisel bir veritabanında şema yapısının değiştirilmesi son derece pahalı, zaman alıcı olabilir ve genellikle kesinti veya hizmet kesintilerini içerebilir.

2-Veri yapısı

İlişkisel veritabanları tablo tabanlıdır. NoSQL veritabanları belge tabanlı, grafik veritabanları, anahtar / değer çiftleri veya geniş sütun depoları olabilir. İlişkisel veritabanları, verilerin çoğunlukla yapılandırıldığı ve ilişkileri tarafından açıkça tanımlandığı bir dönemde oluşturulmuştur. Bugün, bugünkü verilerin çok daha karmaşık olduğunu biliyoruz. NoSQL veritabanları, günümüzde var olan verilerin çoğunu oluşturan daha karmaşık, yapılandırılmamış verileri (metinler, sosyal medya gönderileri, fotoğraflar, videolar, e-posta gibi) işleyecek şekilde tasarlanmıştır.

3-Ölçekleme

İlişkisel veritabanları dikey olarak ölçeklenebilir ancak genellikle pahalıdır. Tüm veritabanını barındırmak için tek bir sunucuya ihtiyaç duyduklarından, ölçeklendirmek için daha büyük ve daha pahalı bir sunucu satın almanız gerekir. NoSQL veritabanını ölçeklendirmek, ilişkisel veritabanına göre çok daha ucuzdur, çünkü ucuz, ticari sunucular üzerinde yatay olarak ölçekleyerek kapasite ekleyebilirsiniz.

4-Geliştirme Modeli

NoSQL veritabanları daha çok açık kaynak topluluğunun bir parçası olma eğilimindedir. İlişkisel veritabanları, yazılımlarının kullanımı için kullanılan lisanslama ücretleri ile tipik olarak kapalı bir kaynaktır.

Genel NoSQL ve İlişkisel Veritabanı (diğer adıyla SQL) Soruları

NoSQL SQL'den daha mı iyi?

-NoSQL, daha karmaşık, sürekli değişen veri setlerine sahip ve hemen tanımlanması gerekmeyen esnek bir veri modeli gerektiren modern uygulamalar için daha iyi bir seçenek olma eğilimindedir. NoSQL veritabanlarını tercih eden çoğu geliştirici veya kuruluş, pazara daha hızlı gitmelerini, güncellemeleri daha hızlı hale getirmelerini sağlayan çevik özelliklere ilgi duyuyor. Geleneksel, SQL tabanlı, ilişkisel veritabanlarının aksine, NoSQL veritabanları verileri gerçek zamanlı olarak depolayabilir ve işleyebilir.

-SQL veritabanlarının hala bazı özel kullanım durumları olmasına rağmen, NoSQL veritabanlarının SQL veritabanlarının muazzam maliyetler ve hız, çeviklik vb. Kritik fedakarlıkları olmadan işleyemediği birçok özelliği vardır.

SQL ve NoSQL arasındaki farklar


1-Veri Depolama Modeli : 

SQL Veritabanları : Sabit satır ve sütun içeren tablolar

NoSQL Veritabanları : Document: JSON belgeleri, Anahtar / değer: anahtar / değer çiftleri, Geniş sütun: satır ve dinamik sütun içeren tablolar, Grafik: nodes ve edges.


2-Gelişim Tarihi :

SQL Veritabanları : 1970'lerde veri tekrarını azaltmaya odaklanarak geliştirildi

NoSQL Veritabanları : 2000'li yılların sonlarında, çevik ve DevOps uygulamaları tarafından ölçeklendirmeye ve hızlı uygulama değişikliğine izin vererek geliştirildi.


3-Örnekler:

SQL Veritabanları : Oracle, MySQL, Microsoft SQL Server ve PostgreSQL

NoSQL Veritabanları :  Belge: MongoDB ve CouchDB, Anahtar / değer çifti: Redis ve DynamoDB, Geniş sütun: Cassandra ve HBase, Grafik: Neo4j ve Amazon Neptün


4-Birincil Amaç:

SQL Veritabanları : Genel amaç

NoSQL Veritabanları : Document(Belge): genel amaçlı, Key/Value(Anahtar / değer): basit arama sorgularıyla büyük miktarlarda veri, Wide-column(Geniş sütun): tahmin edilebilir sorgu desenleriyle büyük miktarlarda veri, Graph(Grafik): bağlı veriler arasındaki ilişkileri analiz etme ve çaprazlama


5-Şemalar :

SQL Veritabanları : Katı

NoSQL Veritabanları : Esnek



6-Ölçekleme :

SQL Veritabanları : Dikey (daha büyük bir sunucu ile ölçeklendirme)

NoSQL Veritabanları :  Yatay (emtia sunucularında genişleme)


7-Çok Kayıtlı ACID İşlemleri :

SQL Veritabanları : Destekler

NoSQL Veritabanları : Çoğu çoklu kayıt ACID işlemlerini desteklemez. Ancak, bazıları - MongoDB gibi - destekler.

8-Joins :

SQL Veritabanları : Genellikle gerekli

NoSQL Veritabanları : Genellikle gerekli değildir

9- Verileri Nesne ile Eşleme :

SQL Veritabanları : ORM (nesne-ilişkisel eşleme) gerektirir

NoSQL Veritabanları :  Birçoğu ORM gerektirmez. MongoDB belgeleri, en popüler programlama dillerindeki veri yapılarıyla doğrudan eşleşir.

NoSQL Veritabanlarının Faydaları Nelerdir?

NoSQL veritabanları ilişkisel veritabanlarına göre birçok fayda sağlar. NoSQL veritabanlarının esnek veri modelleri vardır, yatay olarak ölçeklendirilir, inanılmaz derecede hızlı sorguları vardır ve geliştiricilerin birlikte çalışması kolaydır.

-Esnek veri modelleri

NoSQL veritabanları genellikle çok esnek şemalara sahiptir. Esnek bir şema, gereksinimler değiştikçe veritabanınızda kolayca değişiklik yapmanızı sağlar. Kullanıcılarınıza daha hızlı değer katmak için yeni uygulama özelliklerini hızlı bir şekilde ve sürekli olarak entegre edebilirsiniz.

-Yatay ölçeklendirme

Çoğu SQL veritabanı, geçerli sunucunuzun kapasite gereksinimlerini aştığınızda dikey olarak ölçeklendirmenizi (daha büyük, daha pahalı bir sunucuya geçmenizi) gerektirir. Tersine, çoğu NoSQL veritabanı yatay olarak ölçeklendirmenize izin verir, yani ihtiyacınız olduğunda daha ucuz, emtia sunucuları ekleyebilirsiniz.

-Hızlı sorgular

NoSQL veritabanlarındaki sorgular SQL veritabanlarından daha hızlı olabilir. Neden? SQL veritabanlarındaki veriler genellikle normalleştirilir, bu nedenle tek bir nesne veya varlık için sorgular birden çok tablodaki verilere katılmanızı gerektirir. Tablolarınız büyüdükçe birleşimler pahalı hale gelebilir. Ancak, NoSQL veritabanlarındaki veriler genellikle sorgular için optimize edilmiş bir şekilde saklanır. MongoDB'yi kullandığınızda temel kural Veri'dir, birlikte erişildiğinde birlikte depolanmalıdır. Sorgular genellikle join  gerektirmez, bu nedenle sorgular çok hızlıdır.

-Easy for developers

MongoDB gibi bazı NoSQL veritabanları veri yapılarını popüler programlama dillerinin veri haritalarıyla eşler. Bu eşleme, geliştiricilerin verilerini uygulama kodlarında kullandıkları gibi depolamasına olanak tanır. Bu önemsiz bir avantaj gibi görünse de, bu eşleme geliştiricilerin daha az kod yazmalarına olanak tanıyarak daha hızlı geliştirme süresi ve daha az hataya yol açabilir.


NoSQL Veritabanlarının Dezavantajları Nelerdir?


NoSQL veritabanlarının en sık belirtilen dezavantajlarından biri, birden fazla belge üzerinde ACID (atomisite, tutarlılık, izolasyon, dayanıklılık) işlemlerini desteklememesidir. Uygun şema tasarımı ile, birçok uygulama için tek kayıt atomisitesi kabul edilebilir. 

Bununla birlikte, birden fazla kayıtta ACID gerektiren hala birçok uygulama vardır.Bu kullanım durumlarını ele almak için MongoDB, 4.0 sürümünde çok belgeli ACID işlemleri için destek ekledi ve bunları parçalanmış kümeleri kapsayacak şekilde 4.2'de genişletti.

NoSQL veritabanlarındaki veri modelleri veri tekrarnını azaltmak için değil, genellikle sorgular için optimize edildiğinden, NoSQL veritabanları SQL veritabanlarından daha büyük olabilir. Depolama şu anda o kadar ucuz ki çoğu bunu küçük bir dezavantaj olarak görülür ve bazı NoSQL veritabanları da depolama ayak izini azaltmak için sıkıştırmayı destekliyor.

Seçtiğiniz NoSQL veritabanı türüne bağlı olarak, tüm kullanım durumlarınızı tek bir veritabanında gerçekleştiremeyebilirsiniz. Örneğin, grafik veritabanları verilerinizdeki ilişkileri analiz etmek için mükemmeldir, ancak aralık sorguları gibi verilerin günlük olarak alınması için ihtiyacınız olanları sağlamayabilir. Bir NoSQL veritabanı seçerken, kullanım durumlarınızın ne olacağını ve MongoDB gibi genel amaçlı bir veritabanının daha iyi bir seçenek olup olmadığını düşünün.



0 yorum: