Paano ipaliwanag sa iyong lola ang pagkakaiba ng SQL at NoSQL

Paano ipaliwanag sa iyong lola ang pagkakaiba ng SQL at NoSQL

Isa sa pinakamahalagang desisyon na ginagawa ng developer ay kung aling database ang gagamitin. Sa loob ng maraming taon, limitado ang mga opsyon sa iba't ibang opsyon sa relational database na sumusuporta sa Structured Query Language (SQL). Kabilang dito ang MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 at marami pang iba.

Sa nakalipas na 15 taon, maraming bagong database ang pumasok sa merkado sa ilalim ng No-SQL approach. Kabilang dito ang mga key-value store tulad ng Redis at Amazon DynamoDB, mga database ng malawak na column tulad ng Cassandra at HBase, mga tindahan ng dokumento tulad ng MongoDB at Couchbase, at mga graph database at search engine tulad ng Elasticsearch at Solr.

Sa artikulong ito, susubukan naming maunawaan ang SQL at NoSQL nang hindi pumapasok sa kanilang pag-andar.
Dagdag pa, magkakaroon kami ng kaunting kasiyahan sa proseso.

Pagpapaliwanag ng SQL kay Lola

Lola, isipin mo na hindi lang ako ang apo mo. Sa halip, nagmahalan sila nanay at tatay tulad ng mga kuneho, nagkaroon sila ng 100 anak, pagkatapos ay nag-ampon pa sila ng 50.

Kaya, mahal mo kaming lahat at ayaw mong kalimutan ang alinman sa aming mga pangalan, kaarawan, paboritong lasa ng ice cream, laki ng damit, libangan, pangalan ng asawa, pangalan ng supling at iba pang napakahalagang katotohanan. Gayunpaman, harapin natin ito. Ikaw ay 85 taong gulang at ang magandang lumang memorya ay hindi makayanan.

Sa kabutihang palad, bilang pinakamatalino sa iyong mga apo, makakatulong ako. Kaya pumunta ako sa iyong bahay, kumuha ako ng ilang mga sheet ng papel at hinihiling ko sa iyo na maghurno ng ilang cookies bago tayo magsimula.

Sa isang sheet ng papel, gumawa kami ng isang listahan na tinatawag na "Mga apo". Bawat apo naitala na may ilang mahahalagang impormasyon tungkol dito, kabilang ang isang natatanging numero na magsasaad na ngayon kung alin apo siya ay. Gayundin, para sa kapakanan ng organisasyon, isinusulat namin ang mga pinangalanang katangian sa tuktok ng listahan upang lagi naming malaman kung anong impormasyon ang nilalaman ng listahan.

id
pangalan
kaarawan
huling Bisita
laki ng damit
paboritong ice cream
ampon

1
Puwersahin
09-22-1992
09-01-2019
L
mint na tsokolate
hindi totoo

2
Jessica
07-21-1992
02-22-2018
M
Mabatong kalsada
totoo

...ipagpatuloy namin ang listahan!

Listahan ng mga apo

Pagkaraan ng ilang sandali, naiintindihan mo ang lahat at halos tapos na tayo sa listahan! Gayunpaman, bumaling ka sa akin at sabihin: "Nakalimutan naming magdagdag ng espasyo para sa mga asawa, libangan, apo!" Ngunit hindi, hindi namin nakakalimutan! Ito ay sumusunod pa at nangangailangan ng bagong papel.

Kaya't naglabas ako ng isa pang papel at dito ay tinawag namin ang listahan Mga asawa. Muli naming idinaragdag ang mga katangian na mahalaga sa amin sa tuktok ng listahan at simulan ang pagdaragdag sa mga hilera.

id
grandchild_id
pangalan
kaarawan

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…mas maraming asawa!

Listahan ng mga asawa

Sa yugtong ito, ipinaliwanag ko sa aking lola na kung gusto niyang malaman kung sino ang ikinasal kung kanino, kailangan lang niyang tugma id sa listahan mga apo с grandchild_id sa listahan ng mga asawa.

Pagkatapos ng ilang dosenang cookies, kailangan kong umidlip. "Pwede bang ituloy mo lola?" Aalis na ako para umidlip.

Babalik ako makalipas ang ilang oras. Ang galing mo, lola! Lahat ay mukhang mahusay maliban sa listahan libangan. Mayroong tungkol sa 1000 libangan sa listahan. Karamihan sa kanila ay paulit-ulit; Anong nangyari?

