Principy modelů ukládání dat

Moderní obchodní systémy spravují stále větší objemy heterogenních dat. Tato různorodost znamená, že jediné úložiště dat obvykle není nejlepším řešením. Místo toho je často lepší ukládat různé typy dat v různých úložištích dat, přičemž každý se zaměřuje na konkrétní úlohu nebo vzor použití. Termín vícejazyčná odolnost označuje řešení, které používá kombinaci různých technologií určených pro úložiště. Proto je důležité pochopit hlavní modely úložiště a jejich kompromisy.

Výběr správného úložiště dat odpovídajícího konkrétním požadavkům je klíčovým rozhodnutím při návrhu řešení. U databází SQL i NoSQL existují doslova stovky možností implementace, z nichž můžete vybírat. Úložiště dat se často kategorizují podle způsobu strukturování dat a podporovaných typů operací. Tento článek popisuje některé z nejběžnějších modelů úložiště. Všimněte si, že konkrétní technologie úložiště dat může podporovat více modelů. Například systémy pro správu relačních databází (RDBMS) můžou podporovat i úložiště typu klíč/hodnota nebo úložiště typu graf. Ve skutečnosti existuje obecný trend pro tzv . podporu více modelů , kdy jeden databázový systém podporuje několik modelů. Ale i tak je užitečné porozumět základním principům různých modelů.

Ne všechna úložiště dat v určité kategorii poskytují stejnou sadu funkcí. Většina datových úložišť poskytuje funkce na straně serveru pro dotazování a zpracování dat. Někdy jsou tyto funkce součástí databázového jádra. Jindy jsou funkce úložiště a zpracování dat oddělené a může být k dispozici několik možností, jak provádět zpracování a analýzy. Úložiště dat také podporují různá rozhraní pro programování a správu.

Obecně řečeno byste měli nejprve zvážit, který model úložiště je nejvhodnější pro vaše potřeby. A pak si zvolit konkrétní datové úložiště v rámci této kategorie, a to na základě faktorů, jako je sada funkcí, náklady a snadnost správy.

Poznámka:

Další informace o identifikaci a kontrole požadavků na datové služby pro přechod na cloud najdete v rozhraní Microsoft Cloud Adoption Framework pro Azure. Podobně se také můžete dozvědět o výběru nástrojů a služeb úložiště.

Systémy pro správu relačních databází

V relačních databázích jsou data uspořádána jako řada dvourozměrných tabulek s řádky a sloupci. Většina dodavatelů poskytuje dialekt jazyk SQL (Structured Query Language) (SQL) pro načítání a správu dat. Systém pro správu relačních databází obvykle pro aktualizaci informací implementuje transakčně konzistentní mechanismus, který odpovídá modelu ACID (z anglických slov Atomic, Consistent, Isolated, Durable – atomický, konzistentní, izolovaný, trvanlivý).

Systém pro správu relačních databází obvykle podporuje model „schéma při zápisu“, ve kterém je předem definovaná datová struktura – toto schéma musí použít všechny operace čtení nebo zápisu.

Tento model je velmi užitečný, pokud jsou důležité záruky silné konzistence – kde všechny změny jsou atomické a transakce vždy opouštějí data v konzistentním stavu. RdBMS ale obecně nedokáže horizontálně Data v rdBMS musí být také normalizována, což není vhodné pro každou sadu dat.

Služby Azure

Úloha

  • Záznamy se často vytvářejí a aktualizují.
  • V rámci jedné transakce je třeba provést více operací.
  • Relace se vynucují prostřednictvím omezení databáze.
  • K optimalizaci výkonu dotazů se používají indexy.

Datový typ

  • Data je vysoce normalizovaná.
  • Vyžadují a vynucují se databázová schémata.
  • Mezi datovými entitami v databázi jsou relace N:N.
  • Omezení jsou definována ve schématu a vynucují se pro jakákoli data v databázi.
  • Data vyžadují vysokou integritu. Indexy a relace je třeba udržovat v přesném stavu.
  • Data vyžadují silnou konzistenci. Transakce fungují způsobem, který zajistí, že všechna data budou 100% konzistentní pro všechny uživatele a procesy.
  • Velikost jednotlivých datových položek je malá až střední.

Příklady

  • Řízení zásob
  • Správa objednávek
  • Databáze vytváření sestav
  • Účetní a auditorské činnosti

Úložiště typu klíč/hodnota

Úložiště klíč/hodnota přidruží každou datovou hodnotu k jedinečnému klíči. Většina úložišť typu klíč/hodnota podporuje jenom jednoduché operace dotazování, vložení a odstranění. Pokud je třeba hodnotu změnit (ať už částečně, nebo úplně), aplikace musí přepsat stávající data pro celou hodnotu. Ve většině implementací představuje čtení nebo zápis jedné hodnoty atomickou operaci.

