Nola azaldu zure amonari SQL eta NoSQL arteko aldea

Nola azaldu zure amonari SQL eta NoSQL arteko aldea

Garatzaile batek hartzen duen erabaki garrantzitsuenetako bat da zein datu-base erabili. Urte askotan, aukerak SQL Egituratutako Kontsulta Lengoaia onartzen zuten datu-base erlazional aukeretara mugatu ziren. Horien artean MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 eta beste asko daude.

Azken 15 urteotan, datu-base berri asko sartu dira merkatuan No-SQL ikuspegiarekin. Besteak beste, Redis eta Amazon DynamoDB bezalako gako-balioen dendak, Cassandra eta HBase bezalako zutabe-datu-base zabalak, MongoDB eta Couchbase bezalako dokumentu-dendak eta Elasticsearch eta Solr bezalako datu-base grafikoak eta bilatzaileak.

Artikulu honetan, SQL eta NoSQL ulertzen saiatuko gara haien funtzionalitatean sartu gabe.
Gainera, bidean ondo pasako dugu.

Amonari SQL azaltzen

Amona, imajinatu ez naizela zure biloba bakarra. Horren ordez, amak eta aitak untxiak bezala maite zuten elkar, 100 ume izan zituzten, gero beste 50 hartu zituzten.

Beraz, gu guztiok maite gaituzu eta ez duzu ahaztu nahi gure izenak, urtebetetzeak, izozki zapore gogokoenak, arropa neurriak, zaletasunak, ezkontideen izenak, ondorengoen izenak eta beste datu garrantzitsu batzuk. Hala ere, aitor dezagun. 85 urte dituzu eta oroimen zaharra ezin da hori maneiatu.

Zorionez, zure biloben artean adimentsuena izanik, lagun dezaket. Beraz, zure etxera etortzen naiz, orri batzuk ateratzen ditut eta hasi baino lehen galleta batzuk labean jartzeko eskatzen dizut.

Orri batean, zerrenda bat egiten dugu "bilobak". Bakoitzak biloba hari buruzko informazio esanguratsu batzuekin grabatua, orain nola adieraziko duen zenbaki bakarra barne biloba Bera da. Era berean, antolaketaren mesedetan, zerrendaren goialdean izendatutako atributuak idazten ditugu, zerrendak zer informazio duen beti jakin dezagun.

id
izena
urtebetetzea
azken bisita
arropa tamaina
gogoko izozkia
onartu

1
Jimmy
09-22-1992
09-01-2019
L
mendako txokolatea
false

2
Jessica
07-21-1992
02-22-2018
M
Bide harritsua
Egia

…zerrenda jarraitzen dugu!

Biloben zerrenda

Pixka bat igaro ondoren, dena ulertzen duzu eta ia amaitu dugu zerrenda! Hala ere, nigana jotzen duzu eta esaten duzu: "Ahaztu zaigu ezkontideentzat, zaletasunentzat, bilobentzat lekua gehitzea!" Baina ez, ez dugu ahaztu! Honek aurrerago jarraitzen du eta orri berri bat behar du.

Beraz, beste orri bat ateratzen dut eta bertan zerrendari deitzen diogu Ezkontideak. Berriz ere guretzat garrantzitsuak diren atributuak zerrendaren goiko aldean gehitzen ditugu eta errenkadetan gehitzen hasten gara.

id
biloba_id
izena
urtebetetzea

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

… ezkontide gehiago!

Ezkontideen zerrenda

Etapa honetan, nire amonari azaltzen diot nor norekin ezkonduta dagoen jakin nahi badu, bat etortzea besterik ez duela behar. id zerrendan bilobak с biloba_id ezkontideen zerrendan.

Dozena pare bat galletaren ondoren, siesta bat egin behar dut. "Jarraitu al dezakezu, amona?" siesta hartzera noa.

Ordu gutxi barru itzultzen naiz. Polita zara, amona! Dena itxura bikaina da zerrenda izan ezik hobby. Zerrendan 1000 zaletasun inguru daude. Gehienak errepikakorrak dira; Zer gertatu da?

biloba_id
hobby

1
bizikleta

4
bizikleta

