Bagaimana Menjelaskan Perbezaan Antara SQL dan NoSQL kepada Nenek Anda

Bagaimana Menjelaskan Perbezaan Antara SQL dan NoSQL kepada Nenek Anda

Salah satu keputusan paling penting yang dibuat oleh pembangun ialah pangkalan data yang hendak digunakan. Selama bertahun-tahun, pilihan dihadkan kepada pelbagai pilihan pangkalan data hubungan yang menyokong Bahasa Pertanyaan Berstruktur (SQL). Ini termasuk MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 dan banyak lagi.

Sepanjang 15 tahun yang lalu, banyak pangkalan data No-SQL baharu telah muncul di pasaran. Ini termasuk kedai nilai kunci seperti Redis dan Amazon DynamoDB, pangkalan data kolumnar luas seperti Cassandra dan HBase, kedai dokumen seperti MongoDB dan Couchbase, dan pangkalan data graf dan enjin carian seperti Elasticsearch dan Solr.

Dalam artikel ini kami akan cuba memahami SQL dan NoSQL tanpa memasuki fungsinya.
Selain itu, kami akan berseronok sedikit dalam proses itu.

Menjelaskan SQL kepada nenek

Nenek, bayangkan saya bukan satu-satunya cucu awak. Sebaliknya, Ibu dan Ayah saling menyayangi seperti arnab, mempunyai 100 anak, kemudian mengambil 50 anak angkat lagi.

Jadi, anda menyayangi kami semua dan tidak mahu melupakan mana-mana nama, hari lahir, perisa aiskrim kegemaran kami, saiz pakaian, hobi, nama pasangan, nama anak dan fakta lain yang sangat penting. Walau bagaimanapun, mari kita hadapinya. Anda berumur 85 tahun dan ingatan lama yang baik tidak dapat diatasi.

Nasib baik, sebagai cucu yang paling bijak, saya boleh membantu. Jadi saya datang ke rumah awak, keluarkan beberapa helai kertas dan minta awak masak biskut sebelum kita mula.

Pada satu helaian kertas kami membuat senarai yang dipanggil "anak cucu" Setiap cucu direkodkan dengan beberapa maklumat penting mengenainya, termasuk nombor unik yang kini akan menunjukkan yang mana cucu dia adalah. Selain itu, demi organisasi, kami menulis atribut yang dinamakan di bahagian atas senarai supaya kami sentiasa mengetahui maklumat yang terkandung dalam senarai itu.

id
nama
hari lahir
lawatan terakhir
saiz pakaian
aiskrim kegemaran
pakai

1
Jimmy
09-22-1992
09-01-2019
L
Coklat pudina
palsu

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

... teruskan senarai!

Senarai cucu

Selepas beberapa ketika anda memikirkan semuanya dan kami hampir selesai dengan senarai itu! Walau bagaimanapun, anda berpaling kepada saya dan berkata: "Kami terlupa menambah ruang untuk pasangan, hobi, cucu!" Tetapi tidak, kami tidak lupa! Ini mengikuti lebih jauh dan memerlukan helaian kertas baharu.

Jadi saya mengeluarkan sekeping kertas lagi dan di atasnya kita panggil senarai itu Pasangan suami isteri. Kami sekali lagi menambah atribut yang penting kepada kami pada permulaan senarai dan mula menambah dalam baris.

id
cucu_id
nama
hari lahir

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

... lebih banyak pasangan!

Senarai pasangan

Pada peringkat ini, saya menerangkan kepada nenek saya bahawa jika dia ingin tahu siapa yang berkahwin dengan siapa, maka dia hanya perlu membandingkan id dalam senarai cucu-cucu с cucu_id dalam senarai pasangan.

Selepas beberapa dozen biskut, saya perlu tidur sebentar. "Bolehkah anda meneruskan, nenek?" Saya akan pergi untuk tidur sebentar.

Saya akan kembali dalam beberapa jam. Anda hebat, nenek! Semuanya kelihatan hebat kecuali senarai hobi. Terdapat kira-kira 1000 hobi dalam senarai. Kebanyakannya adalah berulang; apa dah jadi?

cucu_id
hobi

1
berbasikal

4
berbasikal

