Jak vysvětlit babičce rozdíl mezi SQL a NoSQL

Jak vysvětlit babičce rozdíl mezi SQL a NoSQL

Jedním z nejdůležitějších rozhodnutí vývojáře je, kterou databázi použít. Po mnoho let byly možnosti omezeny na různé možnosti relačních databází, které podporovaly jazyk SQL (Structured Query Language). Patří mezi ně MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 a mnoho dalších.

Za posledních 15 let vstoupilo na trh mnoho nových databází s přístupem No-SQL. Patří mezi ně obchody klíč-hodnota jako Redis a Amazon DynamoDB, široké sloupcové databáze jako Cassandra a HBase, obchody s dokumenty jako MongoDB a Couchbase a databáze grafů a vyhledávače jako Elasticsearch a Solr.

V tomto článku se pokusíme porozumět SQL a NoSQL, aniž bychom se dostali do jejich funkčnosti.
Navíc si cestou užijeme trochu legrace.

Vysvětlení SQL babičce

Babi, představ si, že nejsem tvůj jediný vnuk. Místo toho se máma s tátou milovali jako králíci, měli 100 dětí, pak dalších 50 adoptovali.

Takže nás všechny milujete a nechcete zapomenout na naše jména, narozeniny, oblíbené příchutě zmrzliny, velikosti oblečení, koníčky, jména manželů, jména potomků a další super důležitá fakta. Nicméně, přiznejme si to. Je ti 85 let a stará dobrá paměť to prostě nezvládne.

Naštěstí, protože jsem nejchytřejší z vašich vnoučat, mohu vám pomoci. Přijdu tedy k vám domů, vyndám pár listů papíru a požádám vás, abyste upekli nějaké sušenky, než začneme.

Na jeden list papíru vytvoříme seznam s názvem „Vnoučata". Každý vnuk zaznamenané s některými významnými informacemi o něm, včetně jedinečného čísla, které nyní ukáže jak vnuk on je. Z důvodu organizace také vypisujeme pojmenované atributy na začátek seznamu, abychom vždy věděli, jaké informace seznam obsahuje.

id
název
narozeniny
poslední návštěva
velikost oblečení
oblíbená zmrzlina
přijatý

1
Paklíč
09-22-1992
09-01-2019
L
Mátová čokoláda
nepravdivý

2
Jessica
07-21-1992
02-22-2018
M
kamenná cesta
pravdivý

…pokračujeme v seznamu!

Seznam vnoučat

Po chvíli všemu rozumíte a seznam máme téměř hotový! Vy se však ke mně otočíte a řeknete: "Zapomněli jsme přidat místo pro manžele, koníčky, vnoučata!" Ale ne, nezapomněli jsme! Toto následuje dále a vyžaduje nový list papíru.

Vytáhnu tedy další list papíru a na něm zavoláme seznam Manželé. Atributy, které jsou pro nás důležité, opět přidáme na začátek seznamu a začneme přidávat po řádcích.

id
vnuk_id
název
narozeniny

1
2
Jan
06-01-1988

2
9
Fernanda
03-05-1985

…více manželů!

Seznam manželů

V této fázi vysvětluji babičce, že pokud chce vědět, kdo je s kým vdaný, tak se musí jen shodovat id V seznamu vnoučata с vnuk_id v seznamu manželů.

Po pár tuctech sušenek si musím zdřímnout. "Můžeš pokračovat, babičko?" Odcházím si zdřímnout.

Vracím se za pár hodin. Jsi skvělá, babičko! Všechno vypadá skvěle, kromě seznamu hobby. Na seznamu je asi 1000 koníčků. Většina z nich se opakuje; Co se stalo?

vnuk_id
hobby

1
cyklistika

4
cyklistika

3
cyklistika

7
běh

11
cyklistika

…pokračujeme!

Pardon, úplně jsem zapomněl říct! Pomocí jednoho seznamu můžete sledovat pouze hobby. Pak v dalším seznamu musíme trasovat vnoučatakteří to dělají hobby. Zavoláme to "Společný seznam". Když vidím, že se vám to nelíbí, mám obavy a vracím se zpět do režimu seznamu.

id
hobby

1
cyklistika

2
běh

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 „Záliby vnoučat".

vnuk_id
hobby_id

4
1

3
1

7
2

…více!

Obecný seznam koníčků vnoučat

Po vší té práci má teď babička skvělý paměťový systém, aby mohla sledovat celou svou úžasně velkou rodinu. A pak - aby mě zdržela déle - položí kouzelnou otázku: "Kde ses to všechno naučil?"

Relační databáze

Relační databáze je sada formálně popsaných tabulek (v našem příkladu jsou to listy), ze kterých můžete přistupovat Podle nebo je sbírejte různými způsoby, aniž byste museli reorganizovat tabulky Databáze. Existuje mnoho různých typů relačních databází, ale bohužel seznam na papíře mezi ně nepatří.

Charakteristickým znakem nejoblíbenějších relačních databází je dotazovací jazyk SQL (Structured Query Language). Díky němu, pokud si babička přenese svůj paměťový systém do počítače, může rychle získat odpovědi na otázky typu: „Kdo mě loni nenavštívil, je ženatý a nemá žádné koníčky?“

