
Az egyik legfontosabb döntés, amit egy fejlesztő meghoz, az az, hogy melyik adatbázist használja. Évek óta az opciók különböző relációs adatbázisok változataira korlátozódnak, amelyek támogatják a strukturált lekérdező nyelvet (SQL). Ezek közé tartozik az MS SQL Server, az Oracle, a MySQL, a PostgreSQL, a DB2 és még sok más.
Az elmúlt 15 évben sok új adatbázis jelent meg a No-SQL megközelítés keretein belül. Ezek közé tartoznak a kulcs-érték tárolók, mint a Redis és az Amazon DynamoDB, a széles oszlopú adatbázisok, mint a Cassandra és az HBase, a dokumentumtárolók, mint a MongoDB és a Couchbase, valamint a gráfadatbázisok és kereső rendszerek, mint az Elasticsearch és a Solr.
Ebben a cikkben megpróbáljuk megérteni az SQL-t és a NoSQL-t anélkül, hogy túl mélyen belemennénk a funkcionalitásukba.
Ezen kívül egy kicsit szórakozunk a folyamat során.
Elmagyarázzuk a nagymamának az SQL-t
Nagymama, képzeld el, hogy nem én vagyok az egyetlen unokád. Ehelyett anya és apa úgy szerették egymást, mint a nyulak, 100 gyerekük lett, majd örökbe fogadtak még 50-et.
Tehát szeretsz minket mind, és nem akarsz elfelejteni egyet sem a neveink közül, a születésnapjainkból, a kedvenc fagylalt ízeinkből, a ruhaméreteinkből, a hobbinkból, a házastársaink neveiből, a gyerekeink neveiből és más szuper fontos tényekből. De nézzük a tényeket. 85 éves vagy, és a régi jó memóriád egyszerűen nem képes mindezt kezelni.
Szerencsére én, mint a legokosabb unokád, tudok segíteni. Ezért jövök hozzád, kiveszek néhány papírlapot, és kérek tőled, hogy süss süteményt, mielőtt elkezdjük.
Az egyik papírlapon készítünk egy listát, amit "Unokák"-nak hívunk. Minden unoka fel van tüntetve valamilyen lényeges információval róla, beleértve egy egyedi számot, amely most azt fogja jelölni, hogy ő milyen unoka . Továbbá, a szervezetesség kedvéért felírjuk a nevű attribútumokat a lista tetejére, hogy mindig tudjuk, milyen információkat tartalmaz ez a lista.
id
name
születésnap
utolsó látogatás
ruhaméret
kedvenc fagylalt
örökbefogadott
1
Jimmy
09-22-1992
09-01-2019
L
Mentás csokoládé
hamis
2
Jessica
07-21-1992
02-22-2018
M
Rocky road
igaz
…folytassuk a listát!
Unokák listája
Egy idő után mindent átlátsz, és majdnem befejeztük a listát! De te megfordulsz hozzám, és azt mondod: „Elfelejtettük hozzáadni a helyet a házastársaknak, a hobbiknak, az unokáknak!” De nem, nem felejtettük el! Ez jön a következőre, és új papírlapot igényel.
Így hát előhúzok egy újabb papírlapot, és ezen nevezzük el a listát Párok. Ismét hozzáadjuk a számunkra fontos attribútumokat a lista elejéhez, és elkezdjük hozzáadni őket a sorokban.
id
grandchild_id
name
születésnap
1
2
John
06-01-1988
2
9
Fernanda
03-05-1985
…több házaspár!
Házaspárok listája
Ebben a szakaszban elmagyarázom a nagymamának, hogy ha tudni akarja, ki kivel házas, csak annyit kell tennie, hogy párosítja id a listában unokák a grandchild_id a házaspárok listájában.
Néhány süti után szükségem van egy kis szundira. "Folytathatod, nagymama?" Elmegyek aludni.
Több órával később jövök vissza. De jó vagy, nagymama! Minden szupernek tűnik, kivéve a listát hobbi. A listában körülbelül 1000 hobbik szerepelnek. Többnyire megismétlődnek; mi történt?
grandchild_id
hobby
1
biciklizés
4
biciklizés
3
biciklizés
7
fut
11
biciklizés
…folytassuk!
Sajnálom, teljesen elfelejtettem mondani! Egyetlen lista használatával csak az lehet nyomon követni hobbi. Aztán egy másik listán nyomon kell követnünk unokák, akik ezzel foglalkoznak hobbi. Ezt fogjuk " Közös lista"-nak hívni. Látva, hogy nem tetszik neked, kezdek aggódni, és visszatérek a lista üzemmódba.
id
hobby
1
biciklizés
2
fut
3
úszás
…több hobbi!
Hobbi lista
Amint megvan a hobbi listánk, létrehozzuk a második listánkat, és elnevezzük "Unokák hobbija».
grandchild_id
hobby_id
4
1
3
1
7
2
…több!
Közös lista unokák hobbija
Mindez a munka után a nagymamának most van egy szuper emlékezőrendszere, hogy nyomon követhesse a hihetetlenül nagy családját. Aztán — hogy tovább tartsanak engem — felteszi a varázskérdést: "Hol tanultad mindezt megcsinálni?"
Relációs adatbázisok
A relációs adatbázis egy formálisan leírt táblázatok halmaza (a példánkban ezek lapok), amelyekhez hozzáférhetünk, adatok vagy különböző módokon összegyűjthetjük őket anélkül, hogy átszerveznénk a táblázatokat adatbázis. Számos különböző típusú relációs adatbázis létezik, de sajnos a papírlapon lévő lista nem tartozik ezek közé.
A legnépszerűbb relációs adatbázisok megkülönböztető jellemzője az SQL (Structured Query Language) lekérdező nyelv. Ennek köszönhetően, ha a nagymama a számítógépre költözteti a memorizáló rendszerét, gyorsan választ kaphat olyan kérdésekre, mint: "Ki nem látogatott el hozzám tavaly, házas és nincsenek hobbijaik?"
Az egyik leghíresebb SQL adatbázis-kezelő rendszer a nyílt forráskódú MySQL. Elsősorban relációs adatbázis-kezelő rendszerként (RDBMS) valósul meg webalapú szoftveralkalmazásokhoz.
A MySQL néhány kulcsfontosságú jellemzője:
- Eléggé ismert, széles körben használt és alaposan tesztelt.
- Sok képzett fejlesztő rendelkezik SQL és relációs adatbázisokkal kapcsolatos tapasztalattal.
- Az adatok különböző táblázatokban tárolódnak, ami megkönnyíti a kapcsolat létrehozását elsődleges és külső kulcsok (azonosítók) használatával.
- Könnyen használható és hatékony, így ideális nagy és kis vállalatok számára is.
- A forráskód a GNU General Public License feltételei szerint érhető el.
Most felejtsd el MINDEN.
Elmagyarázzuk a nagymamának a NoSQL-t
Nagymama, hatalmas családunk van. 150 unokánk van! Sokan közülük házasok, gyerekeik vannak, hobbikkal foglalkoznak és így tovább. A te korodban lehetetlen mindenkire emlékezni közöttünk. Amire szükséged van, az egy emlékezetkezelő rendszer!
Szerencsére én, nem akár szeretném, hogy elfelejtsd a születésnapomat és a kedvenc fagylaltízemet, tudok segíteni. Ezért rohanok a legközelebbi boltba, veszek egy noteszt és visszamegyek hozzád.
Az első lépés, amit teszek, az, hogy „Unokák” feliratot nagy, vastag betűkkel írok a notesz borítójára. Aztán átlapozok az első oldalra és elkezdem leírni mindent, amit tudnod kell rólam. Néhány perc múlva az oldal körülbelül így néz ki.
{
"_id":"dkdigiye82gd87gd99dg87gd",
"name":"Cody",
"birthday":"09-12-2006",
"last_visit":"09-02-2019",
"clothing_size":"XL",
"favorite_ice_cream":"Fudge caramel",
"adopted":false,
"hobbies":[
"videójátékok",
"számítógépek",
"főzés"
],
"spouse":null,
"kids":[
],
"favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
"misc_notes":"Születésnapján inkább fagylalt tortát kér, mint csokoládétortát!"
} Én: "Úgy tűnik, minden készen áll!"
Nagymama: "Várj, mi van a többi unokával?"
Én: "Igen, igaz. Akkor mindenkinek szenteljünk egy oldalt."
Nagymama: "De nekem is le kell írnom ugyanezeket az információkat mindenkiről, mint neked?"
Én: "Nem, csak ha akarod. Hadd mutassam meg."
Miután elvettem a nagymamától a tollat, átlapozok az oldalra és gyorsan felírom a legkevésbé kedvelt unokatestvérem adatait.
{
"_id":"dh97dhs9b39397ss001",
"name":"Tanner",
"birthday":"09-12-2008",
"clothing_size":"S",
"friend_count":0,
"favorite_picture":null,
"remember":"Ugyanazon a napon született, mint Cody, de nem annyira fontos"
}Mindig, amikor a nagymamának emlékeznie kell valamire az egyik unokáról, csak át kell lapoznia a notesz megfelelő oldalára. Minden információ róluk ott fog tárolódni, az ő oldalukon, amit gyorsan megváltoztathat és frissíthet.
Amikor minden már kész, ő felteszi a varázslatos kérdést: „Hol tanultad meg mindezt csinálni?”
NoSQL adatbázisok
Sokféle NoSQL adatbázis („nem csak SQL”). Példáinkban bemutattuk a dokumentum alapú adatbázist. A NoSQL adatbázisok olyan módon modellezik az adatokat, amelyek kizárják a relációs adatbázisokban használt táblázatos kapcsolatokat. Ezek az adatbázisok a 2000-es évek elején váltak népszerűvé azon cégek körében, amelyeknek felhőalapú adatbázis klaszterezésre volt szükségük egyértelmű skálázási követelményeik miatt (például Facebook). Az ilyen alkalmazások esetében az adatkonzisztencia sokkal kevésbé volt fontos, mint a teljesítmény és a skálázhatóság.
A NoSQL adatbázisokat eleinte gyakran használják adatkezelési niche feladatokra. Főleg webes és felhőes alkalmazások esetén a NoSQL adatbázisok jelentős mennyiségű adatot kezeltek és terjesztettek. A NoSQL-lal dolgozó mérnökök szintén kedvelték az adatmodellek rugalmas sémáját (vagy annak teljes hiányát), így gyors változtatások válhattak lehetővé a frissített alkalmazásokban.
A NoSQL kulcsfontosságú jellemzői:
- Nagyon rugalmas adatkezelési mód
- Horizontális skálázás klaszterekhez
- Lehetséges következetesség a tartósság / terjesztés szempontjából
- Dokumentumok, amelyeket egyedi kulcsok segítségével azonosítanak
Részletes összehasonlítás
A MySQL meghatározott és strukturált sémát igényel.
A NoSQL lehetővé teszi bármilyen adat tárolását egy „dokumentumban”.
A MySQL széles közösséget támogat.
A NoSQL-nak kicsi, de gyorsan növekvő közössége van.
A NoSQL a skálázás egyszerűségéről ismert.
A MySQL több irányíthatóságot igényel.
A MySQL SQL-t használ, amely sokféle adatbázis típusban elterjedt.
A NoSQL design alapú adatbázis népszerű megvalósításokkal.
A MySQL szabványos lekérdező nyelvet (SQL) alkalmaz.
A NoSQL nem használ szabványos lekérdező nyelvet.
A MySQL sok remek jelentéskészítő eszközt kínál.
A NoSQL-nak kevés jelentéskészítő eszköze van, amelyeket nehéz standardizálni.
A MySQL teljesítményproblémákat okozhat nagy adatoknál.
A NoSQL figyelemre méltó teljesítményt nyújt nagy adatok esetén.
8base gondolatok
A cégnél , ahol dolgozom, biztosítjuk minden projekt munkaterületét az Aurora MySQL relációs adatbázissal, amely az AWS-en van hosztolva. Bár a NoSQL logikus választás, amikor az alkalmazás követelményei magas teljesítményt és skálázhatóságot igényelnek, úgy véljük, hogy az adatállapot szigorú következetessége, amelyet az adatbázis-kezelő rendszerek biztosítanak, elengedhetetlen a SaaS-alkalmazások és más üzleti szoftverek fejlesztésénél.
A startupok és fejlesztők számára, akik olyan üzleti alkalmazásokat fejlesztenek, amelyeknek jelentéskészítésre, tranzakciós integritásra és világosan meghatározott adatmodellekre van szükségük, úgy véljük, hogy a relációs adatbázisok használatába való befektetés a helyes választás.
Tudjon meg többet az Aurora, Serverless és GraphQL fejlesztéséről a 8base.com weboldalon. .
Forrás: habr.com
