Možnosti více modelů služby Azure SQL Database a SQL Managed Instance
Platí pro: Azure SQL Database Azure SQL Managed Instance
Vícemodelové databáze umožňují ukládat data a pracovat s daty ve více formátech, jako jsou relační data, grafy, dokumenty JSON nebo XML, prostorová data a páry klíč-hodnota.
Řada produktů Azure SQL používá relační model, který poskytuje nejlepší výkon pro různé aplikace pro obecné účely. Produkty Azure SQL, jako je Azure SQL Database a SQL Managed Instance, ale nejsou omezené na relační data. Umožňují používat nerelační formáty, které jsou úzce integrované do relačního modelu.
Zvažte použití funkcí Azure SQL s více modely v následujících případech:
- Máte nějaké informace nebo struktury, které jsou vhodnější pro modely NoSQL a nechcete používat samostatnou databázi NoSQL.
- Většina dat je vhodná pro relační model a potřebujete modelovat některé části dat ve stylu NoSQL.
- Chcete použít jazyk Transact-SQL k dotazování a analýze relačních i noSQL dat a pak je integrovat s nástroji a aplikacemi, které mohou používat jazyk SQL.
- Chcete použít databázové funkce, jako jsou technologie v paměti, abyste zlepšili výkon analýz nebo zpracování datových struktur NoSQL. Pomocí transakční replikace nebo replik pro čtení můžete vytvářet kopie dat a přesměrovat některé analytické úlohy z primární databáze.
Následující části popisují nejdůležitější možnosti více modelů Azure SQL.
Poznámka:
Pro přístup k datům uloženým v databázi můžete použít výrazy JSONPath, výrazy XQuery/XPath, prostorové funkce a výrazy dotazu grafu ve stejném dotazu Jazyka Transact-SQL. Jakýkoli nástroj nebo programovací jazyk, který může spouštět dotazy jazyka Transact-SQL, může také použít toto dotazovací rozhraní pro přístup k datům s více modely. Jedná se o klíčový rozdíl od databází s více modely, jako je Azure Cosmos DB, které poskytují specializovaná rozhraní API pro datové modely.
Funkce grafů
Produkty Azure SQL nabízejí možnosti grafové databáze pro modelování relací M:N v databázi. Graf je kolekce uzlů (nebo vrcholů) a hran (nebo relací). Uzel představuje entitu (například osobu nebo organizaci). Hrana představuje vztah mezi dvěma uzly, které propojuje (například lajky nebo přátele).
Tady jsou některé funkce, které tvoří jedinečnou grafovou databázi:
- Hrany jsou prvotřídní entity v grafové databázi. Mohou mít atributy nebo vlastnosti přidružené k nim.
- Jedna hrana může pružně propojit více uzlů v grafové databázi.
- Snadno můžete vyjádřit porovnávání vzorů a navigační dotazy s více segmenty směrování.
- Snadno můžete vyjádřit přechodné uzavření a polymorfní dotazy.
Do jazyka Transact-SQL jsou integrované relace grafů a možnosti dotazování grafů a získají výhody používání databázového stroje SQL Serveru jako základního systému pro správu databází. Funkce Graphu používají standardní dotazy Transact-SQL vylepšené pomocí operátoru grafu MATCH
k dotazování na data grafu.
Relační databáze může dosáhnout čehokoli, co dokáže grafová databáze. Grafová databáze ale může usnadnit vyjádření určitých dotazů. Vaše rozhodnutí vybrat jednu z nich může být založeno na následujících faktorech:
- Potřebujete modelovat hierarchická data, kde jeden uzel může mít více nadřazených prvků, takže nemůžete použít datový typ hierarchyId.
- Vaše aplikace má složité relace M:N. S vývojem aplikace se přidávají nové relace.
- Potřebujete analyzovat propojená data a vztahy.
- Chcete použít podmínky hledání T-SQL specifické pro grafy, jako je SHORTEST_PATH.
Funkce JSON
V produktech Azure SQL můžete analyzovat a dotazovat data reprezentovaná ve formátu JSON (JavaScript Object Notation) a exportovat relační data jako text JSON. JSON je základní funkcí databázového stroje SQL Serveru.
Funkce JSON umožňují vložit dokumenty JSON do tabulek, transformovat relační data do dokumentů JSON a transformovat dokumenty JSON na relační data. Pro parsování dokumentů můžete použít standardní jazyk Transact-SQL vylepšený pomocí funkcí JSON. K optimalizaci dotazů můžete také použít ne clusterované indexy, indexy columnstore nebo tabulky optimalizované pro paměť.
JSON je oblíbený formát dat pro výměnu dat v moderních webových a mobilních aplikacích. JSON se také používá k ukládání částečně strukturovaných dat v souborech protokolů nebo v databázích NoSQL. Mnoho webových služeb REST vrací výsledky formátované jako text JSON nebo přijímají data formátovaná jako JSON.
Většina služeb Azure má koncové body REST, které vrací nebo využívají JSON. Mezi tyto služby patří Azure Cognitive Search, Azure Storage a Azure Cosmos DB.
Pokud máte text JSON, můžete extrahovat data z JSON nebo ověřit, že je JSON správně naformátovaný pomocí předdefinovaných funkcí JSON_VALUE, JSON_QUERY a ISJSON. Mezi další funkce patří:
- JSON_MODIFY: Umožňuje aktualizovat hodnoty uvnitř textu JSON.
- OPENJSON: Umožňuje transformovat pole objektů JSON na sadu řádků pro pokročilejší dotazování a analýzu. Jakýkoli dotaz SQL se dá spustit ve vrácené sadě výsledků.
- PRO JSON: Umožňuje formátovat data uložená v relačních tabulkách jako text JSON.
Další informace najdete v tématu Jak pracovat s daty JSON.
Modely dokumentů můžete místo relačních modelů použít v některých konkrétních scénářích:
- Vysoká normalizace schématu nepřináší významné výhody, protože přistupujete ke všem polím objektů najednou nebo nikdy neaktualizujete normalizované části objektů. Normalizovaný model ale zvyšuje složitost dotazů, protože k získání dat potřebujete spojit velký počet tabulek.
- Pracujete s aplikacemi, které nativně používají dokumenty JSON pro komunikaci nebo datové modely a nechcete zavádět další vrstvy, které transformují relační data na JSON a naopak.
- Datový model je potřeba zjednodušit denormalizací podřízených tabulek nebo vzorů Entity-Object-Value.
- Musíte načíst nebo exportovat data uložená ve formátu JSON bez dalšího nástroje, který analyzuje data.
Funkce XML
Funkce XML umožňují ukládat a indexovat data XML v databázi a používat nativní operace XQuery/XPath pro práci s daty XML. Produkty Azure SQL mají specializovaný integrovaný datový typ XML a dotazovací funkce, které zpracovávají data XML.
Databázový stroj SQL Serveru poskytuje výkonnou platformu pro vývoj aplikací pro správu částečně strukturovaných dat. Podpora XML je integrovaná do všech komponent databázového stroje a zahrnuje:
- Možnost nativně ukládat hodnoty XML ve sloupci datového typu XML, který lze zadat podle kolekce schémat XML nebo nechat nezatypovaný. Sloupec XML můžete indexovat.
- Možnost zadat dotaz XQuery na data XML uložená ve sloupcích a proměnných typu XML. Funkce XQuery můžete použít v jakémkoli dotazu Transact-SQL, který přistupuje k datovému modelu, který používáte ve své databázi.
- Automatické indexování všech elementů v dokumentech XML pomocí primárního indexu XML. Nebo můžete určit přesné cesty, které mají být indexovány pomocí sekundárního indexu XML.
OPENROWSET
, což umožňuje hromadné načítání dat XML.- Schopnost transformovat relační data do formátu XML.
Modely dokumentů můžete místo relačních modelů použít v některých konkrétních scénářích:
- Vysoká normalizace schématu nepřináší významné výhody, protože přistupujete ke všem polím objektů najednou nebo nikdy neaktualizujete normalizované části objektů. Normalizovaný model ale zvyšuje složitost dotazů, protože k získání dat potřebujete spojit velký počet tabulek.
- Pracujete s aplikacemi, které nativně používají dokumenty XML pro komunikaci nebo datové modely, a nechcete zavádět další vrstvy, které transformují relační data na JSON a naopak.
- Datový model je potřeba zjednodušit denormalizací podřízených tabulek nebo vzorů Entity-Object-Value.
- Musíte načíst nebo exportovat data uložená ve formátu XML bez dalšího nástroje, který analyzuje data.
Prostorové funkce
Prostorová data představují informace o fyzickém umístění a tvaru objektů. Tyto objekty můžou být bodová umístění nebo složitější objekty, jako jsou země/oblasti, silnice nebo jezera.
Azure SQL podporuje dva prostorové datové typy:
- Typ geometry reprezentuje data v euklidovském (plochém) souřadnicovém systému.
- Zeměpisný typ představuje data v souřadnicovém systému s kruhovou zemí.
Prostorové funkce v Azure SQL umožňují ukládat geometrická a geografická data. Prostorové objekty v Azure SQL můžete použít k analýze a dotazování dat reprezentovaných ve formátu JSON a export relačních dat jako textu JSON. Mezi tyto prostorové objekty patří Point, LineString a Polygon. Azure SQL také poskytuje specializované prostorové indexy , které můžete použít ke zlepšení výkonu prostorových dotazů.
Prostorová podpora je základní funkcí databázového stroje SQL Serveru.
Páry klíč-hodnota
Produkty Azure SQL nemají specializované typy nebo struktury, které podporují páry klíč-hodnota, protože struktury klíč-hodnota lze nativně reprezentovat jako standardní relační tabulky:
CREATE TABLE Collection (
Id int identity primary key,
Data nvarchar(max)
)
Tuto strukturu klíč-hodnota můžete přizpůsobit tak, aby vyhovovala vašim potřebám bez jakýchkoli omezení. Například hodnota může být dokument XML místo nvarchar(max)
typu. Pokud je hodnota dokument JSON, můžete použít CHECK
omezení, které ověřuje platnost obsahu JSON. Do dalších sloupců můžete vložit libovolný počet hodnot souvisejících s jedním klíčem. Příklad:
- Přidejte počítané sloupce a indexy pro zjednodušení a optimalizaci přístupu k datům.
- Definujte tabulku jako tabulku optimalizovanou pro paměť, která umožňuje dosáhnout lepšího výkonu.
Příklad efektivního použití relačního modelu jako řešení páru klíč-hodnota v praxi najdete v tématu Jak bwin používá SQL Server 2016 OLTP v paměti k dosažení nevídaného výkonu a škálování. V této případové studii použil bwin relační model pro své ASP.NET řešení ukládání do mezipaměti k dosažení 1,2 milionu dávek za sekundu.
Další kroky
Funkce více modelů jsou základní funkce databázového stroje SQL Serveru, které jsou sdíleny mezi produkty Azure SQL. Další informace o těchto funkcích najdete v těchto článcích: