Kiel Klarigi la Diferencon Inter SQL kaj NoSQL al Via Avino

Kiel Klarigi la Diferencon Inter SQL kaj NoSQL al Via Avino

Unu el la plej gravaj decidoj kiujn ellaboranto faras estas kiun datumbazon uzi. Dum multaj jaroj, opcioj estis limigitaj al diversaj rilataj datumbazelektoj kiuj apogis Structured Query Language (SQL). Ĉi tiuj inkluzivas MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 kaj multajn aliajn.

Dum la pasintaj 15 jaroj, multaj novaj No-SQL-datumbazoj aperis sur la merkato. Ĉi tiuj inkluzivas ŝlosilvalorajn butikojn kiel Redis kaj Amazon DynamoDB, larĝajn kolonajn datumbazojn kiel Cassandra kaj HBase, dokumentbutikojn kiel MongoDB kaj Couchbase, kaj grafikajn datumbazojn kaj serĉilojn kiel Elasticsearch kaj Solr.

En ĉi tiu artikolo ni provos kompreni SQL kaj NoSQL sen eniri ilian funkcion.
Plie, ni iom amuziĝos en la procezo.

Klarigante SQL al avino

Avinjo, imagu, ke mi ne estas via sola nepo. Anstataŭe, panjo kaj paĉjo amis unu la alian kiel kunikloj, havis 100 infanojn, poste adoptis 50 pliajn.

Do, vi amas nin ĉiujn kaj ne volas forgesi iujn niajn nomojn, naskiĝtagojn, plej ŝatatajn glaciaĵgustojn, vestajn grandecojn, ŝatokupojn, nomojn de geedzoj, nomojn de idoj kaj aliajn tre gravajn faktojn. Tamen, ni alfrontu ĝin. Vi estas 85 jarojn maljuna kaj bona malnova memoro simple ne povas elteni.

Feliĉe, estante la plej saĝa el viaj nepoj, mi povas helpi. Do mi venas al via domo, elprenas kelkajn paperfoliojn kaj petas vin baki kelkajn kuketojn antaŭ ol ni komencos.

Sur unu folio ni faras liston nomitan "nepoj" Ĉiu nepo registrita kun iuj esencaj informoj pri ĝi, inkluzive de unika nombro kiu nun indikos kiu nepo li estas. Ankaŭ, por organizo, ni skribas la nomitajn atributojn ĉe la supro de la listo por ke ni ĉiam sciu kiajn informojn enhavas la listo.

id
nomo
naskiĝtago
lasta vizito
vesta grandeco
plej ŝatata glaciaĵo
adoptita

1
Jimmy
09-22-1992
09-01-2019
L
Menta ĉokolado
falsa

2
jessica
07-21-1992
02-22-2018
M
Roka vojo
veraj

...daŭrigu la liston!

Listo de nepoj

Post iom da tempo vi eltrovas ĉion kaj ni preskaŭ finis kun la listo! Tamen vi turnas vin al mi kaj diras: "Ni forgesis aldoni spacon por geedzoj, ŝatokupoj, nepoj!" Sed ne, ni ne forgesis! Ĉi tio sekvas plu kaj postulas novan paperfolion.

Do mi eltiras alian paperpecon kaj sur ĝi ni nomas la liston Edzinoj. Ni denove aldonas la atributojn, kiuj estas gravaj por ni, al la komenco de la listo kaj komencas aldoni en vicoj.

id
nepo_id
nomo
naskiĝtago

1
2
john
06-01-1988

2
9
Fernanda
03-05-1985

...pli da geedzoj!

Listo de geedzoj

En ĉi tiu etapo, mi klarigas al mia avino, ke se ŝi volas scii kiu estas edziĝinta al kiu, tiam ŝi bezonas nur kompari id en la listo nepoj с nepo_id en la listo de geedzoj.

Post kelkdek kuketoj, mi bezonas dormeton. "Ĉu vi povas daŭrigi, avino?" Mi foriras por dormeti.

Mi revenos post kelkaj horoj. Vi estas bonega, avino! Ĉio aspektas bonega krom la listo ŝatokupo. Estas ĉirkaŭ 1000 ŝatokupoj en la listo. Plej multaj el ili estas ripetemaj; Kio okazis?