Jedním z nejpopulárnějších systémů pro správu databází SQL je open source MySQL. Je implementován především jako systém správy relačních databází (RDBMS) pro webové softwarové aplikace.

Některé klíčové vlastnosti MySQL:

  • Je poměrně dobře známý, široce používaný a široce testovaný.
  • Existuje mnoho šikovných vývojářů, kteří mají zkušenosti s SQL a relačními databázemi.
  • Data jsou uložena v různých tabulkách, což usnadňuje navazování vztahů pomocí primárních a cizích klíčů (identifikátorů).
  • Snadno se používá a je efektivní, takže je ideální pro velké i malé podniky.
  • Zdrojový kód je v souladu s podmínkami GNU General Public License.

Teď zapomeň Všechno.

Vysvětlování NoSQL babičce

Babičko, máme velkou rodinu. Má 150 vnoučat! Mnozí z nich jsou ženatí, mají děti, mají něco rádi a tak dále. Ve vašem věku je nemožné pamatovat si všechno o nás všech. Co potřebujete, je paměťový systém!

Naštěstí já ne Chci, abyste zapomněli na moje narozeniny a oblíbenou příchuť zmrzliny, mohu vám pomoci. Běžím tedy do nejbližšího obchodu, vezmu sešit a vrátím se k vám domů.

První krok, který udělám, je napsat „Vnoučata“ velkými tučnými písmeny na přebal svého sešitu. Pak listuji na první stránku a začnu psát vše, co si o mně potřebujete zapamatovat. O několik minut později stránka vypadá asi 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 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!"
}

Я: "Zdá se, že je vše připraveno!"
Бабушка: "Počkej, co zbytek vnoučat?"
Я: "Ano přesně. Potom každému přidělte jednu stránku.“
Бабушка: "Budu muset zapsat všechny stejné informace pro všechny, jako jsem to udělal pro vás?"
Я: „Ne, jen když chceš. Nech mě ukázat."
Popadnu babiččino pero, převrátím stránku a rychle zapíšu informace o mém nejméně oblíbeném bratranci.

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

Kdykoli si babička potřebuje vzpomenout na něco o některém ze svých vnoučat, stačí jí přejít na správnou stránku v sešitu svých vnoučat. Všechny informace o nich budou uloženy přímo na jejich stránce, kterou může rychle měnit a aktualizovat.

Když je vše hotovo, položí kouzelnou otázku: "Kde ses to všechno naučil?"

NoSQL databáze

Existuje mnoho NoSQL databáze („nejen SQL“). V našich příkladech jsme ukázali databáze dokumentů. Databáze NoSQL modelují data způsoby, které vylučují vztahy mezi tabulkami používané v relačních databázích. Tyto databáze se staly populární na počátku 2000. století u společností, které potřebovaly cloudové shlukování databází kvůli svým explicitním požadavkům na škálování (jako je Facebook). V takových aplikacích byla konzistence dat mnohem méně důležitá než výkon a škálovatelnost.

Zpočátku byly databáze NoSQL často používány pro úkoly správy dat. V zásadě, pokud jde o webové a cloudové aplikace, databáze NoSQL zpracovávaly a distribuovaly značné množství dat. Inženýři NoSQL si také oblíbili flexibilní datové schéma (nebo jeho nedostatek), takže v aplikacích, které byly aktualizovány, byly možné rychlé změny.

Klíčové vlastnosti NoSQL:

  • Velmi flexibilní způsob ukládání dat
  • Horizontální škálování na shluky
  • Možné sekvenování podle perzistence/rozprostření
  • Dokumenty, které jsou identifikovány pomocí jedinečných klíčů

Podrobné srovnání

MySQL vyžaduje definované a strukturované schéma.
NoSQL umožňuje ukládat jakákoli data do „dokumentu“.

MySQL má obrovskou komunitu.
NoSQL má malou a rychle rostoucí komunitu.

NoSQL lze snadno škálovat.
MySQL potřebuje lepší správu.

MySQL používá SQL, který se používá v mnoha typech databází.
NoSQL je návrh založený na databázi s populárními implementacemi.

MySQL používá standardní dotazovací jazyk (SQL).
NoSQL nepoužívá standardní dotazovací jazyk.

MySQL má mnoho skvělých reportovacích nástrojů.
NoSQL má několik nástrojů pro vytváření sestav, které je obtížné standardizovat.

MySQL může zobrazit problémy s výkonem pro velká data.
NoSQL poskytuje vynikající výkon na velkých datech.

Myšlenky 8základ

Společnost 8 základnakde pracuji, poskytujeme pro každý projekt pracovní prostor s relační databází Aurora MySQL hostovanou na AWS. Zatímco NoSQL je logickou volbou, když vaše aplikace vyžaduje vysoký výkon a škálovatelnost, věříme, že silná konzistence dat poskytovaná DBMS je zásadní při vytváření aplikací SaaS a dalšího podnikového softwaru.

Pro začínající firmy a vývojáře vytvářející podnikové aplikace, které vyžadují reporting, transakční integritu a dobře definované datové modely, je podle našeho názoru investice do relačních databází správnou volbou.

Zjistěte více o vývoji s Aurora, Serverless a GraphQL na 8base.com zde.

Zdroj: www.habr.com

Přidat komentář