
Jedna od najvažnijih odluka koju programer donosi je koju bazu podataka koristiti. Godinama su opcije bile ograničene na razne vrste relacijskih baza podataka koje podržavaju jezik strukturiranih upita (SQL). U njih spadaju MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 i mnoge druge.
U posljednjih 15 godina na tržištu se pojavilo mnogo novih baza podataka unutar No-SQL pristupa. Tu su skladišta parova ključeva i vrijednosti, poput Redis i Amazon DynamoDB, široke kolonske baze, kao što su Cassandra i HBase, skladišta dokumenata kao što su MongoDB i Couchbase, kao i grafičke baze podataka i pretraživači, poput Elasticsearch i Solr.
U ovom članku pokušat ćemo razjasniti SQL i NoSQL, a da ne zalazimo u njihovu funkcionalnost.
Osim toga, zabavit ćemo se malo tokom procesa.
Objašnjavamo baki SQL
Bako, zamisli da nisam tvoj jedini unuk. Umjesto toga, mama i tata su se voljeli kao zečevi, imali su 100 djece, a zatim su posvojili još 50.
Dakle, voliš nas sve i ne želiš zaboraviti nijedno od naših imena, dana rođenja, omiljenih okusa sladoleda, veličina odjeće, hobija, imena supružnika, imena unuka i drugih super važnih informacija. No, hajde da budemo realni. Imaš 85 godina i stari dobri pamćenje jednostavno ne može podnijeti.
Na sreću, ja, kao najpametniji od tvojih unuka, mogu pomoći. Zato dolazim kod tebe kući, izvlačim nekoliko listova papira i molim te da ispečeš kekse prije nego što počnemo.
Na jednom listu papira pravimo popis pod nazivom "Unuci". Svaki unuk zapisuje se s određenom bitnom informacijom o sebi, uključujući jedinstveni broj koji će sada označavati kojim unukom je. Osim toga, radi organiziranosti, ispisujemo imenovane atribute na vrhu popisa kako bismo uvijek znali koju informaciju taj popis sadrži.
id
ime
datum rođenja
posljednja posjeta
veličina odjeće
omiljeni sladoled
posvojen
1
Jimmy
09-22-1992
09-01-2019
L
Minta čokolada
false
2
Jessica
07-21-1992
02-22-2018
M
Rocky road
true
…nastavljamo popis!
Popis unuka
Nakon nekog vremena shvatiš sve i skoro smo završili s popisom! Međutim, okreneš se prema meni i kažeš: „Zaboravili smo dodati mjesta za supružnike, hobije, unuke!“ No ne, nismo zaboravili! To ide dalje i zahtijeva novi list papira.
Dakle, izvlačim još jedan list papira, i na njemu nazivamo popis Supružnici. Ponovno dodajemo atribute koji su nam važni na početak liste i počinjemo dodavati u redovima.
id
grandchild_id
ime
datum rođenja
1
2
John
06-01-1988
2
9
Fernanda
03-05-1985
…više supružnika!
Lista supružnika
U ovoj fazi objašnjavam baki da, ako želi znati tko je s kim u braku, samo treba podudariti id na listi unuka s grandchild_id na listi supružnika.
Nakon nekoliko desetaka kolačića moram odrijemati. „Možeš nastaviti, bako?” Odlazim na odmor.
Vraćam se nakon nekoliko sati. A ti si super, bako! Sve izgleda odlično, osim liste hobi. Na listi je oko 1000 hobija. Većina njih se ponavlja; što se dogodilo?
grandchild_id
hobby
1
biking
4
biking
3
biking
7
pokrenuto
11
biking
…nastavljamo!
Žao mi je, potpuno sam zaboravio reći! Koristeći jednu listu, možemo pratiti samo hobi. Zatim, na drugoj listi trebamo pratiti unuka, koji se time bave hobi. Ovo ćemo nazvati „Zajednička lista”. Vidjevši da ti se to ne sviđa, počinjem brinuti i vraćam se u način liste.
id
hobby
1
biking
2
pokrenuto
3
swimming
…više hobija!
Lista hobija
Kada imamo našu listu hobija, kreiramo naš drugi popis i nazivamo ga „Hobiji unuka».
grandchild_id
hobby_id
4
1
3
1
7
2
…više!
Zajednička lista unuka hobija
Nakon svega ovog rada, baka sada ima sjajan sustav pamćenja za praćenje cijele svoje iznenađujuće velike obitelji. A zatim — da me zadrži dulje — postavlja čarobno pitanje: „Gdje si naučio sve to raditi?”
Relacijske baze podataka
Relacijska baza podataka je skup formalno opisnih tablica (u našem primjeru to su listovi) iz kojih se može pristupiti podacima ili ih prikupiti na različite načine bez potrebe za reorganizacijom tablica baze podataka. Postoji mnogo različitih tipova relacijskih baza podataka, ali nažalost lista na papiru nije jedna od njih.
Odlikovna karakteristika najpopularnijih relacijskih baza podataka je jezik upita SQL (Structured Query Language). Uz njegovu pomoć, ako baka preveze svoj sustav pamćenja na računalo, brzo će moći dobiti odgovor na pitanja poput: „Tko me nije posjetio prošle godine, oženjen je i nema hobija?”
Jedan od najpopularnijih sustava za upravljanje bazama podataka SQL je MySQL s otvorenim kodom. Prvenstveno je implementiran kao sustav za upravljanje relacijskim bazama podataka (RDBMS) za softverske aplikacije temeljene na web tehnologijama.
Neke ključne značajke MySQL:
- Prilično je poznat, široko se koristi i pažljivo je testiran.
- Postoji mnogo kvalificiranih programera s iskustvom u radu sa SQL-om i relacijskim bazama podataka.
- Podaci se pohranjuju u različitim tablicama, što olakšava uspostavljanje odnosa korištenjem primarnih i stranih ključeva (identifikatora).
- Jednostavan je za korištenje i učinkovit, što ga čini idealnim za velike i male tvrtke.
- Izvorni kod je pod uvjetima GNU General Public License.
Sada zaboravi SVE.
Objašnjavamo baki NoSQL
Bako, imamo veliku obitelj. Ima nas 150 unuka! Mnogi od njih su u braku, imaju djecu, bave se raznim hobijima i slično. U tvojoj dobi nije moguće zapamtiti sve o svima nama. Ono što ti treba je sustav pamćenja!
Srećom, ja, ne želeći da zaboraviš moj rođendan i omiljeni okus sladoleda, mogu ti pomoći. Zato trčim u najbližu trgovinu, uzimam bilježnicu i vraćam se k tebi kući.
Prvi korak koji radim je da napišem "Unuci" velikim masnim slovima na naslovnici bilježnice. Zatim otvaram prvu stranicu i počinjem pisati sve što bi trebala zapamtiti o meni. Nakon nekoliko minuta 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":"Radije voli tortu od sladoleda za rođendan umjesto čokoladne torte!"
} Ja: “Izgleda da je sve spremno!”
Bako: “Čekaj, što je s ostalom unučadi?”
Ja: “Da, točno. Tada ćemo odvojiti po jednu stranicu za svakog.”
Bako: “Moram li zapisivati iste informacije za sve kao što sam radila za tebe?”
Ja: “Ne, samo ako želiš. Dođi da ti pokažem.”
Uzimajući bakinu olovku, prelistavam stranicu i brzo zapisujem informacije o svom najomraženijem rođaku.
{
"_id":"dh97dhs9b39397ss001",
"name":"Tanner",
"birthday":"09-12-2008",
"clothing_size":"S",
"friend_count":0,
"favorite_picture":null,
"remember":"Rođen na isti dan kao Cody, ali nije toliko važan"
}Svaki put kada baki zatreba nešto o jednom od unuka, dovoljno je samo da pređe na odgovarajuću stranicu u bilježnici unuka. Sve informacije o njima bit će pohranjene upravo tamo, na njihovoj stranici, koju može brzo promijeniti i ažurirati.
Kada je sve već učinjeno, postavlja čarobno pitanje: „Gdje si naučio sve to raditi?”
NoSQL baze podataka
Postoji mnogo NoSQL baza podataka ("ne samo SQL"). U našim primjerima pokazali smo document bazu podataka. NoSQL baze podataka modeliraju podatke na načine koji isključuju tabelarne odnose korištene u relacijskim bazama podataka. Ove baze podataka postale su popularne početkom 2000-ih među kompanijama kojima je bila potrebna oblaka klasterizacija baza podataka zbog njihovih očitih potreba za skaliranjem (npr. Facebook). U takvim aplikacijama, dosljednost podataka bila je daleko manje važna od performansi i skalabilnosti.
Na početku su se NoSQL baze podataka često koristile za specijalizirane zadatke upravljanja podacima. Što se više radilo o web i oblaku aplikacijama, NoSQL baze podataka su obrađivale i distribuirale značajne količine podataka. Inženjerima koji rade s NoSQL također se svidjela fleksibilna shema podataka (ili njezin potpuni izostanak), pa su brze promjene u ažuriranim aplikacijama bile moguće.
Ključne značajke NoSQL:
- Veoma fleksibilan način pohrane podataka
- Horizontalno skaliranje do klastera
- Moguća konzistentnost u trajnosti / distribuciji
- Dokumenti koji se identificiraju pomoću jedinstvenih ključeva
Detaljna usporedba
MySQL zahtijeva određenu i strukturiranu shemu.
NoSQL omogućuje pohranu bilo kakvih podataka u "dokumentu".
MySQL podržava ogromnu zajednicu.
NoSQL ima malu i brzo rastuću zajednicu.
NoSQL se odlikuje jednostavnošću skaliranja.
MySQL zahtijeva veću upravljivost.
MySQL koristi SQL, koji se primjenjuje u mnogim vrstama baza podataka.
NoSQL je baza podataka temeljena na dizajnu s popularnim implementacijama.
MySQL koristi standardni jezik upita (SQL).
NoSQL ne koristi standardni jezik upita.
MySQL ima mnogo odličnih alatki za izvještavanje.
U NoSQL postoji nekoliko alatki za izvještavanje koje je teško standardizirati.
MySQL može izazvati probleme s performansama za velike podatke.
NoSQL osigurava izvrsne performanse za velike podatke.
Misli 8base
U kompaniji , u kojoj radim, osiguravamo radno područje svakog projekta relacijskom bazom podataka Aurora MySQL, koja se hosta na AWS-u. Iako je NoSQL logičan izbor kada zahtjevi vaše aplikacije zahtijevaju visoke performanse i skalabilnost, smatramo da stroga dosljednost podataka osigurana RDBMS-om je nužna pri izradi SaaS aplikacija i drugog poslovnog softvera.
Za startupove i programere koji razvijaju poslovne aplikacije koje trebaju izvještavanje, transakcijsku cjelovitost i jasno definirane modele podataka, ulaganje u rad s relacijskim bazama podataka je, po našem mišljenju, pravi izbor.
Saznajte više o razvoju s Aurorom, Serverless i GraphQL putem 8base.com .
Izvor: habr.com