nepo_id
ŝatokupo

1
biciklado

4
biciklado

3
biciklado

7
kurado

11
biciklado

...ni daŭrigu!

Pardonu, mi tute forgesis diri! Uzante unu liston, vi povas nur spuri ŝatokupo. Tiam en alia listo ni devas spuri nepojkiuj faras ĉi tion ŝatokupo. Ni nomos ĝin "Komuna listo". Vidante, ke vi ne ŝatas ĝin, mi komencas maltrankviliĝi kaj reiras al listreĝimo.

id
ŝatokupo

1
biciklado

2
kurado

3
naĝado

...pli da ŝatokupoj!

Listo de ŝatokupoj

Post kiam ni havas nian ŝatokupliston, ni kreas nian duan liston kaj nomas ĝin "Ŝatokupoj de nepoj".

nepo_id
hobby_id

4
1

3
1

7
2

...pli!

Ĝenerala listo de la ŝatokupoj de nepoj

Post ĉi tiu tuta laboro, avino nun havas bonegan memorsistemon por konservi trakon de sia mirinde granda familio. Kaj tiam - por konservi min pli longe - ŝi faras la magian demandon: "Kie vi lernis fari ĉion ĉi?"

Rilataj Datumbazoj

Rilata datumbazo estas aro de formale priskribitaj tabeloj (en nia ekzemplo ĉi tiuj estas folioj) el kiuj vi povas aliri donita aŭ kolekti ilin en malsamaj manieroj sen devi reorganizi la tablojn Datumbazo. Estas multaj diversaj specoj de interrilataj datumbazoj, sed bedaŭrinde listo sur papero ne estas unu el ili.

Karakterizaĵo de la plej popularaj interrilataj datumbazoj estas la konsultlingvo SQL (Structured Query Language). Dank' al ĝi, se avino translokigus sian memorsistemon al la komputilo, ŝi rapide povus ricevi respondon al demandoj kiel: "Kiu ne vizitis min pasintjare, estas edziĝinta kaj ne havas ŝatokupojn?"

Unu el la plej popularaj SQL-datumbazaj administradsistemoj estas la malfermfonta MySQL. Ĝi estas efektivigita ĉefe kiel interrilata datumbaza estrosistemo (RDBMS) por ret-bazitaj programaroj.

Kelkaj ĉefaj trajtoj de MySQL:

  • Ĝi estas sufiĉe konata, vaste uzata kaj ĝisfunde provita.
  • Estas multaj kvalifikitaj programistoj, kiuj havas sperton pri laborado kun SQL kaj interrilataj datumbazoj.
  • La datumoj estas konservitaj en diversaj tabeloj, kio faciligas establi rilatojn per primaraj kaj fremdaj ŝlosiloj (identigiloj).
  • Ĝi estas facile uzebla kaj efika, igante ĝin ideala por grandaj kaj malgrandaj entreprenoj.
  • La fontkodo estas sub la kondiĉoj de la Ĝenerala Publika Permesilo de GNU.

Nun forgesu ĝin ĈIU.

Klarigante NoSQL al avino

Avinjo, ni havas grandan familion. Estas 150 nepoj en ĝi! Multaj el ili estas edziĝintaj, havas infanojn, interesiĝas pri io ktp. En via aĝo estas neeble memori ĉion pri ni ĉiuj. Kion vi bezonas estas enmemoriga sistemo!

Feliĉe, mi ne dezirante ke vi forgesu mian naskiĝtagon kaj plej ŝatatan guston de glaciaĵo, mi povas helpi. Do mi kuras al la plej proksima vendejo, prenas kajeron kaj revenas al via hejmo.

La unua paŝo, kiun mi faras, estas skribi "Nepoj" per grandaj grasaj literoj sur la kovrilo de mia kajero. Poste mi turnas min al la unua paĝo kaj komencas skribi ĉion, kion vi bezonas memori pri mi. Post kelkaj minutoj la paĝo aspektas kiel ĉi tio.

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

