Výukový program NoSQL: Typy NoSQL databází a příklad

⚡ Chytré shrnutí

NoSQL je nerelační systém pro správu databází, který nevyžaduje fixní schéma, vyhýbá se spojením a snadno se škáluje. Tento zdroj vysvětluje, co je NoSQL, proč existuje, jeho historii, funkce, čtyři typy databází, teorém CAP, konečnou konzistenci a jeho výhody a nevýhody.

  • ???? Definice: Nerelační úložiště bez schémat vytvořené pro obrovské distribuované datové sady.
  • 📈 Proč: Horizontální škálování napříč mnoha hostiteli zpracovává velká data rychleji než horizontální škálování.
  • 🗂️ Čtyři typy: Páry klíč-hodnota, sloupcové, grafické a dokumentové.
  • 🇧🇷 Věta CAP: Distribuované úložiště může zaručit pouze dvě funkce: konzistenci, dostupnost a toleranci oddílů.
  • 🔁 BÁZE: V zásadě dostupné, měkký stav, případná konzistence napříč replikami.

Výukový program NoSQL

Co je NoSQL?

NoSQL databáze je nerelační systém pro správu dat, který nevyžaduje fixní schéma. Vyhýbá se spojením a je snadno škálovatelný. Hlavním účelem použití NoSQL databáze jsou distribuovaná datová úložiště s obrovskými potřebami ukládání dat. NoSQL se používá pro velká data a webové aplikace v reálném čase. Například společnosti jako Twitter, Facebook a… Google shromažďují terabajty uživatelských dat každý den.

NoSQL databáze znamená „Not Only SQL“ nebo „Not SQL“. Ačkoli by lepší termín byl „NoREL“, NoSQL se uchytil. Koncept NoSQL představil Carl Strozzi v roce 1998.

Tradiční RDBMS používá k ukládání a načítání dat pro další analýzy syntaxi SQL. NoSQL databázový systém místo toho zahrnuje širokou škálu databázových technologií, které mohou ukládat strukturovaná, polostrukturovaná, nestrukturovaná a polymorfní data. Pojďme si porozumět NoSQL pomocí diagramu v tomto tutoriálu o NoSQL databázích:

NoSQL databáze

Proč NoSQL?

Koncept NoSQL databází se stal populárním u internetových gigantů, jako je Google, Facebook, Amazonatd., kteří se zabývají obrovskými objemy dat. Při použití RDBMS pro velké objemy dat se doba odezvy systému zpomalí.

Abychom tento problém vyřešili, mohli bychom „rozšířit“ naše systémy upgradem našeho stávajícího hardwaru. Tento proces je drahý.

Alternativou k tomuto problému je rozložit zátěž databáze na více hostitelů, kdykoli se zátěž zvýší. Tato metoda je známá jako „škálování na více serverů“.

NoSQL

NoSQL databáze není relační, takže se lépe škáluje než relační databáze, protože jsou navrženy s ohledem na webové aplikace.

Stručná historie NoSQL databází

  • 1998 – Carlo Strozzi používá termín NoSQL pro svou lehkou relační databázi s otevřeným zdrojovým kódem.
  • 2000 – Databáze grafů Neo4j je spuštěn.
  • 2004 - Google BigTable je spuštěn.
  • 2005 - CouchDB je vypuštěn.
  • 2007 – Výzkumná práce na téma Amazon Dynamo je propuštěno.
  • 2008 – Facebook zpřístupňuje zdrojové kódy Cassandra projekt.
  • 2009 – Termín NoSQL byl znovu zaveden.

Vlastnosti NoSQL

Nerelační

  • NoSQL databáze nikdy nedodržují relační model.
  • Nikdy neposkytujte tabulky s pevnými záznamy s pevnými sloupci.
  • Pracujte se samostatnými agregáty nebo objekty BLOB.
  • Nevyžadují objektově-relační mapuping a normalizace dat.
  • Žádné složité funkce jako dotazovací jazyky, plánovače dotazů, spojení referenční integrity nebo ACID.

Bez schématu

  • NoSQL databáze jsou buď bez schémat, nebo mají uvolněná schémata.
  • Nevyžadují žádnou definici schématu dat.
  • Nabídněte heterogenní struktury dat ve stejné doméně.
Vlastnosti NoSQL
NoSQL je bez schémat

Jednoduché API

  • Nabízí snadno použitelná rozhraní pro ukládání a dotazování dat.
  • API umožňují manipulaci s daty a metody výběru na nízké úrovni.
  • Textové protokoly, nejčastěji používané s HTTP REST s JSON.
  • Většinou se používá nestandardní dotazovací jazyk NoSQL.
  • Webové databáze běžící jako internetové služby.