3
berbasikal

7
berlari

11
berbasikal

...Jom sambung!

Maaf, saya benar-benar terlupa untuk mengatakan! Menggunakan satu senarai, anda hanya boleh menjejaki hobi. Kemudian dalam senarai lain kita perlu menjejaki cucu-cucuyang melakukan ini hobi. Kami akan memanggilnya "Senarai biasa". Memandangkan anda tidak menyukainya, saya mula bimbang dan kembali ke mod senarai.

id
hobi

1
berbasikal

2
berlari

3
berenang

... hobi lagi!

Senarai hobi

Sebaik sahaja kami mempunyai senarai hobi kami, kami mencipta senarai kedua kami dan memanggilnya "Hobi anak cucu'.

cucu_id
hobi_id

4
1

3
1

7
2

… lagi!

Senarai umum hobi anak cucu

Selepas semua kerja ini, Nenek kini mempunyai sistem ingatan yang hebat untuk menjejaki keluarga besarnya yang luar biasa. Dan kemudian - untuk memastikan saya lebih lama - dia bertanya soalan ajaib: "Di manakah anda belajar melakukan semua ini?"

Pangkalan Data Hubungan

Pangkalan data hubungan ialah satu set jadual yang diterangkan secara rasmi (dalam contoh kami ini adalah helaian) yang boleh anda akses Menurut atau kumpulkannya dengan cara yang berbeza tanpa perlu menyusun semula jadual Pangkalan data. Terdapat pelbagai jenis pangkalan data hubungan, tetapi malangnya senarai pada sekeping kertas bukanlah salah satu daripadanya.

Ciri tersendiri pangkalan data hubungan yang paling popular ialah bahasa pertanyaan SQL (Bahasa Pertanyaan Berstruktur). Terima kasih kepada itu, jika nenek memindahkan sistem ingatannya ke komputer, dia boleh dengan cepat mendapatkan jawapan kepada soalan seperti: "Siapa yang tidak melawat saya tahun lepas, sudah berkahwin dan tidak mempunyai hobi?"

Salah satu sistem pengurusan pangkalan data SQL yang paling popular ialah MySQL sumber terbuka. Ia dilaksanakan terutamanya sebagai sistem pengurusan pangkalan data hubungan (RDBMS) untuk aplikasi perisian berasaskan web.

Beberapa ciri utama MySQL:

  • Ia cukup terkenal, digunakan secara meluas dan diuji dengan teliti.
  • Terdapat banyak pembangun yang berkelayakan yang mempunyai pengalaman bekerja dengan SQL dan pangkalan data hubungan.
  • Data disimpan dalam pelbagai jadual, yang memudahkan untuk mewujudkan hubungan menggunakan kunci utama dan asing (pengecam).
  • Ia mudah digunakan dan berkesan, menjadikannya ideal untuk perniagaan besar dan kecil.
  • Kod sumber adalah di bawah syarat Lesen Awam Am GNU.

Sekarang lupakan SEMUA.

Menjelaskan NoSQL kepada nenek

Nenek, kami mempunyai keluarga yang besar. Terdapat 150 cucu di dalamnya! Ramai di antara mereka sudah berkahwin, mempunyai anak, meminati sesuatu, dan sebagainya. Pada usia anda adalah mustahil untuk mengingati segala-galanya tentang kita semua. Apa yang anda perlukan ialah sistem hafalan!

Nasib baik, saya tiada mahu anda melupakan hari lahir saya dan rasa aiskrim kegemaran saya, saya boleh membantu. Jadi saya lari ke kedai terdekat, ambil buku nota dan balik ke rumah awak.

Langkah pertama yang saya ambil ialah menulis "Cucu" dalam huruf tebal besar pada kulit buku nota saya. Kemudian saya membuka halaman pertama dan mula menulis semua yang anda perlu ingat tentang saya. Selepas beberapa minit halaman kelihatan 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!"
}

Π―: β€œNampaknya semuanya sudah sedia!”
Nenek: β€œTunggu, bagaimana dengan cucu-cucu yang lain?”
Π―: "Ya betul. Kemudian kami memperuntukkan halaman untuk setiap satu.”
Nenek: "Adakah saya perlu menulis semua maklumat yang sama untuk semua orang seperti yang saya lakukan untuk anda?"
Π―: β€œTidak, hanya jika kamu mahu. Biar saya tunjukkan."
Mengambil pen nenek saya, saya membelek halaman dan cepat-cepat menulis maklumat tentang sepupu saya yang paling tidak digemari.

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

Setiap kali nenek perlu mengingati sesuatu tentang salah seorang cucunya, dia hanya perlu pergi ke halaman yang betul dalam buku nota cucunya. Semua maklumat tentang mereka akan disimpan di sana pada halaman mereka, yang boleh diubah dan dikemas kini dengan cepat.

Apabila semuanya selesai, dia bertanya soalan ajaib: "Di manakah anda belajar melakukan semua ini?"

Pangkalan Data NoSQL

Terdapat banyak pangkalan data NoSQL (β€œbukan hanya SQL”). Dalam contoh kami, kami tunjukkan pangkalan data dokumen. Pangkalan data NoSQL memodelkan data dengan cara yang menghapuskan hubungan jadual yang digunakan dalam pangkalan data hubungan. Pangkalan data ini menjadi popular pada awal 2000-an di kalangan syarikat yang memerlukan pengelompokan pangkalan data berasaskan awan kerana keperluan penskalaan semata-mata (cth. Facebook). Dalam aplikasi sedemikian, ketekalan data adalah kurang penting daripada prestasi dan kebolehskalaan.

Pada mulanya, pangkalan data NoSQL sering digunakan untuk tugas pengurusan data khusus. Pada asasnya, apabila ia datang kepada aplikasi web dan awan, pangkalan data NoSQL memproses dan mengagihkan sejumlah besar data. Jurutera NoSQL juga menyukai fleksibiliti skema data (atau kekurangannya) supaya perubahan pantas boleh dilakukan dalam aplikasi yang boleh dinaik taraf.

Ciri-ciri utama NoSQL:

  • Cara yang sangat fleksibel untuk menyimpan data
  • Penskalaan mendatar kepada kelompok
  • Urutan yang mungkin untuk kegigihan/penyebaran
  • Dokumen yang dikenal pasti menggunakan kunci unik

Perbandingan terperinci

MySQL memerlukan skema yang ditetapkan dan berstruktur.
NoSQL membolehkan anda menyimpan sebarang data dalam "dokumen".

MySQL disokong oleh komuniti yang besar.
NoSQL mempunyai komuniti yang kecil dan berkembang pesat.

NoSQL adalah mudah untuk skala.
MySQL memerlukan lebih banyak kebolehurusan.

MySQL menggunakan SQL, yang digunakan dalam banyak jenis pangkalan data.
NoSQL ialah pangkalan data mengikut reka bentuk dengan pelaksanaan yang popular.

MySQL menggunakan bahasa pertanyaan standard (SQL).
NoSQL tidak menggunakan bahasa pertanyaan standard.

MySQL mempunyai banyak alat pelaporan yang hebat.
NoSQL mempunyai beberapa alat pelaporan yang sukar untuk diseragamkan.

MySQL mungkin mempunyai masalah prestasi untuk data besar.
NoSQL menyediakan prestasi cemerlang pada data besar.

Pemikiran 8asas

Dalam syarikat 8asas, di tempat saya bekerja, kami memberi kuasa kepada setiap ruang kerja projek dengan pangkalan data hubungan Aurora MySQL yang dihoskan pada AWS. Walaupun NoSQL ialah pilihan yang logik apabila keperluan aplikasi anda memerlukan prestasi tinggi dan kebolehskalaan, kami percaya bahawa konsistensi data yang kukuh yang disediakan oleh DBMS adalah penting apabila membina aplikasi SaaS dan perisian perniagaan lain.

Bagi pemula dan pembangun yang membina aplikasi perniagaan yang memerlukan pelaporan, integriti transaksi dan model data yang jelas, melabur dalam pangkalan data hubungan, pada pendapat kami, adalah pilihan yang tepat.

Ketahui lebih lanjut tentang membangun dengan Aurora, Tanpa Pelayan dan GraphQL dengan 8base.com di sini.

Sumber: www.habr.com

Tambah komen