Я: "Ŝajnas, ke ĉio estas preta!"
Grandma: "Atendu, kio pri la aliaj nepoj?"
Я: "Jes, ĝuste. Poste ni atribuas paĝon por ĉiu.”
Grandma: "Ĉu mi devos skribi ĉiujn samajn informojn por ĉiuj kiel mi faris por vi?"
Я: “Ne, nur se vi volas. Lasu min montri."
Prenante la plumon de mia avino, mi turnas la paĝon kaj rapide notas informojn pri mia malplej ŝatata kuzo.

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

Kiam ajn avino bezonas memori ion pri unu el siaj nepoj, ŝi nur bezonas iri al la ĝusta paĝo en la kajero de siaj nepoj. Ĉiuj informoj pri ili estos konservitaj ĝuste tie sur ilia paĝo, kiun ŝi povas rapide ŝanĝi kaj ĝisdatigi.

Kiam ĉio estas farita, ŝi demandas la magian demandon: "Kie vi lernis fari ĉion ĉi?"

NoSQL-datumbazoj

Estas multaj NoSQL-datumbazoj ("ne nur SQL"). En niaj ekzemploj ni montris dokumenta datumbazo. NoSQL-datumbazoj modeligas datumojn en manieroj kiuj eliminas la tabelrilatojn uzitajn en interrilataj datumbazoj. Tiuj datumbazoj iĝis popularaj en la fruaj 2000-aj jaroj inter firmaoj kiuj postulis nub-bazitan datumbazgrupon pro siaj nuraj skalaj postuloj (ekz. Facebook). En tiaj aplikoj, datenkonsistenco estis multe malpli grava ol efikeco kaj skaleblo.

En la komenco, NoSQL-datumbazoj ofte estis uzitaj por niĉaj datumadministradtaskoj. Esence, se temas pri retaj kaj nubaj aplikaĵoj, NoSQL-datumbazoj prilaboris kaj distribuis signifajn kvantojn da datumoj. NoSQL-inĝenieroj ankaŭ ŝatis la flekseblecon de la datenskemo (aŭ manko de tio) tiel ke rapidaj ŝanĝoj estis eblaj en ĝisdatigeblaj aplikoj.

Ĉefaj trajtoj de NoSQL:

  • Tre fleksebla maniero stoki datumojn
  • Horizontala skalado al aretoj
  • Ebla sekvenco por persisto/disvastigo
  • Dokumentoj kiuj estas identigitaj per unikaj ŝlosiloj

Detala komparo

MySQL postulas difinitan kaj strukturitan skemon.
NoSQL permesas vin konservi ajnajn datumojn en "dokumento".

MySQL estas subtenata de grandega komunumo.
NoSQL havas malgrandan kaj rapide kreskantan komunumon.

NoSQL estas facile skalebla.
MySQL bezonas pli da regebleco.

MySQL uzas SQL, kiu estas uzata en multaj specoj de datumbazoj.
NoSQL estas datumbazo laŭ dezajno kun popularaj efektivigoj.

MySQL uzas norman demandlingvon (SQL).
NoSQL ne uzas norman demandlingvon.

MySQL havas multajn bonegajn raportilojn.
NoSQL havas plurajn raportajn ilojn, kiuj malfacilas normigi.

MySQL eble havas rendimentajn problemojn por grandaj datumoj.
NoSQL provizas bonegan rendimenton pri grandaj datumoj.

Pensoj 8bazo

En la kompanio 8bazo, kie mi laboras, ni funkciigas la laborspacon de ĉiu projekto per interrilata datumbazo Aurora MySQL gastigita en AWS. Dum NoSQL estas logika elekto kiam viaj postuloj postulas altan rendimenton kaj skaleblon, ni kredas, ke la forta datuma konsistenco provizita de DBMS estas esenca dum konstruado de SaaS-aplikoj kaj aliaj komercaj programoj.

Por noventreprenoj kaj programistoj konstruantaj komercajn aplikojn, kiuj postulas raportadon, transakcian integrecon kaj bone difinitajn datummodelojn, investi en interrilataj datumbazoj estas, laŭ nia opinio, la ĝusta elekto.

Lernu pli pri evoluado kun Aurora, Serverless kaj GraphQL kun 8base.com tie.

fonto: www.habr.com

Aldoni komenton