Distribuováno

  • Více NoSQL databází lze spouštět distribuovaným způsobem.
  • Nabízí automatické škálování a funkce failoveru.
  • Koncept ACID může být často obětován ve prospěch škálovatelnosti a propustnosti.
  • Většinou žádná synchronní replikace mezi distribuovanými uzly; asynchronní replikace mezi více mastery, peer-to-peer, replikace HDFS.
  • Pouze zajištění konečné konzistence.
  • Architektura bez sdílení. To umožňuje menší koordinaci a vyšší distribuci.
Vlastnosti NoSQL

NoSQL není sdílené nic.

Typy NoSQL databází

NoSQL databáze se dělí hlavně do čtyř typů: dvojice klíč-hodnota, sloupcové, grafové a dokumentové. Každá kategorie má své jedinečné atributy a omezení. Žádná z výše uvedených databází nedokáže lépe řešit všechny problémy. Uživatelé by si měli vybrat databázi na základě svých potřeb.

Typy NoSQL databází:

  • Na základě páru klíč–hodnota
  • Sloupcově orientovaný graf
  • Na základě grafů
  • Orientace na dokumenty

Typy NoSQL databází

Na základě páru klíčových hodnot

Data jsou uložena v párech klíč/hodnota. Systém je navržen tak, aby zvládal velké množství dat a vysokou zátěž. Databáze úložiště párů klíč-hodnota ukládají data jako hašovací tabulku, kde je každý klíč jedinečný a hodnota může být JSON, BLOB (Binary Large Objects), řetězec atd.

Například pár klíč-hodnota může obsahovat klíč jako „Webová stránka“ spojený s hodnotou jako „Guru99. "

Na základě páru klíčových hodnot

Jedná se o jeden z nejzákladnějších příkladů NoSQL databází. Tento typ NoSQL databáze se používá jako kolekce, slovníky, asociativní pole atd. Úložiště klíč-hodnota pomáhají vývojářům ukládat data bez schématu. Fungují nejlépe pro obchody.ping obsah košíku.

Redis, Dynamo a Riak jsou některé příklady NoSQL databází typu klíč-hodnota. Všechny jsou založeny na AmazonPapír Dynamo.

Na základě sloupců

Sloupcově orientované databáze pracují se sloupci a jsou založeny na článku BigTable od GoogleKaždý sloupec je zpracováván samostatně. Hodnoty databází s jedním sloupcem jsou uloženy souvisle.

Databáze NoSQL založená na sloupcích

Sloupcová databáze NoSQL

Poskytují vysoký výkon při agregačních dotazech, jako je SUM, COUNT, AVG, MIN atd., protože data jsou snadno dostupná ve sloupci. Sloupcové NoSQL databáze se široce používají ke správě datových skladů, business intelligence, CRM a katalogy knihovních lístků.

HBase, Cassandraa Hypertable jsou příklady NoSQL dotazů pro databáze založené na sloupcích.

Orientace na dokumenty

Dokumentově orientovaná NoSQL databáze ukládá a načítá data jako pár klíč-hodnota, ale část s hodnotou je uložena jako dokument. Dokument je uložen ve formátu JSON nebo XML. Hodnota je databázi srozumitelná a lze na ni dotazovat.

Relační vs. Dokument

Relační vs. Dokument

V tomto diagramu vlevo vidíte řádky a sloupce a vpravo máme databázi dokumentů, která má podobnou strukturu jako JSON. V relační databázi musíte vědět, jaké sloupce máte atd. U databáze dokumentů však máte úložiště dat, jako je objekt JSON. Nemusíte ho definovat, což ho činí flexibilním.

Tento typ dokumentu se nejčastěji používá pro systémy CMS, blogovací platformy, analýzy v reálném čase a aplikace elektronického obchodování. Neměl by se používat pro složité transakce, které vyžadují více operací nebo dotazů na různé agregované struktury.

Amazon SimpleDB, CouchDB, MongoDB, Riak a Lotus Notes jsou oblíbené programy zaměřené na dokumenty DBMS systémy.

Na základě grafu

Databáze grafového typu ukládá entity i vztahy mezi těmito entitami. Entita je uložena jako uzel se vztahem jako hranami. Hrana udává vztah mezi uzly. Každý uzel a hrana má jedinečný identifikátor.

Na základě grafu

Ve srovnání s relační databází, kde jsou tabulky volně propojené, je grafová databáze multirelační povahy. Procházení relací je rychlé, protože jsou již zachyceny v databázi a není třeba je přepočítávat. Grafové databáze se většinou používají pro sociální sítě, logistiku a prostorová data.

Neo4J, nekonečný graf, OrientDBa FlockDB jsou některé populární databáze založené na grafech.

Nástroje Query Mechanism pro NoSQL

Nejběžnějším mechanismem načítání dat je načítání hodnoty na základě jejího klíče/ID pomocí prostředku GET založené na technologii REST.

Databáze úložišť dokumentů nabízejí složitější dotazy, protože chápou hodnotu v páru klíč-hodnota. Například CouchDB umožňuje definovat pohledy pomocí MapReduce.