3
bizikleta

7
exekutatzen

11
bizikleta

... jarraitzen dugu!

Barkatu, guztiz ahaztu zait esatea! Zerrenda bakarra erabiliz, jarraipen bakarra egin dezakezu hobby. Ondoren, beste zerrenda batean trazatu behar dugu bilobakhau egiten ari direnak hobby. Guk deituko diogu "Zerrenda komuna". Gustatzen ez zaizula ikusita, kezkatu egiten naiz eta zerrenda modura itzultzen naiz.

id
hobby

1
bizikleta

2
exekutatzen

3
igeriketa

… zaletasun gehiago!

Zaletasunen zerrenda

Gure zaletasun-zerrenda dugunean, gure bigarren zerrenda sortu eta " deitzen diogu "Biloben zaletasunak'.

biloba_id
zaletasuna_id

4
1

3
1

7
2

…gehiago!

Biloben zaletasunen zerrenda orokorra

Lan honen guztiaren ondoren, amonak memoria sistema polita du orain bere familia izugarri handiaren jarraipena egiteko. Eta gero -luzaroago mantentzeko- galdera magikoa egiten du: "Non ikasi duzu hau guztia egiten?"

Datu-base erlazionalak

Datu-base erlazional bat formalki deskribatutako taulen multzoa da (gure adibidean, orriak dira) eta bertatik sar zaitezke. datuak edo hainbat eratara bildu mahaiak berrantolatu beharrik gabe Datu-basea. Datu-base erlazional mota asko daude, baina, zoritxarrez, paper batean zerrenda bat ez da horietako bat.

Datu-base erlazional ezagunenen bereizgarria SQL (Structured Query Language) kontsulta-lengoaia da. Berari esker, amonak bere memoria-sistema ordenagailu batera transferitzen badu, azkar lortu ahal izango ditu galderaren erantzunak: "Nork ez ninduen iaz bisitatu, ezkonduta dago eta ez du zaletasunik?"

SQL datu-baseen kudeaketa sistema ezagunenetako bat MySQL kode irekikoa da. Batez ere datu-base erlazionalak kudeatzeko sistema (RDBMS) gisa inplementatzen da web-oinarritutako software aplikazioetarako.

MySQL-ren ezaugarri nagusi batzuk:

  • Nahiko ezaguna da, oso erabilia eta oso probatua da.
  • SQL eta datu-base erlazionalekin esperientzia duten garatzaile trebe asko daude.
  • Datuak hainbat tauletan gordetzen dira, eta horri esker, harremanak errazten dira lehen eta kanpoko gako (identifikatzaileak) erabiliz.
  • Erabiltzeko erraza eta eraginkorra da, negozio handi eta txikientzat aproposa da.
  • Iturburu-kodea GNU Lizentzia Publiko Orokorraren baldintzen arabera dago.

Orain ahaztu ALL.

NoSQL azaltzen amonari

Amona, familia handia dugu. 150 biloba ditu! Horietako asko ezkonduta daude, seme-alabak dituzte, zerbait gustuko dute eta abar. Zure adinean ezinezkoa da gu guztioi buruz dena gogoratzea. Behar duzuna memoria sistema bat da!

Zorionez, nik ez Nire urtebetetzea eta izozki-zapore gogokoena ahaztu nahi baduzu, lagun dezaket. Beraz, gertuen dagoen dendara korrika, koaderno bat hartu eta zure etxera itzultzen naiz.

Ematen dudan lehen pausoa koadernoaren azalean letra larriz handiz idaztea da. Ondoren, lehen orrialdera irauli eta niri buruz gogoratu behar duzun guztia idazten hasten naiz. Minutu batzuk geroago, orrialdeak honelako itxura du.

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

Π―: "Badirudi dena prest dagoela!"
amona: "Itxaron, zer gertatzen da gainerako bilobekin?"
Π―: "Bai horixe. Ondoren, esleitu orrialde bat bakoitzariΒ».
amona: "Informazio bera idatzi beharko al dut guztiontzat, zuri egin nuen bezala?"
Π―: β€œEz, nahi baduzu bakarrik. Utzidazu erakusten".
Amonaren boligrafoa hartuz, orria irauli eta gutxien gustatzen zaidan lehengusuari buruzko informazioa azkar apuntatzen dut.

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