grandchild_id
libangan

1
biking

4
biking

3
biking

7
tumatakbo

11
biking

…nagpapatuloy kami!

Sorry, nakalimutan kong sabihin! Gamit ang isang listahan, masusubaybayan mo lang libangan. Pagkatapos sa isa pang listahan kailangan nating i-trace mga aposino ang gumagawa nito libangan. Tatawagan natin ito "Pangkaraniwang listahan". Nang makitang hindi mo ito gusto, nag-aalala ako at bumalik sa list mode.

id
libangan

1
biking

2
tumatakbo

3
langoy

…mas maraming libangan!

Listahan ng mga libangan

Kapag mayroon na kaming listahan ng libangan, gagawa kami ng aming pangalawang listahan at tinatawag itong "Mga libangan ng mga apo'.

grandchild_id
hobby_id

4
1

3
1

7
2

…higit pa!

Pangkalahatang listahan ng mga libangan ng mga apo

Pagkatapos ng lahat ng gawaing ito, mayroon na ngayong cool na memory system si Lola para subaybayan ang kanyang buong napakalaking pamilya. At pagkatapos - upang panatilihing mas matagal ako - tinanong niya ang mahiwagang tanong: "Saan mo natutunang gawin ang lahat ng ito?"

Mga database ng relasyon

Ang relational database ay isang hanay ng mga pormal na inilarawang talahanayan (sa aming halimbawa, ito ay mga sheet) kung saan maaari mong ma-access Ayon sa o kolektahin ang mga ito sa iba't ibang paraan nang hindi kinakailangang muling ayusin ang mga talahanayan Database. Mayroong maraming iba't ibang mga uri ng relational database, ngunit sa kasamaang-palad ang isang listahan sa isang piraso ng papel ay hindi isa sa kanila.

Ang tanda ng pinakasikat na relational database ay ang SQL (Structured Query Language) query language. Salamat sa kanya, kung ililipat ni Lola ang kanyang memory system sa isang computer, mabilis siyang makakakuha ng mga sagot sa mga tanong tulad ng: "Sino ang hindi bumisita sa akin noong nakaraang taon, may asawa at walang libangan?"

Isa sa mga pinakasikat na SQL database management system ay ang open source MySQL. Ito ay pangunahing ipinatupad bilang isang relational database management system (RDBMS) para sa mga web-based na software application.

Ang ilang mga pangunahing tampok ng MySQL:

  • Ito ay medyo kilala, malawakang ginagamit at malawakang nasubok.
  • Maraming mga dalubhasang developer na may karanasan sa SQL at relational database.
  • Ang data ay naka-imbak sa iba't ibang mga talahanayan, na ginagawang madali upang magtatag ng mga relasyon gamit ang pangunahin at dayuhang mga susi (mga identifier).
  • Ito ay madaling gamitin at mahusay, ginagawa itong perpekto para sa mga negosyo malaki at maliit.
  • Ang source code ay nasa ilalim ng mga tuntunin ng GNU General Public License.

Ngayon kalimutan Lahat.

Pagpapaliwanag ng NoSQL kay lola

Lola, malaki ang pamilya namin. Mayroon siyang 150 apo! Marami sa kanila ay may asawa, may mga anak, mahilig sa isang bagay at iba pa. Sa iyong edad, imposibleng matandaan ang lahat tungkol sa ating lahat. Ang kailangan mo ay isang sistema ng memorya!

Sa kabutihang palad, ako hindi Gusto kong makalimutan mo ang aking kaarawan at paboritong lasa ng ice cream, makakatulong ako. Kaya tumakbo ako sa pinakamalapit na tindahan, kumuha ng notebook at bumalik sa bahay mo.

Ang unang hakbang na gagawin ko ay isulat ang "Mga Apo" sa malalaking titik sa pabalat ng aking kuwaderno. Pagkatapos ay i-flip ko ang unang pahina at sinimulang isulat ang lahat ng kailangan mong tandaan tungkol sa akin. Pagkalipas ng ilang minuto, mukhang ganito ang page.

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

Π―: "Mukhang handa na ang lahat!"
Lola: "Teka, paano ang iba pang mga apo?"
Π―: "Oo eksakto. Pagkatapos ay maglaan ng isang pahina para sa bawat isa."
Lola: "Kailangan ko bang isulat ang lahat ng parehong impormasyon para sa lahat, tulad ng ginawa ko para sa iyo?"
Π―: β€œHindi, kung gusto mo lang. Hayaan mo akong magpakita."
Kinuha ko ang panulat ng aking lola, binaliktad ko ang pahina at mabilis na isinulat ang impormasyon tungkol sa hindi ko paboritong pinsan.

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

