Vytvoření nového projektu zahrnuje výběr správné databáze pro uložení dat. Mnoho vývojářů, které znám, si od začátku vybírá relační databázi. Je to však nejlepší rozhodnutí? Samozřejmě záleží na mnoha faktorech. V tomto článku bych vás rád seznámil s dalšími typy databází, abych vám usnadnil výběr a pomohl vám být připraveni na vaše budoucí snažení.
Typ databáze není jediným tématem, které je třeba zvážit. Existuje mnoho dalších otázek, které je třeba promyslet, např. kolik aktivních uživatelů může aplikace mít? Potřebujete všude silnou konzistenci? Bude v některých případech stačit případná konzistence? Je tolik otázek bez jednoznačných odpovědí, protože "čím více se do toho pouštíte, tím je to složitější". Proto prosím berte na vědomí, že tento článek je zaměřen pouze na typy databází.
Vezměte si šálek kávy a vychutnejte si toto čtení.
Obecná klasifikace databází
Na začátku je dobré vědět, že existují dva hlavní typy databází: relační (SQL) a nerelační (NoSQL).
- Databáze SQL jsou strukturovány relačně, což znamená, že data ukládáte do tabulek a udržujete mezi nimi vztahy.
- Databáze NoSQL (nejen SQL) nejsou na rozdíl od relačních databází dobře strukturované, a proto umožňují větší přizpůsobivost a flexibilitu.
Kromě dvou výše uvedených typů existuje ještě jeden, a to databáze v paměti. Nelze ji klasifikovat ani jako relační, ani jako nerelační, protože se týká místa, kde jsou data fyzicky uložena. Každá databáze může být uložena na disku nebo v paměti.
Typy databází
1. Vztahové
Podle mého názoru se jedná o nejoblíbenější typ databáze. Dobře pracuje se strukturálními daty, kde chcete zachovat vztahy mezi záznamy. Struktura databáze je popsána ve schématu.
Hlavními výhodami jsou transakce (pomáhají zajistit integritu dat a dodržovat pravidla ACID) a schopnost zpracovávat velké množství složitých dotazů.
Kdy si ji vybrat?
Hodí se například pro uchovávání dat, která se strukturálně příliš často nemění a která potřebujete uchovávat trvale:
- CRM (Customer Relationship Management),
- Správa objednávek,
- ERP (Podnik Plánování zdrojů),
- datové sklady nebo správa zásob,
- účetnictví nebo finance.
Příklady:
Amazon Aurora, Microsoft Azure Databáze SQL, PostgreSQL, MySQL.
Relační databáze jsou pro mnoho nových aplikací nedostatečné a je třeba mít více než jednu databázi. V další části článku se zaměřím na nerelační databáze.
2. Klíč-hodnota
Každou hodnotu dat ukládá pomocí jedinečného klíče. To znamená, že k datům se přistupuje pomocí jediného klíče, stejně jako je tomu u hashovací mapy. Na rozdíl od relačních databází nevynucuje schéma ani vztahy mezi záznamy. Většina těchto databází běžně nepodporuje aktualizační operace. Chcete-li data změnit, musíte přepsat celou existující množinu.
Kdy si ji vybrat?
Je užitečná pro data, která chcete rychle číst/zapisovat (ale neaktualizovat příliš často):
- nabízení v reálném čase, podávání reklam,
- ukládání dat do mezipaměti,
- správa relací,
- nákupní vozíky,
- preference zákazníků nebo správa profilů.
Příklady:
Memcached, Amazon DynamoDB, Azure Cosmos DB, Redis.
3. Dokument
Ukládá sbírky dokumentů. Každý dokument obsahuje pole s daty, která mohou být jednoduchými hodnotami nebo složitými prvky, jako jsou seznamy nebo podřízené kolekce. Je důležité vědět, že každý dokument může mít jinou strukturu, i když reprezentuje stejnou věc (každý dokument je jedinečný a v průběhu času se vyvíjí). Například první dokument o zákazníkovi obsahuje méně informací než druhý:
{
"FirstName": "John",
"LastName": "Fake",
"Motocykly:" [
{
"Model": "BMW",
"Year": 2020
}
]
}
{
"FirstName": "Alex",
"LastName": "Nolastname",
"Age": 15,
"Address": "Alex", "Alex", "Alex", "Alex", "Alex", "Alex": {
"Country": "Polsko",
"Město": "Somewhere"
},
"Motocykly:" [
{
"Model": "BMW",
"Year": "BMW": 2020
}
]
}
Kdy si ji vybrat?
Je užitečný pro data, která vyžadují flexibilní schéma pro rychlé zpracování:
- produkt katalogy,
- CMS (systém správy obsahu),
- uživatelské profily a personalizace.
Příklady:
Amazon DocumentDB, Azure Cosmos DB, MongoDB, Redis.
4. Graf
Používá strukturu grafu a skládá se ze dvou prvků: uzlů a hran. Uzly jsou obdobou řádků tabulek nebo dokumentů JSON. Hrany jsou vztahy mezi uzly - jsou stejně důležité jako uzly. Oba mohou mít vlastnosti. Hrany navíc mohou mít definovaný směr vztahu.
Kdy si ji vybrat?
Je užitečná, pokud jsou vaše data podobná grafu, tj. vztahy mezi datovými položkami jsou dynamické a mění se v čase. Kromě toho je dobrou volbou v případech, kdy se jedná o obchodní nebo technické tým potřebují porozumět vztahům v rámci svých dat. Mezi nejvýznamnější příklady patří:
- organizační schémata,
- odhalování podvodů,
- sociální grafy/sítě,
- doporučené motory,
- znalostní grafy.
Příklady:
Amazon Neptune, Neo4j, ArangoDB, Titan.
5. Časové řady
Ukládá data uspořádaná podle času. Obvykle shromažďuje obrovské množství dat v reálném čase. Nejčastěji se používá k ukládání dat, i když aktualizace je velmi vzácná. Obvykle se jako primární klíč a/nebo třídění dat používá časové razítko. Některé databáze umožňují zahrnout definiční značky jako dodatečné informace, například původ nebo typ dat.
Kdy si ji vybrat?
Je užitečné ukládat malé množství dat připojených postupně v chronologickém pořadí, například v:
- DevOps,
- monitorování aplikací,
- monitorování a telemetrie událostí,
- IoT aplikací (například sběr dat ze senzorů zařízení).
Příklady:
Azure Time Series Insights, Amazon Timestream, InfluxDB.
6. Účetní kniha
Poskytuje neměnný, transparentní a kryptograficky ověřitelný protokol transakcí vlastněný centrální autoritou. - Přehled QLDB společnosti Amazon
Vysvětleme si krátce všechna klíčová slova ve výše uvedené citaci:
- immutable - znamená, že záznam vytvořený v této databázi nelze smazat, upravit ani přepsat,
- transparentní - sleduje a uchovává sekvenční záznam každé změny v datech,
- kryptograficky ověřitelná - data vytvořená v této databázi se ověřují pomocí kryptografických technik hashování, podobně jako u blockchainů (pomocí hashovací funkce SHA-256).
Kdy si ji vybrat?
Je užitečné ukládat přesnou historii, např. zaznamenávat postupné zadávání každé změny dat, jako např.:
- finance (historie debetních nebo kreditních transakcí),
- výroba (sledujte, odkud byly díly pořízeny),
- pojištění,
- personalistika a mzdy,
- maloobchodní prodej,
- dodavatelské řetězce.
Příklady:
Amazon QLDB
Závěry
Na otázku položenou v nadpisu tohoto článku neexistuje jednoduchá odpověď. Jediný způsob, jak vybrat správnou databázi, je dozvědět se více o svých datech. Odpovězte si na otázku: "Jaký druh dat vaše aplikace generuje?" a budete schopni se správně rozhodnout.
Kromě toho byste měli dobře znát obchodní požadavky a doménu aplikace. Musíte vědět, jak budete data používat, jaké dotazy budete do databáze posílat, kolikrát budete data uchovávat, číst, aktualizovat nebo mazat. Na všech těchto věcech záleží, ale ne všichni vývojáři věnují těmto oblastem dostatečnou pozornost.
Přemýšlejte prosím o svých datech v aplikaci, kterou vyvíjíte, abyste mohli zlepšit/vytvořit lepší software. Celkově doufám, že svá data poznáte natolik dobře, že je uložíte na místo, kde budou spokojená.
Přečtěte si více:
Několik triků pro zrychlení aplikace JavaScript
Způsoby, jak zvýšit výkon systému Rails
Fakta a mýty o spolupráci s externím partnerem pro vývoj softwaru