
Jedno z nejdůležitějších rozhodnutí, které vývojář učiní, je, kterou databázi použít. Po mnoho let byly možnosti omezeny na různé varianty relačních databází, které podporovaly jazyk SQL (Structured Query Language). Patří sem MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 a mnoho dalších.
Za posledních 15 let se na trhu objevilo mnoho nových databází v rámci přístupu No-SQL. Patří sem úložiště klíč-hodnota, jako jsou Redis a Amazon DynamoDB, široké sloupcové databáze, jako jsou Cassandra a HBase, úložiště dokumentů, jako jsou MongoDB a Couchbase, a také grafové databáze a vyhledávací systémy, jako jsou Elasticsearch a Solr.
V tomto článku se pokusíme objasnit SQL a NoSQL, aniž bychom se zabývali jejich funkcionalitou.
Kromě toho si při tom trochu užijeme.
Vysvětlujeme babičce SQL
Babičko, představ si, že nejsem tvůj jediný vnuk. Místo toho se máma a táta milovali jako králíci, měli 100 dětí, a pak adoptovali dalších 50.
Takže miluješ nás všechny a nechceš zapomenout na žádné z našich jmen, narozenin, oblíbených příchutí zmrzliny, velikostí oblečení, koníčků, jmen manželů, jmen potomků a dalších super důležitých faktů. Ale podívejme se pravdě do očí. Je ti 85 let a stará dobrá paměť prostě nezvládá.
Naštěstí já, nejchytřejší z tvých vnuků, mohu pomoci. Takže přicházím k tobě domů, vytahuji několik listů papíru a prosím tě, abys upekla sušenky dřív, než začneme.
Na jednom listě papíru vytvoříme seznam nazvaný „Vnuci“. Každý vnuk je zapsán s nějakými podstatnými informacemi o něm, včetně unikátního čísla, které nyní znamená, jakým vnukem je. Kromě toho, pro organizaci, píšeme pojmenované atributy na vrchní část seznamu, abychom vždy věděli, jaké informace tento seznam obsahuje.
id
name
datum narození
poslední návštěva
velikost oblečení
oblíbená zmrzlina
adoptovaný
1
Jimmy
09-22-1992
09-01-2019
L
Mátová čokoláda
false
2
Jessica
07-21-1992
02-22-2018
M
Rocky road
true
…pokračujeme v seznamu!
Seznam vnuků
Po chvíli se ve všem zorientuješ a jsme skoro hotovi se seznamem! Ale otočíš se ke mně a říkáš: „Zapomněli jsme přidat místo pro manžele, koníčky, vnuky!“ Ale ne, nezapomněli jsme! To následně potřebuje nový list papíru.
Takže vytahuji další list papíru a na něm nazveme seznam Páry. Znovu přidáváme atributy, které pro nás mají význam, na začátek seznamu a začneme je přidávat do řádků.
id
grandchild_id
name
datum narození
1
2
John
06-01-1988
2
9
Fernanda
03-05-1985
…více párů!
Seznam párů
V této fázi vysvětluji babičce, že pokud chce vědět, kdo je s kým ženatý, stačí pouze porovnat id v seznamu vnuků s grandchild_id v seznamu párů.
Po pár desítkách sušenek si potřebuji zdřímnout. „Můžeš pokračovat, babičko?“ Odcházím si zdřímnout.
Vrátím se za pár hodin. A ty jsi skvělá, babičko! Všechno vypadá skvěle, kromě seznamu koníčků. V seznamu je asi 1000 koníčků. Většina se opakuje; co se stalo?
grandchild_id
hobby
1
cyklistika
4
cyklistika
3
cyklistika
7
běžící
11
cyklistika
…pokračujeme!
Omlouvám se, úplně jsem zapomněl říct! Použitím jednoho seznamu můžeme sledovat pouze koníčků. Poté v jiném seznamu musíme sledovat vnuků, kteří se tím zabývají koníčků. Budeme to nazývat „Hlavní seznam“. Když vidím, že se ti to nelíbí, začínám mít obavy a vracím se do režimu seznamu.
id
hobby
1
cyklistika
2
běžící
3
plavání
…více koníčků!
Seznam koníčků
Jakmile máme náš seznam koníčků, vytvoříme náš druhý seznam a nazveme ho „Koníčky vnuků».
grandchild_id
hobby_id
4
1
3
1
7
2
…více!
Hlavní seznam vnuků koníčků
Po této práci má babička teď skvělý systém pamatování pro sledování celé její ohromně velké rodiny. A pak – aby mě zdržela déle – se ptá na kouzelnou otázku: „Kde jsi se to všechno naučil?“
Relační databáze
Relationální databáze je soubor formálně popsaných tabulek (v našem příkladu to jsou listy), ke kterým lze přistupovat informací nebo je kombinovat různými způsoby bez nutnosti reorganizace tabulek databáze. Existuje mnoho různých typů relačních databází, ale bohužel seznam na papíře není jednou z nich.
Charakteristickým rysem nejpopulárnějších relačních databází je jazyk dotazů SQL (Structured Query Language). Díky němu, pokud babička převede svůj systém pamatování na počítač, dokáže rychle získat odpověď na otázky jako: „Kdo mě v minulém roce nenavštěvoval, je ženatý a nemá žádné koníčky?“
Jedním z nejpopulárnějších systémů řízení databází SQL je MySQL s otevřeným zdrojovým kódem. Primárně funguje jako systém řízení relačních databází (RDBMS) pro softwarové aplikace na bázi webových technologií.
Některé klíčové vlastnosti MySQL:
- Je poměrně známá, široce používaná a důkladně testovaná.
- Existuje mnoho kvalifikovaných vývojářů, kteří mají zkušenosti se SQL a relačními databázemi.
- Data jsou uložena v různých tabulkách, což usnadňuje vztahování pomocí primárních a cizích klíčů (identifikátorů).
- Je snadno použitelná a efektivní, což ji činí ideální pro velké i malé podniky.
- Zdrojový kód je dostupný pod podmínkami GNU General Public License.
Teď zapomeň VŠECHNO.
Vysvětlení NoSQL babičce
Babičko, máme ohromnou rodinu. Máme 150 vnuků! Mnozí z nich jsou ženatí, mají děti, mají různá hobby a podobně. V tvém věku není možné si pamatovat vše o všech nás. Co opravdu potřebuješ, je systém paměti!
Naštěstí já, ne chci, abys zapomněla na mé narozeniny a oblíbenou příchuť zmrzliny, ti mohu pomoci. Proto běžím do nejbližšího obchodu, beru sešit a vracím se k tobě domů.
První krok, který udělám, je napsat 'Vnuci' velkými tučnými písmeny na obálku sešitu. Pak otáčím na první stránku a začínám psát všechno, co si o mně musíš pamatovat. Po několika minutách stránka vypadá přibližně takto.
{
"_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 hry",
"počítače",
"vaření"
],
"spouse":null,
"kids":[
],
"favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
"misc_notes":"Vybírá dort se zmrzlinou k narozeninám místo čokoládového dortu!"
} Já: "Vypadá to, že máme všechno připravené!"
Babičko: "Počkej, co ostatní vnuci?"
Já: "Ano, pravda. Tak každému vyhradíme jednu stránku."
Babičko: "A musím zapisovat všechny ty samé informace pro všechny, jako jsem dělala pro tebe?"
Já: "Ne, jen pokud chceš. Pojď, ukážu ti."
Vzal jsem babičce pero, otočil stránku a rychle jsem zapsal informace o svém nejméně oblíbeném bratranec.
{
"_id":"dh97dhs9b39397ss001",
"name":"Tanner",
"birthday":"09-12-2008",
"clothing_size":"S",
"friend_count":0,
"favorite_picture":null,
"remember":"Narodil se ve stejný den jako Cody, ale není tak důležitý"
}Kdykoli babičce potřebuje něco připomenout o jednom z vnuků, stačí, když přejde na příslušnou stránku v sešitě vnuků. Všechny informace o nich budou uloženy přímo tam, na jejich stránce, kterou může rychle změnit a aktualizovat.
Když je všechno hotové, zeptá se kouzelnou otázku: „Kde jsi se to všechno naučil?“
NoSQL databáze
Existuje mnoho databází NoSQL („nejen SQL“). V našich příkladech jsme ukázali dokumentovou databázi. Databáze NoSQL modelují data způsoby, které vylučují tabulkové vztahy používané v relačních databázích. Tyto databáze se staly populárními na začátku 2000. let mezi společnostmi, které potřebovaly cloudové clustering databází kvůli svým jasným požadavkům na škálovatelnost (například Facebook). U takových aplikací byla konzistence dat mnohem méně důležitá než výkon a škálovatelnost.
Na začátku byly databáze NoSQL často používány pro specializované úkoly správy dat. Hlavně, když šlo o webové a cloudové aplikace, databáze NoSQL zpracovávaly a distribuovaly značné objemy dat. Inženýři pracující s NoSQL také ocenili flexibilní datový model (nebo jeho úplnou nepřítomnost), takže bylo možné provádět rychlé změny v aktualizovaných aplikacích.
Klíčové vlastnosti NoSQL:
- Velmi flexibilní způsob ukládání dat
- Horizontální škálování do clusterů
- Možná sekvence na trvalost / šíření
- Dokumenty, které jsou identifikovány pomocí unikátních klíčů
Podrobná srovnání
MySQL vyžaduje specifickou a strukturovanou schéma.
NoSQL umožňuje ukládat jakákoliv data v „dokumentu“.
MySQL podporuje obrovské komunitu.
NoSQL má malou a rychle rostoucí komunitu.
NoSQL se vyznačuje jednoduchostí škálování.
MySQL vyžaduje větší spravovatelnost.
MySQL používá SQL, které se používá v mnoha typech databází.
NoSQL je databáze založená na návrhu s populárními implementacemi.
MySQL používá standardní jazyk dotazů (SQL).
NoSQL nepoužívá standardní jazyk dotazů.
MySQL má spoustu skvělých nástrojů pro reportování.
V NoSQL je několik nástrojů pro reportování, které se obtížně standardizují.
MySQL může vykazovat problémy s výkonem při zpracovávání velkých dat.
NoSQL poskytuje vynikající výkon při velkých datech.
Myšlenky 8base
Ve společnosti , ve které pracuji, zajišťujeme pracovní prostor každého projektu s relační databází Aurora MySQL, která je hostována na AWS. Ačkoli je NoSQL logickou volbou, když požadavky vaší aplikace vyžadují vysoký výkon a škálovatelnost, věříme, že přísná konzistence dat poskytovaná DBMS je nezbytná při vytváření SaaS aplikací a dalšího softwaru pro podnikání.
Pro startupy a vývojáře, kteří vytvářejí obchodní aplikace vyžadující reporting, integritu transakcí a přesně definované datové modely, investice do práce s relačními databázemi je podle našeho názoru správná volba.
Zjistěte více o vývoji s Aurorou, Serverless a GraphQL na 8base.com .
Zdroj: habr.com