Aplikace může ukládat libovolná data jako sadu hodnot. Aplikace musí poskytnout všechny informace o schématu. Úložiště klíč/hodnota jednoduše načte nebo uloží hodnotu podle klíče.

Diagram of a key-value store

Úložiště klíč/hodnota jsou vysoce optimalizovaná pro aplikace, které provádějí jednoduché vyhledávání, ale jsou méně vhodné, pokud potřebujete dotazovat data napříč různými úložišti klíč/hodnota. Úložiště klíč/hodnota nejsou také optimalizovaná pro dotazování podle hodnoty.

Úložiště typu klíč/hodnota může nabízet extrémní škálovatelnost, protože může snadno distribuovat data mezi několik uzlů na samostatných počítačích.

Služby Azure

Úloha

  • K datům se přistupuje pomocí jednoho klíče, jako je slovník.
  • Nevyžadují se žádná spojení, zámky nebo sjednocení.
  • Nepoužívají se žádné agregační mechanismy.
  • Sekundární indexy se obvykle nepoužívají.

Datový typ

  • Každý klíč je přidružený k jedné hodnotě.
  • Nevynucuje se žádné schéma.
  • Mezi entitami nejsou žádné relace.

Příklady

  • Ukládání dat do mezipaměti
  • Správa relací
  • Správa uživatelských předvoleb a profilů
  • Zobrazování doporučení a reklam v produktech

Databáze dokumentů

Databáze dokumentů ukládá kolekci dokumentů, kde se každý dokument skládá z pojmenovaných polí a dat. Data mohou být jednoduché hodnoty nebo složité prvky, jako jsou seznamy a podřízené kolekce. Dokumenty se načítají jedinečnými klíči.

Dokument obvykle obsahuje data pro jednu entitu, například zákazníka nebo objednávku. Dokument může obsahovat informace, které by byly rozloženy do několika relačních tabulek v RDBMS. Dokumenty nemusí mít stejnou strukturu. Aplikace mohou do dokumentů ukládat různá data s tím, jak se mění požadavky firmy.

Diagram of a document store

Služba Azure

Úloha

  • Běžně probíhají vkládací a aktualizační operace.
  • Žádná neshoda v oblasti objektově-relační impedance. Dokumenty lépe odpovídají objektovým strukturám používaným v aplikačním kódu.
  • Jednotlivé dokumenty se načítají a zapisují jako jeden blok.
  • Data vyžadují index u více polí.

Datový typ

  • Data je možné spravovat denormalizovaným způsobem.
  • Velikost dat v jednotlivém dokumentu dat je poměrně malá.
  • Každý typ dokumentu může používat vlastní schéma.
  • Dokumenty můžou obsahovat volitelná pole.
  • Data v dokumentu jsou částečně strukturovaná, což znamená, že datové typy jednotlivých polí nejsou striktně definované.

Příklady

  • Katalog produktů
  • Správa obsahu
  • Řízení zásob

Grafové databáze

Databázové úložiště typu graf ukládá dva typy informací: uzly a hran. Hrany určují vztahy mezi uzly. Uzly a hrany můžou mít vlastnosti, které poskytují informace o daném uzlu nebo okraji, podobně jako sloupce v tabulce. Hrany můžou mít také směr, který označuje povahu relace.

Grafové databáze můžou efektivně provádět dotazy v síti uzlů a hran a analyzovat vztahy mezi entitami. Následující diagram znázorňuje databázi pracovníků organizace strukturovanou jako graf. Entity jsou zaměstnanci a oddělení a hrany označují vztahy vytváření sestav a oddělení, ve kterých zaměstnanci pracují.

Diagram of a document database

Tato struktura usnadňuje provádění dotazů, jako je například "Najít všechny zaměstnance, kteří přímo nebo nepřímo hlásí Sarah" nebo "Kdo pracuje ve stejném oddělení jako John?". U rozsáhlých grafů s mnoha entitami a relacemi můžete velmi rychle provádět velmi složité analýzy. Mnoho databází grafu poskytuje dotazovací jazyk, který slouží k efektivnímu procházení síťových relací.

Služby Azure

Úloha

  • Složité vztahy mezi datovými položkami zahrnujícími mnoho segmentů směrování mezi souvisejícími datovými položkami
  • Relace mezi datovými položkami jsou dynamické a v čase se mění.
  • Relace mezi objekty mají privilegované postavení a procházení nevyžaduje cizí klíče a spojení.

Datový typ

  • Uzly a relace.
  • Uzly se podobají řádkům tabulky nebo dokumentům JSON.
  • Relace jsou stejně důležité jako uzly a jsou viditelné přímo v dotazovacím jazyce.
  • Složené objekty, třeba osoba s více telefonními čísly, se obvykle rozdělují na samostatné, menší uzly kombinované pomocí relací umožňujících přechody.

