Bagaimana menjelaskan kepada nenek Anda perbedaan antara SQL dan NoSQL

gambar

Salah satu keputusan paling penting yang dibuat pengembang adalah basis data mana yang akan digunakan. Selama bertahun-tahun, opsi telah terbatas pada berbagai opsi basis data relasional yang mendukung Structured Query Language (SQL). Ini termasuk MS SQL Server, Oracle, MySQL, PostgreSQL, DB2, dan banyak lainnya.

Selama 15 tahun terakhir, banyak database baru telah muncul di pasar sebagai bagian dari pendekatan No-SQL. Ini termasuk toko nilai kunci, seperti Redis dan Amazon DynamoDB, basis data kolom luas, seperti Cassandra dan HBase, toko dokumen, seperti MongoDB dan Couchbase, serta basis data grafik dan mesin pencari, seperti Elasticsearch dan Solr.

Pada artikel ini kita akan mencoba memahami SQL dan NoSQL, tanpa masuk ke fungsinya.
Selain itu, kami akan bersenang-senang dalam prosesnya.

Jelaskan Nenek SQL


Nenek, bayangkan aku bukan satu-satunya cucumu. Sebaliknya, ibu dan ayah saling mencintai seperti kelinci, mereka memiliki 100 anak, kemudian mereka mengadopsi 50 lainnya.

Jadi, Anda mencintai kami semua dan tidak ingin melupakan nama, hari ulang tahun, rasa es krim favorit kami, ukuran pakaian, hobi, nama pasangan, nama keturunan, dan fakta super penting lainnya. Tapi mari kita hadapi itu. Anda berusia 85 tahun, dan ingatan lama yang baik sama sekali tidak dapat mengatasinya.

Untungnya, saya, menjadi anak cucu Anda yang paling cerdas, dapat membantu. Jadi saya datang ke rumah Anda, mengambil beberapa lembar kertas dan meminta Anda membuat kue sebelum kita mulai.

Di selembar kertas kita membuat daftar yang disebut " Cucu ." Setiap cucu direkam dengan beberapa informasi penting tentang dia, termasuk nomor unik, yang sekarang akan menunjukkan cucu seperti apa dia. Selain itu, demi organisasi, kami menulis atribut bernama di bagian atas daftar sehingga kami selalu tahu informasi apa yang terdapat dalam daftar ini.
idnamaulang tahunkunjungan terakhirukuran pakaianes krim favoritdiadopsi
1Jimmy09-22-199201-01-2019L.Cokelat mintsalah
2Jessica07-21-199202-22-2018M.Jalan berbatubenar
... lanjutkan daftarnya!
Daftar cucu

Setelah beberapa saat, Anda mengerti segalanya dan kami hampir selesai dengan daftarnya! Namun, Anda menoleh ke saya dan berkata: "Kami lupa menambahkan tempat untuk pasangan, hobi, cucu!" Tapi tidak, kami belum lupa! Ini lebih jauh dan membutuhkan selembar kertas baru.

Jadi saya mengeluarkan selembar kertas lagi, dan di atasnya kita sebut daftar Pasangan . Kami kembali menambahkan atribut yang penting bagi kami di bagian atas daftar dan mulai menambahkan di baris.
idgrandchild_idnamaulang tahun
12John01-01-1988
29Fernanda05-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, dia hanya perlu mencocokkan id dalam daftar cucu dengan cucu_id dalam daftar pasangan.

Setelah beberapa lusin kue, saya perlu tidur siang. "Bisakah kamu melanjutkan, nenek?" Saya pergi untuk tidur siang.

Saya akan kembali dalam beberapa jam. Dan kamu keren, nenek! Semuanya tampak hebat kecuali untuk daftar hobi . Ada sekitar 1000 hobi dalam daftar. Kebanyakan dari mereka diulang; apa yang terjadi
grandchild_idhobi
1bersepeda
4bersepeda
3bersepeda
7berlari
11bersepeda
... lanjutkan!

Maaf, saya benar-benar lupa mengatakannya! Dengan menggunakan satu daftar, Anda hanya dapat melacak hobi . Kemudian di daftar lain kita perlu melacak cucu yang terlibat dalam hobi ini. Kita akan menyebutnya "Daftar Umum . " Melihat Anda tidak menyukainya, saya mulai khawatir dan kembali ke mode daftar.
idhobi
1bersepeda
2berlari
3berenang
... lebih banyak hobi!
Daftar Hobi

Segera setelah kami memiliki daftar hobi kami, kami membuat daftar kedua kami dan menyebutnya " Hobby Cucu ".
grandchild_idhobby_id
41
31
72
... lagi!
Daftar umum hobi cucu

Setelah semua pekerjaan ini, nenek saya sekarang memiliki sistem menghafal yang keren untuk melacak seluruh keluarga besarnya yang mengejutkan. Dan kemudian - untuk menahan saya lebih lama - dia mengajukan pertanyaan ajaib: "Di mana Anda belajar melakukan semua ini?"

Database relasional


Database relasional adalah sekumpulan tabel yang dideskripsikan secara formal (dalam contoh kami, ini adalah sheet) dari mana Anda dapat mengakses data atau mengumpulkannya dengan berbagai cara tanpa harus mengatur ulang tabel database . Ada banyak jenis database relasional, tetapi sayangnya daftar pada selembar kertas bukan salah satunya.

