Bagaimana menjelaskan kepada nenekmu perbedaan antara SQL dan NoSQL

Bagaimana menjelaskan kepada nenekmu perbedaan antara SQL dan NoSQL

Salah satu keputusan terpenting yang diambil pengembang adalah database mana yang akan digunakan. Selama bertahun-tahun, opsi terbatas pada berbagai opsi database relasional yang mendukung Structured Query Language (SQL). Ini termasuk MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 dan banyak lagi.

Selama 15 tahun terakhir, banyak database baru memasuki pasar dengan pendekatan No-SQL. Ini termasuk penyimpanan nilai kunci seperti Redis dan Amazon DynamoDB, database kolom luas seperti Cassandra dan HBase, penyimpanan dokumen seperti MongoDB dan Couchbase, serta database grafik dan mesin pencari seperti Elasticsearch dan Solr.

Pada artikel ini, kita akan mencoba memahami SQL dan NoSQL tanpa membahas fungsinya.
Ditambah lagi, kita akan bersenang-senang sepanjang perjalanan.

Menjelaskan SQL kepada Nenek

Nenek, bayangkan aku bukan satu-satunya cucumu. Sebaliknya, ibu dan ayah saling mencintai seperti kelinci, mereka mempunyai 100 anak, lalu mereka mengadopsi 50 anak lagi.

Jadi, Anda mencintai kami semua dan tidak ingin melupakan nama, tanggal lahir, rasa es krim favorit, ukuran pakaian, hobi, nama pasangan, nama keturunan, dan fakta super penting lainnya. Namun, hadapi saja. Anda berusia 85 tahun dan ingatan lama yang baik tidak dapat mengatasinya.

Untungnya, sebagai cucu Anda yang paling pintar, saya bisa membantu. Jadi saya datang ke rumah Anda, saya mengambil beberapa lembar kertas dan meminta Anda membuatkan beberapa kue sebelum kita mulai.

Di selembar kertas, kami membuat daftar yang disebut "Cucu". Setiap cucu direkam dengan beberapa informasi penting tentang dia, termasuk nomor unik yang sekarang akan menunjukkan caranya cucu dia adalah. Selain itu, demi pengorganisasian, kami menuliskan atribut bernama di bagian atas daftar sehingga kami selalu mengetahui informasi apa yang terdapat dalam daftar tersebut.

id
nama
ulang tahun
Kunjungan terakhir
Ukuran pakaian
es krim favorit
diadopsi

1
Mengungkil
09-22-1992
09-01-2019
L
coklat mint
palsu

2
Jessica
07-21-1992
02-22-2018
M
jalan berbatu
benar

…kami melanjutkan daftarnya!

Daftar cucu

Setelah beberapa saat, Anda memahami segalanya dan kami hampir selesai dengan daftarnya! Namun, Anda menoleh ke saya dan berkata: “Kami lupa menambah ruang untuk pasangan, hobi, cucu!” Tapi tidak, kami belum lupa! Ini mengikuti lebih jauh dan membutuhkan selembar kertas baru.

Jadi saya mengeluarkan selembar kertas lain dan di atasnya kami memanggil daftarnya pasangan. Kami kembali menambahkan atribut yang penting bagi kami ke bagian atas daftar dan mulai menambahkan baris.

id
cucu_id
nama
ulang tahun

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…lebih banyak pasangan!

Daftar pasangan

Pada tahap ini, saya menjelaskan kepada nenek saya bahwa jika dia ingin tahu siapa yang menikah dengan siapa, maka dia hanya perlu menjodohkannya saja id dalam daftar cucu с cucu_id dalam daftar pasangan.

Setelah beberapa lusin kue, saya perlu tidur siang. "Bisakah nenek melanjutkan?" Aku berangkat untuk tidur siang.

Saya akan kembali dalam beberapa jam. Kamu keren, nenek! Semuanya tampak bagus kecuali daftarnya hobi. Ada sekitar 1000 hobi dalam daftar. Kebanyakan di antaranya bersifat berulang; Apa yang terjadi?

cucu_id
hobi

1
bersepeda

4
bersepeda

3
bersepeda

7
berjalan

11
bersepeda

…kita lanjutkan!

Maaf, saya benar-benar lupa mengatakannya! Dengan menggunakan satu daftar, Anda hanya dapat melacak hobi. Kemudian di daftar lain perlu kita telusuri cucusiapa yang melakukan ini hobi. Kami akan menyebutnya "Daftar umum". Melihat Anda tidak menyukainya, saya khawatir dan kembali ke mode daftar.

id
hobi

1
bersepeda

2
berjalan

3
renang

…lebih banyak hobi!

Daftar hobi

Setelah kami memiliki daftar hobi, kami membuat daftar kedua dan menyebutnya "Hobi cucu'.

cucu_id
hobi_id

4
1

3
1

7
2

…lagi!

Daftar umum hobi cucu

Setelah semua pekerjaan ini, Nenek sekarang memiliki sistem memori yang keren untuk melacak seluruh keluarga besarnya yang luar biasa. Dan kemudian - untuk membuat saya bertahan lebih lama - dia menanyakan pertanyaan ajaib: "Di mana Anda belajar melakukan semua ini?"

Database relasional

Basis data relasional adalah sekumpulan tabel yang dijelaskan secara formal (dalam contoh kita, ini adalah lembar) yang dapat Anda akses Menurut atau mengumpulkannya dengan berbagai cara tanpa harus menata ulang tabel Basis Data. Ada banyak jenis database relasional, namun sayangnya daftar di selembar kertas bukan salah satunya.

Ciri khas dari database relasional yang paling populer adalah bahasa query SQL (Structured Query Language). Berkat dia, jika Nenek mentransfer sistem ingatannya ke komputer, dia bisa dengan cepat mendapatkan jawaban atas pertanyaan seperti: “Siapa yang tidak mengunjungi saya tahun lalu, sudah menikah dan tidak punya hobi?”

Salah satu sistem manajemen basis data SQL yang paling populer adalah MySQL open source. Ini diimplementasikan terutama sebagai sistem manajemen basis data relasional (RDBMS) untuk aplikasi perangkat lunak berbasis web.

Beberapa fitur utama MySQL:

  • Ini cukup terkenal, digunakan secara luas dan diuji secara ekstensif.
  • Ada banyak pengembang terampil yang memiliki pengalaman dengan SQL dan database relasional.
  • Data disimpan dalam berbagai tabel, sehingga memudahkan untuk menjalin hubungan menggunakan kunci utama dan asing (pengidentifikasi).
  • Mudah digunakan dan efisien, sehingga ideal untuk bisnis besar dan kecil.
  • Kode sumber berada di bawah ketentuan Lisensi Publik Umum GNU.

Sekarang lupakan SEMUA.

Menjelaskan NoSQL kepada nenek

Nenek, kami memiliki keluarga besar. Dia memiliki 150 cucu! Banyak di antara mereka yang sudah menikah, mempunyai anak, menyukai sesuatu dan lain sebagainya. Di usiamu, mustahil mengingat segala sesuatu tentang kita semua. Yang Anda butuhkan adalah sistem memori!

Untungnya, saya tidak ingin kamu melupakan hari ulang tahunku dan rasa es krim favoritku, aku bisa membantu. Jadi saya lari ke toko terdekat, mengambil buku catatan dan kembali ke rumah Anda.

Langkah pertama yang saya lakukan adalah menulis “Cucu” dengan huruf besar dan tebal di sampul buku catatan saya. Lalu saya membuka halaman pertama dan mulai menulis semua yang perlu Anda ingat tentang saya. Beberapa menit kemudian, halamannya terlihat seperti ini.

{ 
  "_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!"
}

Я: “Sepertinya semuanya sudah siap!”
Nenek: “Tunggu, bagaimana dengan cucu-cucu yang lain?”
Я: "Iya benar sekali. Kemudian alokasikan satu halaman untuk masing-masing.”
Nenek: “Apakah saya perlu menuliskan semua informasi yang sama untuk semua orang, seperti yang saya lakukan untuk Anda?”
Я: “Tidak, hanya jika kamu mau. Biarkan aku menunjukkannya."
Sambil meraih pena nenekku, aku membalik halamannya dan dengan cepat mencatat informasi tentang sepupuku yang paling tidak kusukai.

{ 
  "_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"
}

Kapanpun seorang nenek perlu mengingat sesuatu tentang salah satu cucunya, dia hanya perlu membuka halaman yang tepat di buku catatan cucunya. Semua informasi tentang mereka akan disimpan langsung di halaman mereka, yang dapat dia ubah dan perbarui dengan cepat.

Ketika semuanya selesai, dia menanyakan pertanyaan ajaib: "Di mana Anda belajar melakukan semua ini?"

database NoSQL

Ada banyak database NoSQL (“bukan hanya SQL”). Dalam contoh kami, kami telah menunjukkannya basis data dokumen. Basis data NoSQL memodelkan data dengan cara yang mengecualikan hubungan tabel yang digunakan dalam basis data relasional. Basis data ini menjadi populer di awal tahun 2000-an di kalangan perusahaan yang memerlukan pengelompokan basis data berbasis cloud karena persyaratan penskalaan yang jelas (seperti Facebook). Dalam aplikasi seperti itu, konsistensi data tidak sepenting kinerja dan skalabilitas.

Pada awalnya, database NoSQL sering digunakan untuk tugas manajemen data khusus. Pada dasarnya, ketika menyangkut aplikasi web dan cloud, database NoSQL memproses dan mendistribusikan sejumlah besar data. Insinyur NoSQL juga menyukai skema data yang fleksibel (atau kekurangannya) sehingga perubahan cepat dapat dilakukan dalam aplikasi yang diperbarui.

Fitur utama NoSQL:

  • Cara yang sangat fleksibel untuk menyimpan data
  • Penskalaan horizontal ke cluster
  • Kemungkinan pengurutan per persistensi/spread
  • Dokumen yang diidentifikasi menggunakan kunci unik

Perbandingan mendetail

MySQL memerlukan skema yang jelas dan terstruktur.
NoSQL memungkinkan Anda menyimpan data apa pun dalam "dokumen".

MySQL memiliki komunitas yang besar.
NoSQL memiliki komunitas kecil dan berkembang pesat.

NoSQL mudah untuk diukur.
MySQL membutuhkan lebih banyak pengelolaan.

MySQL menggunakan SQL, yang digunakan di banyak jenis database.
NoSQL adalah desain berbasis database dengan implementasi populer.

MySQL menggunakan bahasa kueri standar (SQL).
NoSQL tidak menggunakan bahasa kueri standar.

MySQL memiliki banyak alat pelaporan yang hebat.
NoSQL memiliki beberapa alat pelaporan yang sulit distandarisasi.

MySQL dapat menunjukkan masalah kinerja untuk data besar.
NoSQL memberikan kinerja luar biasa pada data besar.

Pikiran 8basis

Di perusahaan 8 basistempat saya bekerja, kami menyediakan ruang kerja untuk setiap proyek dengan database relasional Aurora MySQL yang dihosting di AWS. Meskipun NoSQL adalah pilihan yang logis ketika aplikasi Anda menuntut kinerja dan skalabilitas tinggi, kami percaya bahwa konsistensi data yang kuat yang disediakan oleh DBMS sangat penting ketika membangun aplikasi SaaS dan perangkat lunak bisnis lainnya.

Bagi startup dan pengembang yang membangun aplikasi bisnis yang memerlukan pelaporan, integritas transaksional, dan model data yang terdefinisi dengan baik, berinvestasi dalam database relasional, menurut pendapat kami, adalah pilihan yang tepat.

Pelajari lebih lanjut tentang pengembangan dengan Aurora, Tanpa Server, dan GraphQL di 8base.com di sini.

Sumber: www.habr.com

Tambah komentar