Příklady

  • Organizační schémata
  • Sociální grafy
  • Odhalování podvodů
  • Generátory doporučení

Analýza dat

Úložiště pro datové analýzy poskytuje masivně paralelní řešení pro ingestování, ukládání a analýzy dat. Data se distribuují mezi více serverů, aby se maximalizovala škálovatelnost. Velké formáty datových souborů, jako jsou soubory s oddělovačem (CSV), parquet a ORC , se běžně používají při analýze dat. Historická data se obvykle ukládají v úložištích dat, jako je úložiště objektů blob nebo Azure Data Lake Storage Gen2, ke kterým pak přistupuje Azure Synapse, Databricks nebo HDInsight jako externí tabulky. Typický scénář použití dat uložených jako soubory parquet pro výkon je popsaný v článku Použití externích tabulek se službou Synapse SQL.

Služby Azure

Úloha

  • Analýza dat
  • Firemní BI

Datový typ

  • Historická data z více zdrojů
  • Obvykle se denormalizují ve schématu „hvězda“ nebo „sněhová vločka“, které se skládá z tabulky skutečných hodnot a dimenzí.
  • Nová data se obvykle načítají podle plánu.
  • Tabulky dimenzí často zahrnují více historických verzí entity, což se označuje jako pomalu se měnící dimenze.

Příklady

  • Firemní datový sklad

Databáze rodin sloupců

Databáze rodin sloupců organizuje data do řádků a sloupců. Ve své nejjednodušší podobě se databáze rodin sloupců může jevit jako velmi podobná relační databázi, přinejmenším ve své koncepci. Skutečná síla databáze rodin sloupců spočívá v jejím denormalizovaném přístupu ke strukturování řídkých dat.

Můžete si ji představit jako databázi obsahující tabulková data s řádky a sloupci, ale sloupce jsou rozdělené do skupin označovaných jako rodiny sloupců. Každá rodina sloupců obsahuje sadu sloupců, které spolu logicky souvisí a obvykle se načítají nebo zpracovávají jako jednotka. Další data, ke kterým se přistupuje odděleně, můžou být uložená v samostatných rodinách sloupců. V rámci rodiny sloupců je možné dynamicky přidávat nové sloupce a řádky můžou být řídké (to znamená, že řádek nemusí mít hodnotu pro každý sloupec).

Následující diagram ukazuje příklad se dvěma rodinami sloupců: Identity a Contact Info. Data pro jednu entitu mají stejný klíč řádku v každé rodině sloupců. Tato struktura, kde se můžou dynamicky měnit řádky pro libovolný daný objekt v rodině sloupců, je důležitou výhodou metody založené na rodinách sloupců, díky čemuž je tato forma úložiště dat velmi vhodná pro ukládání strukturovaných, ale volatilních dat.

Diagram of a column-family database

Na rozdíl od úložiště klíč/hodnota nebo databáze dokumentů ukládá většina databází rodin sloupců data v pořadí klíčů, nikoli výpočtem hodnoty hash. Mnoho implementací umožňuje vytváření indexů napříč určitými sloupci v rodině sloupců. Indexy umožňují načtení dat podle hodnoty sloupců, nikoli podle klíče řádku.

Operace čtení a zápisu pro řádek jsou obvykle atomické u jedné rodiny sloupců, i když některé implementace poskytují nedělitelnost napříč celým řádkem, což zahrnuje více rodin sloupců.

Služby Azure

Úloha

  • Většina databází rodin sloupců provádí extrémně rychle operace zápisu.
  • Aktualizační a odstraňovací operace se vyskytují jen vzácně.
  • Jsou navrženy tak, aby zajišťovaly vysokou propustnost a přístup s nízkou latencí.
  • Je podporován snadný přístup k dotazům na konkrétní sadu polí v mnohem větším záznamu.
  • Rozsáhlá škálovatelnost

Datový typ

  • Data se ukládají v tabulkách sestávajících z klíčového sloupce a jedné nebo více rodin sloupců.
  • Konkrétní sloupce se můžou na jednotlivých řádcích lišit.
  • K jednotlivým buňkám se přistupuje prostřednictvím příkazů get a put.
  • Více řádků je možné vrátit pomocí příkazu scan.

Příklady

  • Doporučení
  • Přizpůsobení
  • Data ze snímačů
  • Telemetrie
  • Zasílání zpráv
  • Analýzy sociálních médií
  • Webové analýzy
  • Monitorování aktivit
  • Údaje o počasí a jiná data s časovou řadou

Databáze vyhledávacích webů

