Úvod
Pokud jde o výběr databáze, jedním z největších rozhodnutí je výběr mezi řešením SQL nebo NoSQL databáze.
V tomto článku se dozvíte klíčové rozdíly mezi databázemi SQL a NoSQL. Na konci tohoto článku se budete moci rozhodnout, který typ databázové struktury nejvíce vyhovuje vašim potřebám.
Rozdíly mezi NoSQL a SQL
SQL je zkratka pro Structured Query Language. SQL je standardní jazyk pro ukládání, manipulaci a získávání dat v systémech relačních databází.
NoSQL nebo „non-SQL“ je nerelační databáze, která nevyžaduje pevné schéma a lze ji snadno škálovat.
I když obě jsou životaschopné možnosti, existuje mezi nimi 11 klíčových rozdílů, které musíte mít na paměti při rozhodování.
Porovnání | SQL | NoSQL |
---|---|---|
Dotazovací jazyk | Structured query language (SQL) | Žádný deklarativní dotazovací jazyk |
Typ databáze | Tabulka | Pár klíč–hodnota, dokument, široký sloupec a graf |
Schéma | Předdefinováno | Dynamické |
Datový model | Relační | Nevztahové |
Oblíbená správa databází systémy | MySQL, PostgreSQL, Oracle a MS-SQL | MongoDB, Apache HBase, Amazon DynamoDB, Redis, Couchbase, Cassandra a Elasticsearch |
Možnost škálování | Vertikální | Horizontální |
Hardware | Specializovaný hardware DB (Oracle Exadata atd.) | Komoditní hardware |
ACID vs. BASE | KYSELINA | BASE |
Open-source | Kombinace open-source, jako je Postgres a MySQL, a komerčních, jako je Oracle Database. | Open-source |
Výhody | Podpora napříč platformami, bezpečná a bezplatná | Snadno použitelný, vysoce výkonný a flexibilní nástroj |
Nevýhody | Složité na údržbu a neefektivní při zpracování velkých dat. Komplexní relační databázové systémy se obtížně exportují do jiných systémů a nejsou vhodné pro práci s různými typy dat | Data jsou méně strukturovaná, databáze NoSQL nejsou tak spolehlivé (žádná podpora ACID), databáze NoSQL jsou novější a mohou nabízet méně funkcí než jejich protějšky SQL |
Případy použití | Podpora ACID, složité dotazy, žádné změny ani růst | Data v reálném čase, objemy dat bez struktury, agilní podnikání, cloud computing |
Typy databáze
Typy databáze závisí na způsobu uložení dat.
- SQL má databázi založenou na tabulkách . Databáze tabulek ukládá data do tabulek s pevnými řádky a sloupci.
NoSQL má 4 typy databází:
- Databáze párů klíč–hodnota – Ukládá každý datový prvek jako název atributu nebo klíč spolu s jeho hodnotou.
- Databáze dokumentů – Ukládá data v dokumentech JSON, BSON nebo XML.
- Širokosloupcová databáze – Ukládá a seskupuje data do sloupců namísto řádků.
- Databáze grafů – Optimalizováno pro zachycení a vyhledávání spojení mezi datovými prvky.
Poznámka: Další informace o typech databází NoSQL naleznete v našem článku Typy databází NoSQL.
Schéma
Schéma databáze je struktura, která definuje, jak je databáze konstruována. Definuje, jak jsou data organizována a jak jsou spojeny vztahy mezi daty. Existují dva typy schémat:
- Předdefinováno
- Dynamické
SQL potřebuje předdefinované schéma pro nestrukturovaná data. Než začnete používat SQL k manipulaci s daty, musíte předdefinovat datovou strukturu ve formě tabulek.
Databáze NoSQL však nevyžaduje předdefinované schéma. NoSQL používá dynamické schéma pro nestrukturovaná data. Dynamické schéma umožňuje uložit data před aplikací schématu. Schéma zcela závisí na tom, jak chcete data ukládat.
Poznámka: Přečtěte si, jak fungují databáze NoSQL v našem článku Co je NoSQL.
Datový model
Datový model ukazuje logickou strukturu databáze. Organizuje prvky dat a standardizuje jejich vzájemný vztah. Existují dva typy datových modelů:
- Relační
- Nerelační
Rozdíly mezi těmito datovými modely můžeme pozorovat při pohledu na více entit. Vezměme si jako příklad objednávku z restaurace a dvě entity:Objednávku a Doručovací adresu.
SQL používá relační datový model. Relační model SQL používá vztah many-to-many. Ve vztahu many-to-many se jeden řádek objednávky může vztahovat k několika řádkům dodací adresy. Podobně se každý řádek dodací adresy může vztahovat k několika řádkům objednávky.
NoSQL používá nerelační datový model která nepoužívá vztahy. Databáze NoSQL denormalizují data duplikováním dodací adresy v každém řádku objednávky, který obsahuje danou dodací adresu. Proto jsou data ukládána vícekrát. To umožňuje snadné ukládání a načítání dat a zvyšuje rychlost dotazu. Přečtěte si více o technikách modelování databáze NoSQL.
Možnost škálování
Škálovatelnost databáze je schopnost uchovávat rostoucí množství dat bez obětování výkonu. Existují dva typy škálovatelnosti:
- Vertikální
- Horizontální
Databáze SQL jsou vertikálně škálovatelné . Při vertikálním škálování jsou data umístěna na jednom uzlu a jediný způsob, jak škálovat, je přidání dalších hardwarových prostředků, jako je CPU a RAM, do jednoho stávajícího počítače. Díky tomu je vertikální škálování nákladnější. Další nevýhodou vertikálního škálování je to, že běží na jednom počítači, takže pokud selže server, spadne i vaše aplikace.
Databáze NoSQL jsou horizontálně škálovatelné . Při horizontálním škálování obsahuje každý uzel pouze část dat, což vám umožňuje přidat další stroje do stávající skupiny distribuovaných systémů. Díky tomu je horizontální škálování levnější a rychlejší.
ACID vs BASE
Nejběžnější modely konzistence jsou ACID a Base .
Databáze SQL používají ACID model konzistence. ACID znamená:
- Atomový – Všechny operace v transakci jsou úspěšné nebo jsou všechny operace vráceny zpět. Částečný úspěch není povolen.
- Konzistentní – Každá transakce přesune databázi z jednoho platného stavu do jiného. Transakce nemůže ponechat databázi v nekonzistentním stavu.
- Izolovaný – Transakce se nemohou navzájem rušit.
- Trvalá – Výsledky použití transakce jsou trvalé i v případě selhání.
Hlavním rysem ACID modelu je konzistence. Když transakci dokončíte, její data jsou konzistentní a stabilní.
Databáze NoSQL používají BASE model konzistence. BASE znamená:
- Základně dostupné – Všichni uživatelé mohou provádět dotaz. Databáze šíří data napříč několika systémy, takže v případě, že dojde k poruše u segmentu dat, nedojde k úplnému výpadku databáze.
- Měkký stav – Stav databáze se může v průběhu času měnit.
- Případná konzistence – Pokud systém funguje a čekáme dostatečně dlouho, databáze se nakonec stane konzistentní.
Výhodou modelu konzistence BASE je to, že transakce jsou prováděny rychleji. Databáze, které používají model BASE, preferují dostupnost před konzistencí replikovaných dat.
Zjistěte více o dvou nejoblíbenějších databázových transakčních modelech a jejich rozdílech v článku ACID vs BASE.
Případy použití
Ne každá databáze vyhovuje potřebám každého podniku. Podívejme se blíže na případy použití pro oba typy databází.
Důvody pro použití databáze SQL:
- Když potřebujete podporu ACID – S podporou ACID získáte konzistenci dat a 100% integritu dat.
- Když pracujete se složitými dotazy a sestavami – SQL se ve srovnání s NoSQL lépe hodí pro komplexní dotazovací prostředí.
- Když neočekáváte mnoho změn nebo růstu – Pokud vaše firma neroste exponenciálně, není důvod používat systém navržený tak, aby podporoval nárůst objemu dat.
Důvody, proč používat databázi NoSQL:
- Když potřebujete data v reálném čase – NoSQL nevyžaduje schémata, takže informační proces urychluje.
- Když ukládáte objemy dat bez struktury – NoSQL podporuje všechny typy dat.
- Když provozujete agilní firmu – NoSQL nevyžaduje proces přípravy, takže snižuje prostoje.
- Když chcete co nejvíce využít cloud computing a úložiště – Aby bylo cloudové řešení škálovatelné, musí být možné data snadno sdílet na více serverech.
Populární systémy pro správu databází
Pojďme se blíže podívat na nejoblíbenější systémy pro správu databází pro relační i NoSQL databázové typy.
Top 5 SQL Database Management Systems
- MySQL – Databáze je přizpůsobitelná a běží na Linuxu, Windows, OS X, FreeBSD a Solaris. Klíčovými funkcemi jsou velké množství online výukových programů a informací, jejich schopnost dělení a replikace, Xpath a fulltextové vyhledávání.
- Oracle – Je to nejlepší systém pro jakoukoli kritickou komerční aplikaci. Klíčovými funkcemi jsou automatická paměť, úložiště a správa zpět, Data Guard pro pohotovostní databázi, virtuální privátní databáze a Real Application Cluster (RAC). Nevýhodou je, že Oracle není open source.
- PostgreSQL – Běží na Linuxu, Windows a OS X. Klíčovými funkcemi jsou obnovení v určitém okamžiku, cizí klíče, podpora tabulkových prostorů a asynchronní replikace.
- SQLite – Tento RDBMS je napsán v jazyce C. SQLite není databázový stroj klient-server. Je to samostatný databázový stroj SQL bez serveru. Klíčovými vlastnostmi jsou rychlá doba odezvy, žádné externí závislosti a podpora databází o velikosti několika TB. SQLite vyžaduje nulovou konfiguraci bez úloh nastavení nebo správy a celá databáze je uložena jako soubor na jediném disku.
- Microsoft SQL Server – Je omezen na Windows, ale je to výhoda, pokud vaše organizace používá produkty společnosti Microsoft. Klíčovými vlastnostmi jsou vysoký výkon, závislost na platformě a omezení dočasných problémů s databází.
5 nejlepších systémů pro správu databází NoSQL
- MongoDB – Jedná se o open-source systém, který je škálovatelný a přístupný. Je napsán v C++. Poskytuje vysoký výkon, protože může běžet na více serverech a data jsou uložena ve formátu JSON.
- Cassandra – Systém pro zpracování velkého množství strukturovaných dat na více komoditních serverech. Je napsán v Javě. Klíčovými vlastnostmi jsou lineární škálovatelnost, rychlá doba odezvy a flexibilita. Cassandra podporuje MapReduce s Apache Hadoop a architekturou peer-to-peer.
- Couchbase – Systém používaný pro interaktivní webové aplikace. Klíčovými funkcemi Couchbase jsou komprese dat, dělení indexů a podpora JSON.
- Amazon DynamoDB – Systém, který umožňuje všechny typy datových modelů. Škálování spravuje Amazon. Klíčovými vlastnostmi jsou vysoká škálovatelnost, ukládání dat v oddílech, využití JSON jako transportního protokolu a snížení složitosti.
- Redis – Redis je úložiště párů klíč–hodnota napsané v jazyce C. Klíčovými funkcemi jsou automatické převzetí služeb při selhání, klíče s omezenou dobou životnosti a podpora různých typů dat.
Poznámka: Zjistěte více o rozdílech mezi MongoDB a Cassandrou v našem srovnávacím článku.