Sa tuwing kailangang maalala ng isang lola ang tungkol sa isa sa kanyang mga apo, kailangan lang niyang mag-navigate sa tamang pahina sa notebook ng kanyang mga apo. Ang lahat ng impormasyon tungkol sa kanila ay maiimbak doon mismo sa kanilang page, na mabilis niyang mababago at maa-update.

Kapag tapos na ang lahat, tinanong niya ang mahiwagang tanong: "Saan mo natutunang gawin ang lahat ng ito?"

Mga database ng NoSQL

Maraming mga Mga database ng NoSQL (β€œhindi lang SQL”). Sa aming mga halimbawa, ipinakita namin database ng dokumento. Ang mga database ng NoSQL ay nagmomodelo ng data sa mga paraan na hindi kasama ang mga relasyon sa talahanayan na ginagamit sa mga relational na database. Naging tanyag ang mga database na ito noong unang bahagi ng 2000s sa mga kumpanyang nangangailangan ng cloud-based na database clustering dahil sa kanilang tahasang mga kinakailangan sa pag-scale (tulad ng Facebook). Sa ganitong mga application, ang pagkakapare-pareho ng data ay hindi gaanong mahalaga kaysa sa pagganap at scalability.

Sa simula, ang mga database ng NoSQL ay kadalasang ginagamit para sa mga gawain sa pamamahala ng niche data. Karaniwan, pagdating sa web at cloud application, ang mga database ng NoSQL ay nagpoproseso at namamahagi ng malaking halaga ng data. Nagustuhan din ng mga inhinyero ng NoSQL ang flexibility ng data schema (o kakulangan nito) kaya posible ang mabilis na pagbabago sa mga naa-upgrade na application.

Mga pangunahing tampok ng NoSQL:

  • Napaka-flexible na paraan upang mag-imbak ng data
  • Pahalang na pag-scale sa mga kumpol
  • Posibleng pagkakasunud-sunod sa bawat pagtitiyaga/pagkalat
  • Mga dokumentong natukoy gamit ang mga natatanging key

Detalyadong paghahambing

Nangangailangan ang MySQL ng isang tinukoy at nakabalangkas na schema.
Binibigyang-daan ka ng NoSQL na mag-imbak ng anumang data sa isang "dokumento".

Ang MySQL ay may malaking komunidad.
Ang NoSQL ay may maliit at mabilis na lumalagong komunidad.

Madaling sukatin ang NoSQL.
Ang MySQL ay nangangailangan ng higit na kakayahang pamahalaan.

Gumagamit ang MySQL ng SQL, na ginagamit sa maraming uri ng mga database.
Ang NoSQL ay isang database ayon sa disenyo na may mga sikat na pagpapatupad.

Gumagamit ang MySQL ng karaniwang query language (SQL).
Ang NoSQL ay hindi gumagamit ng karaniwang wika ng query.

Ang MySQL ay may maraming mahusay na tool sa pag-uulat.
Ang NoSQL ay may ilang mga tool sa pag-uulat na mahirap i-standardize.

Ang MySQL ay maaaring magpakita ng mga isyu sa pagganap para sa malaking data.
Nagbibigay ang NoSQL ng mahusay na pagganap sa malaking data.

Mga kaisipan 8base

Ang kumpanya 8basekung saan ako nagtatrabaho, nagbibigay kami ng workspace para sa bawat proyekto na may Aurora MySQL relational database na naka-host sa AWS. Habang ang NoSQL ay isang lohikal na pagpipilian kapag ang iyong application ay nangangailangan ng mataas na pagganap at scalability, naniniwala kami na ang malakas na pagkakapare-pareho ng data na ibinibigay ng isang DBMS ay mahalaga kapag gumagawa ng mga SaaS application at iba pang software ng negosyo.

Para sa mga startup at developer na bumubuo ng mga application ng negosyo na nangangailangan ng pag-uulat, transaksyonal na integridad, at mahusay na tinukoy na mga modelo ng data, ang pamumuhunan sa mga relational na database ay, sa aming opinyon, ang tamang pagpipilian.

Matuto nang higit pa tungkol sa pagbuo sa Aurora, Serverless at GraphQL sa 8base.com dito.

Pinagmulan: www.habr.com

Magdagdag ng komento