Databáze vyhledávacího stroje umožňuje aplikacím vyhledávat informace uchovávané v externích úložištích dat. Databáze vyhledávacího webu může indexovat obrovské objemy dat a poskytovat přístup k těmto indexům téměř v reálném čase.

Indexy můžou být multidimenzionální a můžou podporovat hledání na základě volného textu napříč velkými objemy textových dat. Indexování je možné provádět pomocí modelu pull, který je spouštěn samotnou databází, nebo pomocí modelu push iniciovaného externím aplikačním kódem.

Hledání může být přesné nebo přibližné. Přibližné vyhledávání vyhledá dokumenty, které splňují sadu podmínek, a vypočítá, jak jsou blízké. Některé vyhledávací weby také podporují lingvistické analýzy, které dokážou vracet shody na základě synonym, s rozšířením podle tematických okruhů (například přiřazení termínu dogs k termínu pets) a slovního rozboru (vyhledání slov se stejným kořenem).

Služba Azure

Úloha

  • Indexy dat z více zdrojů a služeb
  • Dotazy jsou ad-hoc a můžou být složité.
  • Vyžaduje se fulltextové vyhledávání.
  • Vyžadují se ad hoc samoobslužné dotazy.

Datový typ

  • Částečně strukturovaný nebo nestrukturovaný text
  • Text s odkazem na strukturovaná data

Příklady

  • Katalogy produktů
  • Hledání na webu
  • Protokolování

Databáze s časovou řadou

Data časových řad jsou sada hodnot uspořádaných podle času. Databáze časových řad obvykle shromažďují velké objemy dat v reálném čase z velkého počtu zdrojů. Aktualizace jsou vzácné a odstraňování se často provádí jako hromadná operace. I když jsou záznamy zapisované do databáze s časovou řadou obecně malé, často jde o velký počet záznamů a celková velikost dat může rychle narůst.

Služba Azure

Úloha

  • Záznamy se obvykle připojují postupně v pořadí podle času.
  • Zahlcený podíl operací (95–99 %) je zápis.
  • Aktualizace jsou vzácné.
  • Odstraňování probíhá hromadně a u souvislých bloků nebo záznamů.
  • Data se čtou postupně ve vzestupném nebo sestupném časovém pořadí, často paralelně.

Datový typ

  • Časové razítko se používá jako primární klíč a mechanismus řazení.
  • Značky mohou definovat další informace o typu, původu a dalších informacích o položce.

Příklady

  • Monitorování a telemetrie událostí
  • Data ze senzorů nebo jiná data IoT

Úložiště objektů

Úložiště objektů je optimalizované pro ukládání a načítání rozsáhlých binárních objektů (obrázků, souborů, obrazových a zvukových streamů, velkých aplikačních datových objektů a dokumentů nebo imagí disků virtuálních počítačů). Velké datové soubory se také v tomto modelu často používají, například soubor s oddělovačem (CSV), parquet a ORC. Úložiště objektů můžou spravovat extrémně velké objemy nestrukturovaných dat.

Služba Azure

Úloha

  • Identifikace podle klíče
  • Obsah je obvykle prostředek, jako je oddělovač, obrázek nebo videosoubor.
  • Obsah musí být trvalý a externí pro libovolnou aplikační vrstvu.

Datový typ

  • Velikost dat je velká.
  • Hodnota je skrytá.

Příklady

  • Obrázky, videa, dokumenty Office, soubory PDF
  • Statické HTML, JSON, CSS
  • Soubory protokolů a auditování
  • Zálohování databází

Sdílené soubory

Nejúčinnějším způsobem ukládání a načítání informací může být někdy použití jednoduchých plochých souborů. Použití sdílených složek umožňuje přístup k souborům přes síť. Sdílení dat tímto způsobem nabízí odpovídající mechanismy pro zabezpečení a souběžné řízení přístupu, díky čemuž můžou distribuované služby poskytovat vysoce škálovatelný přístup k datům pro provádění základních operací nízké úrovně, například jednoduchých žádostí o čtení a zápis.

Služba Azure

Úloha

  • Migrace z existujících aplikací, které vstupují do interakce se systémem souborů
  • Požadováno rozhraní SMB

Datový typ

  • Soubory v hierarchické sadě složek
  • Přístupné prostřednictvím standardních vstupně-výstupních knihoven

Příklady

  • Starší verze souborů
  • Sdílený obsah přístupný mezi určitým počtem virtuálních počítačů nebo instancí aplikace

S pochopením různých modelů úložiště dat vám pomůže následující krok vyhodnotit úlohy a aplikaci a rozhodnout se, které úložiště dat bude vyhovovat vašim konkrétním potřebám. S tímto procesem vám pomůže rozhodovací strom úložiště dat.

Další kroky