Fitur khas dari database relasional paling populer adalah bahasa query SQL (Structured Query Language). Berkat dia, jika nenek saya mentransfer sistem hafalannya ke komputer, dia akan dapat 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 open source MySQL. Ini diimplementasikan terutama sebagai sistem manajemen basis data relasional (RDBMS) untuk aplikasi perangkat lunak berbasis web.

Beberapa fitur utama MySQL:

  • Ini cukup terkenal, banyak digunakan dan diuji secara menyeluruh.
  • Ada banyak pengembang yang memenuhi syarat dengan pengalaman bekerja dengan SQL dan database relasional.
  • Data disimpan dalam berbagai tabel, yang membuatnya mudah untuk membangun komunikasi menggunakan kunci utama dan asing (pengidentifikasi).
  • Mudah digunakan dan efisien, menjadikannya ideal untuk perusahaan besar dan kecil.
  • Kode sumber tunduk pada Lisensi Publik Umum GNU.

Sekarang lupakan SEMUA .

Jelaskan Nenek NoSQL


Nenek, kami memiliki keluarga besar. Dia memiliki 150 cucu! Banyak dari mereka sudah menikah, punya anak, menyukai sesuatu, dan sebagainya. Pada usia Anda, tidak mungkin untuk mengingat segalanya tentang kita semua. Yang Anda butuhkan adalah sistem menghafal!

Untungnya, saya, tidak ingin Anda melupakan hari ulang tahun saya dan rasa es krim favorit saya, dapat membantu. Karena itu, saya berlari ke toko terdekat, mengambil buku catatan dan kembali ke rumah Anda.

Langkah pertama yang saya ambil adalah menulis "Cucu" dengan huruf tebal besar di sampul buku catatan. Kemudian saya membuka halaman pertama dan mulai menulis semua yang harus Anda ingat tentang saya. Setelah beberapa menit, halaman akan 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!" } 

Saya : "Segalanya tampak siap!"
Nenek : "Tunggu, bagaimana dengan cucu lainnya?"
Saya : “Ya, tepatnya. Kemudian pilih satu halaman untuk masing-masing. ”
Nenek : "Dan saya perlu mencatat semua informasi yang sama untuk semua orang, seperti yang saya lakukan untuk Anda?"
Saya : “Tidak, hanya jika Anda mau. Biarkan saya tunjukkan. "
Setelah mengambil pena saya dari nenek saya, saya membalik halaman dan dengan cepat menuliskan informasi tentang sepupu saya yang paling tidak dicintai.

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

Kapan pun seorang nenek perlu mengingat sesuatu tentang salah satu cucunya, ia hanya perlu pergi ke halaman yang benar dalam buku catatan cucunya. Semua informasi tentang mereka akan disimpan di sana di halaman mereka, yang dapat dengan cepat diubah dan diperbarui.

Ketika semuanya sudah dilakukan, dia mengajukan pertanyaan ajaib: "Di mana Anda belajar melakukan semua ini?"

Database NoSQL


Ada banyak basis data NoSQL ("bukan hanya SQL"). Dalam contoh kami, kami menunjukkan database dokumen . Basis data NoSQL memodelkan data dengan cara yang mengecualikan hubungan tabular yang digunakan dalam basis data relasional. Basis data ini menjadi populer pada awal 2000-an di antara perusahaan yang membutuhkan pengelompokan basis data berbasis cloud karena persyaratan skalabilitas eksplisit mereka (mis. Facebook). Dalam aplikasi seperti itu, konsistensi data jauh lebih penting daripada kinerja dan skalabilitas.

Pada awalnya, database NoSQL sering digunakan untuk tugas manajemen data niche. Pada dasarnya, ketika datang ke aplikasi web dan cloud, database NoSQL memproses dan mendistribusikan sejumlah besar data. Insinyur yang bekerja dengan NoSQL juga menyukai skema data yang fleksibel (atau tidak adanya sama sekali), sehingga perubahan cepat dalam aplikasi yang diperbarui dimungkinkan.

Fitur utama dari NoSQL:

  • Cara yang sangat fleksibel untuk menyimpan data.
  • Skala untuk Cluster
  • Kemungkinan Konsistensi / Urutan Distribusi
  • Dokumen yang diidentifikasi menggunakan kunci unik

Perbandingan terperinci


MySQL membutuhkan kerangka kerja spesifik dan terstruktur.
NoSQL memungkinkan Anda untuk menyimpan data apa pun dalam "dokumen".

MySQL mendukung komunitas 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 basis data.
NoSQL adalah database berbasis desain dengan implementasi populer.

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

MySQL memiliki banyak alat pelaporan yang bagus.
NoSQL memiliki beberapa alat pelaporan yang sulit untuk distandarisasi.

MySQL dapat mengeluarkan masalah kinerja untuk data besar.
NoSQL memberikan kinerja hebat pada data besar.

Pikiran 8base


Di 8base , tempat saya bekerja, kami menyediakan ruang kerja dari setiap proyek dengan database relasional Aurora MySQL yang dihosting di AWS. Meskipun NoSQL adalah pilihan logis ketika persyaratan aplikasi Anda membutuhkan kinerja dan skalabilitas tinggi, kami percaya bahwa konsistensi data yang ketat yang diberikan oleh DBMS diperlukan ketika membuat aplikasi SaaS dan perangkat lunak bisnis lainnya.

Bagi pemula dan pengembang yang membuat aplikasi bisnis seperti itu yang membutuhkan pelaporan, integritas transaksi, dan model data yang terdefinisi dengan baik, berinvestasi dalam basis data relasional, menurut pendapat kami, adalah pilihan yang tepat.

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

Source: https://habr.com/ru/post/id467283/


All Articles