Amona batek bere bilobetako bati buruz zerbait gogoratu behar duen bakoitzean, biloben koadernoko orrialde egokian nabigatu besterik ez du egin behar. Horiei buruzko informazio guztia bertan gordeko da bere orrian, eta azkar aldatu eta egunera dezake.

Dena amaitutakoan, galdera magikoa egiten du: "Non ikasi duzu hau guztia egiten?"

NoSQL datu-baseak

Asko daude NoSQL datu-baseak ("ez SQL bakarrik"). Gure adibideetan, erakutsi dugu dokumentuen datu-basea. NoSQL datu-baseek datu-base erlazionaletan erabiltzen diren taula-erlazioak baztertzen dituzten moduan modelatzen dituzte datuak. Datu-base hauek 2000ko hamarkadaren hasieran ezagunak bihurtu ziren hodeian oinarritutako datu-baseen multzokatzea behar zuten enpresekin, eskalatze eskakizun esplizituengatik (Facebook adibidez). Horrelako aplikazioetan, datuen koherentzia askoz garrantzitsuagoa zen errendimendua eta eskalagarritasuna baino.

Hasieran, NoSQL datu-baseak sarritan erabiltzen ziren nitxoen datuak kudeatzeko zereginetarako. Funtsean, web eta hodeiko aplikazioei dagokienez, NoSQL datu-baseek datu kopuru garrantzitsuak prozesatu eta banatu zituzten. NoSQL ingeniariei ere gustatu zitzaien datuen eskema malgua (edo horren falta), eguneratu ziren aplikazioetan aldaketa azkarrak egin ahal izateko.

NoSQLren ezaugarri nagusiak:

  • Datuak gordetzeko modu oso malgua
  • Eskalatze horizontala klusterretara
  • Iraunkortasun/hedapen bakoitzeko sekuentziazio posiblea
  • Gako bakarrak erabiliz identifikatzen diren dokumentuak

Konparaketa zehatza

MySQL-k eskema definitua eta egituratua behar du.
NoSQL-k edozein datu "dokumentu" batean gordetzeko aukera ematen du.

MySQL-k komunitate handia du.
NoSQL-k komunitate txiki eta azkar hazten ari den komunitatea du.

NoSQL eskalatzeko erraza da.
MySQL-k kudeagarritasun handiagoa behar du.

MySQL-k SQL erabiltzen du, datu-base mota askotan erabiltzen dena.
NoSQL inplementazio ezagunak dituen datu-basearen diseinua da.

MySQL-k kontsulta-lengoaia estandarra (SQL) erabiltzen du.
NoSQL-k ez du kontsulta-lengoaia estandarrik erabiltzen.

MySQL-k berri emateko tresna bikainak ditu.
NoSQL-k estandarizatzeko zailak diren txostenak egiteko hainbat tresna ditu.

MySQL-k datu handietarako errendimendu arazoak erakutsi ditzake.
NoSQL-k errendimendu bikaina eskaintzen du datu handietan.

Pentsamenduak 8 oinarri

Konpainiak 8 oinarrialan egiten dudan tokian, proiektu bakoitzeko lan-eremu bat eskaintzen dugu AWS-en ostatatutako Aurora MySQL datu-base erlazional batekin. NoSQL aukera logikoa den arren, zure aplikazioak errendimendu eta eskalagarritasun handia eskatzen duenean, uste dugu DBMS batek ematen duen datu-koherentzia sendoa ezinbestekoa dela SaaS aplikazioak eta beste negozio-software batzuk eraikitzean.

Txostenak, transakzio osotasuna eta ondo definitutako datu-ereduak behar dituzten negozio-aplikazioak eraikitzen dituzten startup eta garatzaileentzat, gure ustez, aukera egokia da datu-base erlazionaletan inbertitzea.

Lortu informazio gehiago Aurora, Serverless eta GraphQL-ekin garatzeari buruz 8base.com helbidean Hemen.

Iturria: www.habr.com

Gehitu iruzkin berria