Co je teorém CAP?

Věta CAP, nazývaná také Brewerova věta, tvrdí, že je nemožné, aby distribuované úložiště dat nabízelo více než dvě ze tří záruk:

  1. Konzistence
  2. dostupnost
  3. Tolerance oddílů

Konzistence: Data by měla zůstat konzistentní i po provedení operace. To znamená, že jakmile jsou data zapsána, jakýkoli budoucí požadavek na čtení by měl tato data obsahovat. Například po aktualizaci stavu objednávky by všichni klienti měli vidět stejná data.

Dostupnost: Databáze by měla být vždy dostupná a reagovat. Neměl by mít žádné prostoje.

Tolerance oddílů: Tolerance oddílů znamená, že systém by měl nadále fungovat, i když komunikace mezi servery není stabilní. Servery mohou být například rozděleny do několika skupin, které spolu nemusí komunikovat. Zde platí, že pokud je část databáze nedostupná, ostatní části nejsou vždy ovlivněny.

Případná konzistence

Termín „eventuální konzistence“ znamená mít kopie dat na více počítačích pro dosažení vysoké dostupnosti a škálovatelnosti. Změny provedené v jakékoli datové položce na jednom počítači se tedy musí šířit do dalších replik.

Replikace dat nemusí být okamžitá, protože některé kopie se aktualizují okamžitě, zatímco jiné v pravý čas. Tyto kopie mohou být vzájemně nekonzistentní, ale časem se stanou konzistentními. Odtud název eventuální konzistence.

BÁZE: Basticky Ak dispozici, Sčasto stát, Eventivní konzistence

  • V zásadě dostupné znamená, že databáze je dle teorému CAP k dispozici neustále.
  • Měkký stav znamená, že i bez vstupu se stav systému může změnit.
  • Eventuální konzistence znamená, že systém se časem stane konzistentním.

Případná konzistence

Výhody NoSQL

  • Lze použít jako primární nebo analytický zdroj dat.
  • Schopnost práce s velkými daty.
  • Žádný jediný bod selhání.
  • Snadná replikace.
  • Není potřeba samostatná vrstva mezipaměti.
  • Poskytuje rychlý výkon a horizontální škálovatelnost.
  • Dokáže zpracovat strukturovaná, polostrukturovaná i nestrukturovaná data se stejným účinkem.
  • Objektově orientované programování, které je snadno použitelné a flexibilní.
  • NoSQL databáze nepotřebují dedikovaný vysoce výkonný server.
  • Podpora klíčových vývojářských jazyků a platforem.
  • Jednodušší implementace než použití RDBMS.
  • Může sloužit jako primární zdroj dat pro online aplikace.
  • Zpracovává velká data, která řeší rychlost, rozmanitost, objem a složitost dat.
  • Vyniká v distribuovaných databázích a provozu s více datovými centry.
  • Eliminuje potřebu specifické vrstvy mezipaměti pro ukládání dat.
  • Nabízí flexibilní schéma, které lze snadno změnit bez prostojů nebo přerušení služby.

Nevýhody NoSQL

  • Žádná standardizační pravidla.
  • Omezené možnosti dotazování.
  • RDBMS Databáze a nástroje jsou poměrně vyspělé.
  • Nenabízí žádné tradiční databázové funkce, jako je konzistence při provádění více transakcí současně.
  • S rostoucím objemem dat je obtížné udržovat jedinečné hodnoty, protože klíče se stávají obtížnými.
  • S relačními daty to nefunguje tak dobře.
  • Pro nové vývojáře je křivka učení náročná.
  • Možnosti s otevřeným zdrojovým kódem nejsou pro podniky tak populární.

Nejčastější dotazy

NoSQL databáze zpracovávají rozsáhlá, rozmanitá a rychle se měnící data, která produkuje umělá inteligence a big data. Jejich flexibilní schéma a horizontální škálování umožňují ukládání trénovacích dat, protokolů a funkcí v reálném čase napříč distribuovanými clustery.

Ano. Několik NoSQL databází, například MongoDB a Elasticsearch nyní podporují vektorová pole a vyhledávání podobnosti. To umožňuje aplikacím umělé inteligence ukládat vnoření vedle dokumentů pro sémantické vyhledávání a doporučovací funkce.

Databáze SQL jsou relační s pevným schématem a používají tabulky, řádky a spojení. Databáze NoSQL jsou nerelační, používají flexibilní schémata a horizontálně se škálují, ukládají data jako dokumenty, páry klíč-hodnota, sloupce nebo grafy.

Vyhněte se NoSQL, pokud potřebujete silné ACID transakce, komplexní spojení nebo striktní integritu dat, například v bankovnictví. Vyspělé relační databáze v těchto případech lépe zvládají konzistenci více záznamů a standardizované dotazy.

Shrňte tento příspěvek takto: