Büyükannenize SQL ve NoSQL arasındaki farkı nasıl açıklayabilirsiniz?

Büyükannenize SQL ve NoSQL arasındaki farkı nasıl açıklayabilirsiniz?

Bir geliştiricinin verdiği en önemli kararlardan biri hangi veritabanının kullanılacağıdır. Uzun yıllar boyunca seçenekler, Yapılandırılmış Sorgu Dili'ni (SQL) destekleyen çeşitli ilişkisel veritabanı seçenekleriyle sınırlıydı. Bunlara MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 ve çok daha fazlası dahildir.

Son 15 yılda No-SQL yaklaşımı kapsamında birçok yeni veritabanı pazara girdi. Bunlar arasında Redis ve Amazon DynamoDB gibi anahtar-değer depoları, Cassandra ve HBase gibi geniş sütun veritabanları, MongoDB ve Couchbase gibi belge depoları ve Elasticsearch ve Solr gibi grafik veritabanları ve arama motorları yer alır.

Bu yazımızda işlevlerine girmeden SQL ve NoSQL'i anlamaya çalışacağız.
Üstelik yol boyunca biraz eğleneceğiz.

Büyükanneye SQL'i açıklamak

Büyükanne, senin tek torunun olmadığımı düşün. Bunun yerine anne ve baba birbirlerini tavşanlar gibi sevdiler, 100 çocukları oldu, sonra 50 tanesini daha evlat edindiler.

Yani hepimizi seviyorsunuz ve isimlerimizi, doğum günlerimizi, en sevdiğimiz dondurma lezzetlerini, kıyafet bedenlerimizi, hobilerimizi, eş isimlerimizi, çocuk isimlerimizi ve diğer süper önemli gerçekleri unutmak istemiyorsunuz. Ancak şunu kabul edelim. 85 yaşındasın ve eski güzel hafızan bunu kaldıramıyor.

Şans eseri torunlarınızın en akıllısı olduğum için yardımcı olabilirim. Bu yüzden evinize geliyorum, birkaç kağıt çıkarıyorum ve başlamadan önce sizden biraz kurabiye pişirmenizi istiyorum.

Bir kağıda "adlı bir liste hazırlıyoruz"torunlar". Her erkek torun Artık nasıl olduğunu gösterecek benzersiz bir numara da dahil olmak üzere, kendisi hakkında bazı önemli bilgiler kaydedildi. erkek torun o. Ayrıca, organizasyon adına, listenin hangi bilgileri içerdiğini her zaman bilebilmemiz için adlandırılmış nitelikleri listenin en üstüne yazıyoruz.

id
isim
doğum günü
son ziyaret
giysi boyutu
favori dondurma
benimsenen

1
Levye
09-22-1992
09-01-2019
L
naneli çikolata
yanlış

2
Jessica
07-21-1992
02-22-2018
M
taşlı yol
gerçek

…listeye devam ediyoruz!

Torunların listesi

Bir süre sonra her şeyi anlıyorsunuz ve neredeyse listeyi tamamlıyoruz! Ama siz bana dönüp “Eşlere, hobilere, torunlara yer açmayı unuttuk!” diyorsunuz. Ama hayır, unutmadık! Bu daha da ileri gider ve yeni bir sayfa gerektirir.

Başka bir kağıt çıkartıyorum ve onun üzerine listeyi çağırıyoruz Eşler. Bizim için önemli olan nitelikleri yine listenin en üstüne ekleyip satırlar halinde eklemeye başlıyoruz.

id
torun_id
isim
doğum günü

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…daha fazla eş!

Eşlerin listesi

Bu aşamada büyükanneme kimin kiminle evli olduğunu bilmek istiyorsa sadece eşleşmesi gerektiğini anlatıyorum. id listede torunlar с torun_id eşler listesinde.

Birkaç düzine kurabiyeden sonra biraz kestirmem gerekiyor. "Devam edebilir misin büyükanne?" Biraz kestirmek için çıkıyorum.

Birkaç saat sonra geri döneceğim. Harikasın büyükanne! Liste dışında her şey harika görünüyor хобби. Listede yaklaşık 1000 hobi var. Çoğu tekrarlanıyor; Ne oldu?

torun_id
hobi

1
bisiklet

4
bisiklet

3
bisiklet

7
koşu

11
bisiklet

…devam ediyoruz!

Kusura bakmayın, söylemeyi tamamen unuttum! Tek bir liste kullanarak yalnızca izleyebilirsiniz хобби. Sonra başka bir listede izlememiz gerekiyor torunlarbunu kim yapıyor хобби. Onu arayacağız "Ortak liste". Beğenmediğinizi görünce endişelenip liste moduna dönüyorum.

id
hobi

1
bisiklet

2
koşu

3
yüzme

…daha fazla hobi!

Hobilerin listesi

Hobi listemizi oluşturduktan sonra ikinci listemizi oluşturup adını veriyoruz "Torunların hobileri'.

torun_id
hobi_id

4
1

3
1

7
2

…Daha!

Torun hobilerinin genel listesi

Tüm bu çalışmalardan sonra büyükannenin artık inanılmaz derecede büyük ailesinin tamamını takip edebilecek harika bir hafıza sistemi var. Ve sonra -beni daha uzun süre oyalamak için- sihirli soruyu soruyor: "Bütün bunları yapmayı nerede öğrendin?"

ilişkisel veritabanları

İlişkisel veritabanı, erişebileceğiniz resmi olarak tanımlanmış bir dizi tablodur (örneğimizde bunlar sayfalardır). Göre veya tabloları yeniden düzenlemeye gerek kalmadan bunları çeşitli şekillerde toplayın Veri tabanı. Pek çok farklı türde ilişkisel veri tabanı vardır, ancak ne yazık ki bir kağıt parçası üzerindeki liste bunlardan biri değildir.

En popüler ilişkisel veritabanlarının ayırt edici özelliği SQL (Yapılandırılmış Sorgu Dili) sorgu dilidir. Onun sayesinde büyükanne hafıza sistemini bilgisayara aktarırsa “Geçen yıl beni ziyaret etmeyen, evli ve hobisi olmayan kim?” gibi sorulara hızlı bir şekilde cevap alabiliyor.

En popüler SQL veritabanı yönetim sistemlerinden biri açık kaynaklı MySQL'dir. Öncelikle web tabanlı yazılım uygulamaları için ilişkisel bir veritabanı yönetim sistemi (RDBMS) olarak uygulanır.

MySQL'in bazı temel özellikleri:

  • Oldukça iyi biliniyor, yaygın olarak kullanılıyor ve kapsamlı bir şekilde test ediliyor.
  • SQL ve ilişkisel veritabanları konusunda deneyimi olan birçok yetenekli geliştirici vardır.
  • Veriler çeşitli tablolarda saklanır, bu da birincil ve yabancı anahtarlar (tanımlayıcılar) kullanılarak ilişki kurmayı kolaylaştırır.
  • Kullanımı kolay ve verimli olduğundan büyük ve küçük işletmeler için idealdir.
  • Kaynak kodu GNU Genel Kamu Lisansı koşulları altındadır.

Şimdi unut TÜM.

Büyükanneye NoSQL'i açıklama

Büyükanne, bizim kocaman bir ailemiz var. 150 torunu var! Birçoğu evli, çocuk sahibi, bir şeylere düşkün vb. Senin yaşındayken hepimiz hakkındaki her şeyi hatırlamamız imkansız. İhtiyacınız olan şey bir hafıza sistemi!

Neyse ki ben hayır Doğum günümü ve en sevdiğim dondurma lezzetini unutmanı istersen yardımcı olabilirim. Ben de en yakın mağazaya koşuyorum, bir not defteri alıp evinize dönüyorum.

Attığım ilk adım defterimin kapağına büyük harflerle "Torunlar" yazmak oluyor. Sonra ilk sayfayı çevirip hakkımda hatırlamanız gereken her şeyi yazmaya başlıyorum. Birkaç dakika sonra sayfa buna benzer bir şeye benziyor.

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я: “Görünüşe göre her şey hazır!”
Büyükanne: “Bekle, peki ya torunların geri kalanı?”
Я: "Evet kesinlikle. Daha sonra her birine bir sayfa ayırın.”
Büyükanne: “Senin için yazdığım bilgilerin aynısını herkes için mi yazmam gerekecek?”
Я: “Hayır, sadece istersen. Göstermeme izin ver."
Büyükannemin kalemini kapıp sayfayı çeviriyorum ve en sevmediğim kuzenim hakkındaki bilgileri hızlıca not alıyorum.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

Ne zaman bir büyükanne torunlarından biri hakkında bir şeyler hatırlamaya ihtiyaç duysa, torunlarının defterinde doğru sayfaya gitmesi yeterlidir. Onlarla ilgili tüm bilgiler, hızlı bir şekilde değiştirip güncelleyebileceği sayfalarında saklanacaktır.

Her şey bittiğinde sihirli soruyu sorar: "Bütün bunları yapmayı nerede öğrendin?"

NoSQL veritabanları

Birçok vardır NoSQL veritabanları (“sadece SQL değil”). Örneklerimizde gösterdik belge veritabanı. NoSQL veritabanları, verileri ilişkisel veritabanlarında kullanılan tablo ilişkilerini hariç tutacak şekilde modeller. Bu veritabanları, 2000'li yılların başında, açık ölçeklendirme gereksinimleri nedeniyle (Facebook gibi) bulut tabanlı veritabanı kümelemesine ihtiyaç duyan şirketler arasında popüler hale geldi. Bu tür uygulamalarda veri tutarlılığı, performans ve ölçeklenebilirlikten çok daha az önemliydi.

Başlangıçta NoSQL veritabanları genellikle niş veri yönetimi görevleri için kullanılıyordu. Temel olarak web ve bulut uygulamaları söz konusu olduğunda NoSQL veritabanları önemli miktarda veriyi işleyip dağıtıyordu. NoSQL mühendisleri ayrıca güncellenen uygulamalarda hızlı değişikliklerin mümkün olması için esnek veri şemasını (veya bunun eksikliğini) beğendiler.

NoSQL'in temel özellikleri:

  • Veri depolamanın çok esnek yolu
  • Kümelere yatay ölçeklendirme
  • Kalıcılık/yayılma başına olası sıralama
  • Benzersiz anahtarlar kullanılarak tanımlanan belgeler

Ayrıntılı karşılaştırma

MySQL, tanımlanmış ve yapılandırılmış bir şema gerektirir.
NoSQL, herhangi bir veriyi bir "belgede" saklamanıza olanak tanır.

MySQL'in çok büyük bir topluluğu var.
NoSQL'in küçük ve hızla büyüyen bir topluluğu var.

NoSQL'in ölçeklendirilmesi kolaydır.
MySQL'in daha fazla yönetilebilirliğe ihtiyacı var.

MySQL, birçok veritabanı türünde kullanılan SQL'i kullanır.
NoSQL, popüler uygulamalara sahip veritabanı tabanlı bir tasarımdır.

MySQL standart bir sorgu dili (SQL) kullanır.
NoSQL standart bir sorgu dili kullanmaz.

MySQL'in birçok harika raporlama aracı vardır.
NoSQL'de standartlaştırılması zor çeşitli raporlama araçları bulunur.

MySQL, büyük veriler için performans sorunlarını gösterebilir.
NoSQL, büyük verilerde mükemmel performans sağlar.

Düşünceler 8base

Şirket 8 tabanÇalıştığım yerde her proje için AWS'de barındırılan Aurora MySQL ilişkisel veritabanına sahip bir çalışma alanı sağlıyoruz. Uygulamanız yüksek performans ve ölçeklenebilirlik gerektirdiğinde NoSQL mantıklı bir seçim olsa da, SaaS uygulamaları ve diğer iş yazılımlarını oluştururken bir DBMS tarafından sağlanan güçlü veri tutarlılığının çok önemli olduğuna inanıyoruz.

Raporlama, işlem bütünlüğü ve iyi tanımlanmış veri modelleri gerektiren iş uygulamaları geliştiren startuplar ve geliştiriciler için ilişkisel veritabanlarına yatırım yapmak bizce doğru seçimdir.

8base.com'da Aurora, Serverless ve GraphQL ile geliştirme hakkında daha fazla bilgi edinin burada.

Kaynak: habr.com

Yorum ekle