Kako objasniti svojoj baki razliku između SQL-a i NoSQL-a

Kako objasniti svojoj baki razliku između SQL-a i NoSQL-a

Jedna od najvažnijih odluka koje programer donosi je koju bazu podataka koristiti. Dugi niz godina, opcije su bile ograničene na različite opcije relacijske baze podataka koje su podržavale jezik strukturiranih upita (SQL). To uključuje MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 i mnoge druge.

U proteklih 15 godina, mnoge nove baze podataka su ušle na tržište pod No-SQL pristupom. To uključuje trgovine ključ-vrijednosti kao što su Redis i Amazon DynamoDB, baze podataka širokih stupaca kao što su Cassandra i HBase, skladišta dokumenata kao što su MongoDB i Couchbase, te baze podataka grafova i tražilice poput Elasticsearch i Solr.

U ovom članku ćemo pokušati razumjeti SQL i NoSQL bez upuštanja u njihovu funkcionalnost.
Osim toga, usput ćemo se zabaviti.

Objašnjavanje SQL-a baki

Bako, zamisli da ti nisam jedini unuk. Umjesto toga, mama i tata su se voljeli kao zečevi, imali su 100 djece, a potom usvojili još 50.

Dakle, volite sve nas i ne želite da zaboravite nijedno naše ime, rođendane, omiljene ukuse sladoleda, veličine odjeće, hobije, imena supružnika, imena potomaka i druge super važne činjenice. Međutim, da se razumijemo. Imaš 85 godina i dobra stara memorija to jednostavno ne može podnijeti.

Srećom, kao najpametniji od tvojih unuka, mogu pomoći. Pa dođem kod tebe kući, izvadim par listova papira i zamolim te da ispečeš kolačiće prije nego počnemo.

Na jednom listu papira pravimo listu pod nazivom „unuci". Svaki unuk zabilježeno s nekim bitnim informacijama o tome, uključujući jedinstveni broj koji će sada pokazati koji unuk on je. Također, radi organizacije, na vrhu liste ispisujemo imenovane atribute kako bismo uvijek znali koje informacije lista sadrži.

id
ime
rođendan
posljednja posjeta
veličina odjeće
omiljeni sladoled
usvojen

1
Džimi
09-22-1992
09-01-2019
L
Mint cokolada
lažan

2
jessica
07-21-1992
02-22-2018
M
Stjenovita cesta
istinski

…nastavljamo listu!

Spisak unuka

Nakon nekog vremena, sve vam je jasno i skoro smo završili sa listom! Međutim, ti se okreneš meni i kažeš: „Zaboravili smo da dodamo prostor za supružnike, hobije, unuke!“ Ali ne, nismo zaboravili! Ovo slijedi dalje i zahtijeva novi list papira.

Pa izvučem još jedan list papira i na njemu zovemo listu Supružnici. Ponovo dodajemo atribute koji su nam važni na vrh liste i počinjemo sa dodavanjem u redove.

id
grandchild_id
ime
rođendan

1
2
Jovan
06-01-1988

2
9
Fernanda
03-05-1985

...više supružnika!

Spisak supružnika

U ovoj fazi objašnjavam svojoj baki da ako želi da zna ko je za koga oženjen, onda samo treba da se poklapa id na listi unuci с grandchild_id na spisku supružnika.

Nakon par tuceta kolačića, moram malo odrijemati. "Možeš li nastaviti, bako?" Odlazim da odrijemam.

Vraćam se za nekoliko sati. Super si, bako! Sve izgleda odlično osim liste hobi. Na listi je oko 1000 hobija. Većina njih se ponavlja; Šta se desilo?

grandchild_id
Hobi

1
biciklizam

4
biciklizam

3
biciklizam

7
trčanje

11
biciklizam

…nastavljamo!

Izvinite, potpuno sam zaboravio da kažem! Koristeći jednu listu, možete samo pratiti hobi. Zatim u drugoj listi trebamo pratiti unucikoji ovo rade hobi. Nazvat ćemo to "Zajednička lista". Vidjevši da vam se ne sviđa, zabrinem se i vratim se na popis.

id
Hobi

1
biciklizam

2
trčanje

3
plivanje

...više hobija!

Lista hobija

Kada imamo našu listu hobija, kreiramo drugu listu i zovemo je "Hobiji unuka".

grandchild_id
hobby_id

4
1

3
1

7
2

…više!

Opšta lista hobija unuka

Nakon svega ovog rada, baka sada ima kul memorijski sistem za praćenje cijele svoje neverovatno velike porodice. A onda - da me zadrži duže - postavlja magično pitanje: "Gdje si naučio da radiš sve ovo?"

Relacijske baze podataka

Relaciona baza podataka je skup formalno opisanih tabela (u našem primjeru, to su listovi) iz kojih možete pristupiti dato ili ih prikupite na različite načine bez potrebe za reorganizacijom tablica Baza podataka. Postoji mnogo različitih tipova relacionih baza podataka, ali nažalost lista na komadu papira nije jedna od njih.

Karakteristična karakteristika najpopularnijih relacionih baza podataka je jezik upita SQL (Structured Query Language). Zahvaljujući tome, ako bi baka prebacila svoj memorijski sistem na kompjuter, mogla bi brzo dobiti odgovor na pitanja poput: „Ko me nije posjetio prošle godine, udata je i nema hobije?“

Jedan od najpopularnijih sistema za upravljanje SQL bazama podataka je MySQL otvorenog koda. Implementiran je prvenstveno kao sistem za upravljanje relacionim bazama podataka (RDBMS) za web-bazirane softverske aplikacije.

Neke ključne karakteristike MySQL-a:

  • Prilično je poznat, široko korišten i opsežno testiran.
  • Postoji mnogo vještih programera koji imaju iskustva sa SQL-om i relacijskim bazama podataka.
  • Podaci se pohranjuju u različite tabele, što olakšava uspostavljanje odnosa pomoću primarnih i stranih ključeva (identifikatora).
  • Jednostavan je za upotrebu i efikasan, što ga čini idealnim za velika i mala preduzeća.
  • Izvorni kod je pod uslovima GNU Opšte javne licence.

Sad zaboravi ALL.

Objašnjavanje NoSQL baki

Bako, imamo veliku porodicu. Ima 150 unučadi! Mnogi od njih su oženjeni, imaju djecu, vole nešto i tako dalje. U tvojim godinama nemoguće je zapamtiti sve o svima nama. Ono što vam treba je memorijski sistem!

Na sreću, ja ne želeći da zaboraviš moj rođendan i omiljeni ukus sladoleda, mogu ti pomoći. Pa otrčim do najbliže prodavnice, uzmem svesku i vratim se tvojoj kući.

Prvi korak koji poduzimam je da velikim podebljanim slovima napišem "Unuci" na koricama svoje sveske. Onda okrenem na prvu stranicu i počnem da pišem sve što treba da zapamtiš o meni. Nekoliko minuta kasnije, stranica izgleda otprilike ovako.

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

Я: “Izgleda da je sve spremno!”
Bako: "Čekaj, a šta je sa ostalim unucima?"
Я: "Da upravo. Zatim dodijelite po jednu stranicu za svaku.”
Bako: „Da li ću morati da zapisujem sve iste informacije za sve, kao što sam uradio za vas?“
Я: „Ne, samo ako želiš. Pusti me da ti pokažem."
Zgrabim bakinu olovku, okrenem stranicu i brzo zabilježim informacije o svom najmanje omiljenom rođaku.

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

Kad god baka treba da se seti nečega o nekom od svojih unučadi, samo treba da dođe do prave stranice u beležnici svojih unuka. Sve informacije o njima bit će pohranjene upravo tamo na njihovoj stranici, koje ona može brzo promijeniti i ažurirati.

Kada je sve gotovo, postavlja magično pitanje: "Gdje si sve ovo naučio raditi?"

NoSQL baze podataka

Ima ih mnogo NoSQL baze podataka („ne samo SQL“). U našim primjerima smo pokazali baza dokumenata. NoSQL baze podataka modeliraju podatke na načine koji isključuju odnose tablica koji se koriste u relacijskim bazama podataka. Ove baze podataka postale su popularne početkom 2000-ih s kompanijama kojima je bilo potrebno klasteriranje baza podataka u oblaku zbog njihovih eksplicitnih zahtjeva za skaliranjem (kao što je Facebook). U takvim aplikacijama, konzistentnost podataka bila je mnogo manje važna od performansi i skalabilnosti.

U početku su se NoSQL baze podataka često koristile za zadatke upravljanja nišnim podacima. U osnovi, kada su u pitanju web i cloud aplikacije, NoSQL baze podataka obrađuju i distribuiraju značajne količine podataka. NoSQL inženjerima se također svidjela fleksibilna šema podataka (ili nedostatak iste) tako da su bile moguće brze promjene u aplikacijama koje su ažurirane.

Ključne karakteristike NoSQL-a:

  • Veoma fleksibilan način pohranjivanja podataka
  • Horizontalno skaliranje na klastere
  • Moguće sekvenciranje po postojanosti/širenju
  • Dokumenti koji se identificiraju pomoću jedinstvenih ključeva

Detaljno poređenje

MySQL zahtijeva definiranu i strukturiranu shemu.
NoSQL vam omogućava da pohranite sve podatke u "dokument".

MySQL ima ogromnu zajednicu.
NoSQL ima malu zajednicu koja se brzo razvija.

NoSQL je lako skalirati.
MySQL treba više upravljivosti.

MySQL koristi SQL, koji se koristi u mnogim vrstama baza podataka.
NoSQL je dizajn baziran na bazi podataka sa popularnim implementacijama.

MySQL koristi standardni jezik upita (SQL).
NoSQL ne koristi standardni jezik upita.

MySQL ima mnogo sjajnih alata za izvještavanje.
NoSQL ima nekoliko alata za izvještavanje koje je teško standardizirati.

MySQL može pokazati probleme s performansama za velike podatke.
NoSQL pruža odlične performanse na velikim podacima.

Thoughts 8base

U kompaniji 8basegdje ja radim, obezbjeđujemo radni prostor za svaki projekat sa Aurora MySQL relacionom bazom podataka koja se nalazi na AWS-u. Iako je NoSQL logičan izbor kada vaša aplikacija zahtijeva visoke performanse i skalabilnost, vjerujemo da je snažna konzistentnost podataka koju pruža DBMS ključna kada se gradi SaaS aplikacija i drugi poslovni softver.

Za startupe i programere koji grade poslovne aplikacije koje zahtijevaju izvještavanje, transakcijski integritet i dobro definirane modele podataka, ulaganje u relacijske baze podataka je, po našem mišljenju, pravi izbor.

Saznajte više o razvoju uz Aurora, Serverless i GraphQL na 8base.com ovdje.

izvor: www.habr.com

Dodajte komentar