Jednou z významných výhod používání RDBMS je „referenční integrita“. Referenční integrita se týká přesnosti a konzistence dat. Této integrity dat je dosaženo použitím těchto primárních a cizích klíčů.
Referenční integrita zachovává integritu dat prostřednictvím „omezení“. Omezení jsou pravidla, která vynucují přesnost dat tím, že zabraňují vymazání souvisejícího záznamu bez předchozího vymazání primárního záznamu v hlavní tabulce. Pokud byl vztah primárního a cizího klíče správně přidán, pak pokus o odstranění primárního záznamu bez předchozího odstranění souvisejících záznamů z jiných tabulek zablokuje transakci, dokud nebudou související záznamy odstraněny. Tím se zabrání tzv. osiřelým záznamům, což jsou referenční záznamy v tabulce, které již nemají primární záznam v hlavní tabulce.
Tři pravidla, která referenční integrita prosazuje, jsou:
1. Cizí klíč musí mít odpovídající primární klíč. („No orphans“ rule.)
2. Pokud je smazán záznam v primární tabulce, musí být smazány i všechny související záznamy odkazující na primární klíč, což se obvykle provádí pomocí kaskádového mazání.
3. Pokud se změní primární klíč pro záznam, musí být změněny i všechny odpovídající záznamy v ostatních tabulkách, které používají primární klíč jako cizí klíč. Toho lze dosáhnout pomocí kaskádové aktualizace.
Vyhledávání dat v relačním systému správy databází se provádí pomocí strukturovaného dotazovacího jazyka (SQL), což je robustní jazyk určený pro správu dat umístěných v relační databázi.
SQL má možnosti vytváření, načítání, aktualizace a mazání záznamů a do značné míry se spoléhá na tento vztah primárního a cizího klíče pro identifikaci souvisejících dat ve více tabulkách. Díky schopnostem jazyka SQL je relační databázový systém první volbou pro všechny aplikace, které vyžadují silnou transakční funkčnost, vytěžování dat a komplexní reportování.
Tento příkaz SQL demonstruje načtení sady výsledků, jak by byly načteny všechny záznamy o prodeji pro jednoho zaměstnance, jehož EmployeeId = 1.
VYBER * FROM Zaměstnanci
JOIN Sales ON Employees.EmployeeId = SALES.EmployeeId
WHERE EmployeeId = 1
Tento další příkaz SQL je příkladem dotazu implementujícího spojení na více tabulek. V tomto případě dotaz SQL získává všechny informace o zaměstnancích, informace o prodejích a informace o zákaznících z tabulky Customers.
SELECT * FROM Employees
JOIN Sales ON Employees.EmployeeId = SALES.EmployeeId
JOIN Customers ON Customers.CustomerId = SALES.CustomerId
WHERE EmployeeId = 1
Relační databáze také poskytují funkci zvanou „indexování“. Databázový index je datová struktura, která zvyšuje rychlost vyhledávání dat. Indexy se běžně přidávají do datových polí, která se běžně používají k dotazování a spojování tabulek. Ve výše uvedených příkazech SQL by kandidáty na tento typ optimalizace byly příkazy EmployeeId a CompanyId.
Nerelační databáze
Nerelační databáze neboli databáze NoSQL ukládá data. Na rozdíl od relační databáze však neobsahuje žádné tabulky, řádky, primární klíče ani cizí klíče. Místo toho nerelační databáze používá model ukládání optimalizovaný pro specifické požadavky typu ukládaných dat.
Mezi nejpopulárnější databáze NoSQL patří MongoDB, Apache Cassandra, Redis, Couchbase a Apache HBase.
Existují čtyři populární nerelační typy: úložiště dokumentových dat, sloupcově orientovaná databáze, úložiště klíčových hodnot a grafová databáze. Často se pro jednu aplikaci používají kombinace těchto typů.
Dokumentová datová úložiště
Dokumentové datové úložiště spravuje sadu pojmenovaných řetězcových polí a hodnot objektových dat v entitě označované jako „dokument“, obvykle uložené ve formě dokumentů JSON, které mohou být kódovány různými způsoby, včetně XML, YAML, JSON, BSON nebo jako prostý text. Pole v dokumentech jsou vystavena, což umožňuje aplikaci dotazovat se a filtrovat data pomocí hodnot polí.
Uložiště dokumentů nevyžadují, aby všechny dokumenty udržovaly identické datové struktury, což poskytuje velkou flexibilitu. Je tedy snadné pochopit, jak lze tuto flexibilitu využít při změně požadavků organizace.
Sloupcové (nebo sloupcově orientované) datové sklady
Sloupcový datový sklad organizuje data do sloupců, což je koncepčně podobné relační databázi. Skutečná výhoda sloupcové databáze spočívá v denormalizovaném přístupu ke strukturování řídkých dat, který vychází ze sloupcově orientovaného přístupu k ukládání dat.
Úložiště klíč-hodnota
Jedná se o nejméně komplikovanou z databází NoSQL a jak by název napovídal, úložiště klíč-hodnota je jednoduše kolekce dvojic klíč-hodnota obsažených v objektu.
Úložiště dokumentů
Úložiště dokumentů jsou o něco složitější než úložiště klíč-hodnota. Nepředpokládají konkrétní strukturu dokumentu určenou pomocí schématu. Úložiště dokumentů je určeno k ukládání každodenních dokumentů tak, jak jsou, a umožňují složité dotazování.
MongoDB a CouchDB jsou příklady úložišť dokumentů.
Grafické databáze
Nejsložitějším nerelačním typem databáze jsou grafické databáze. Je určena k efektivnímu ukládání vztahů mezi entitami. Pokud jsou data značně propojená, například nákupní a výrobní systémy nebo referenční katalogy, jsou grafové databáze dobrým řešením.
Možností grafových databází NoSQL je nekonečně mnoho a vzhledem k tomu, že data, která shromažďujeme, jsou stále více propojená, budou grafové databáze i nadále získávat na popularitě, včetně stále dominantní relační databáze.
Namísto jazyka SQL (Structure Query Language), který používají relační databáze, používají databáze NoSQL objektově-relační mapování (ORM). Koncept ORM spočívá v možnosti psát dotazy pomocí preferovaného programovacího jazyka. Mezi nejoblíbenější ORM patří Java, Javascript, .NET a PHP.
Shrnutí
Co byste měli vědět o relačních databázích:
-
Pracují se strukturovanými daty.
-
Vztahy v systému mají omezení, což podporuje vysokou úroveň integrity dat.
-
Mají neomezené možnosti indexování, což vede k rychlejší odezvě dotazů.
-
Vynikají vysokou bezpečností datových transakcí.
-
Poskytují možnost psát složité dotazy SQL pro analýzu dat a vytváření reportů.
-
Jejich modely dokáží zajistit a vynucovat obchodní pravidla na datové vrstvě a přidávají tak úroveň integrity dat, kterou v nerelační databázi nenajdete.
-
Jsou orientovány na tabulky a řádky.
-
Používají SQL (strukturovaný dotazovací jazyk) pro tvarování a manipulaci s daty, který je velmi výkonný.
-
Příklady databázíSQL: MySql, Oracle, Sqlite, Postgres a MS-SQL. Příklady databází NoSQL:
-
DatabázeSQL se nejlépe hodí pro náročné aplikace transakčního typu.
Nerelační/NoSQL databáze:
-
Mají schopnost ukládat velké množství dat s malou strukturou.
-
Poskytují škálovatelnost a flexibilitu pro splnění měnících se obchodních požadavků.
-
Poskytují možnosti bez schématu nebo se schématem na čtení.
-
Mají schopnost zachytit všechny typy dat „Big Data“ včetně nestrukturovaných dat.
-
Jsou orientovány na dokumenty.
-
NoSQL neboli nerelační databáze Příklady: MongoDB, Apache Cassandra, Redis, Couchbase a Apache HBase.
-
Jsou nejlepší pro rychlý vývoj aplikací. NoSQL jsou nejlepší volbou pro flexibilní ukládání dat s malým nebo žádným omezením struktury.
-
Poskytují flexibilní datový model s možností snadno ukládat a kombinovat data libovolné struktury bez nutnosti upravovat schéma.
Takže, co byste si měli vybrat pro svůj projekt? Pro odpověď na tuto otázku se můžeme vrátit na začátek tohoto článku. Tyto dva velmi odlišné typy databází jsou samy o sobě stejně užitečné, ale z kontrastních důvodů a v kontrastních případech použití. Jedna nemusí být nutně lepší než druhá a jak relační, tak nerelační databáze mají své místo.
Zkrátka, neexistuje jediná správná odpověď. Nejlepší způsob, jak určit, který typ databáze je pro váš projekt nejlepší, je analyzovat potřeby organizace a funkčnost aplikace, které potřebujete dosáhnout.