Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Zpracování XML a JSON dat na MS SQL Serveru

Podobné prezentace


Prezentace na téma: "Zpracování XML a JSON dat na MS SQL Serveru"— Transkript prezentace:

1 Zpracování XML a JSON dat na MS SQL Serveru vladimir.muzny@dropman.cz

2 Obsah  Typy úloh  Kdo je to JSON a XML  Kdy to celé začalo  Data z SQL do FOR XML/FOR JSON  Data z XML/JSON na SQL Server  Rozdíly XML INDEX/(neexistující) JSON INDEX Zajištění validity

3 Typy úloh, scénáře  Data příliš komplikovaná pro relační model CV Parametry mnoha druhů výrobků  Výměna dat SOAP/REST web services Souborový formát  SQL  XML/JSON  XML/JSON  SQL  XML/JSON  jiné XML/JSON

4 Kdo jsou JSON a XML?  Snadno čitelné textové popisy dat (stavu objektů) Obojí je čistý text V XML lze nastavit kódování, JSON je vždy UTF-8  Obojí je platformě nezávislé Velká škála procesorů  Nevýhoda JSON: XML silněji popisuje metadata Namespaces, elementy a atributy dávají hodnotám význam  Výhoda JSON: XML silněji popisuje metadata Cca 40 % obsahu XML hodnoty jsou metadata  Na SQL Serveru nemá JSON zdaleka takovou podporu Datový typ, schémata

5 Trochu více o JSON  JavaScript Object Notation Objekt {“klic1”: cislo, “klic2”: “retezec”, “klic3”: true} Objekt v objektu: {“subobjekt”: {“klic”: cislo}, “skalar”: true} Pole: [{“klic”: “hodnota”}, {“klic”: hodnota}]  Výchozí kódování UTF-8 Znaky v UTF-16 jako entity \u0000 Neměnné (na rozdíl od XML) Na SQL Serveru uvažujeme jako nvarchar

6 Časté chyby v JSON zápisu  {klic: “hodnota”} – názvy klíčů MUSÍ být v uvozovkách  {‘klic’: ‘hodnota’} – nepoužívají se apostrofy  {“ciselny_klic”:.5} – číslo musí začínat číslicí (0.5)  {“klic”: “hodnota”, } – pozor na čárku za posledním klíčem

7 Kdy to začalo na SQL Serveru  MS SQL 2000 SELECT… FOR XML Režimy RAW/AUTO Slabé, první pokus  MS SQL 2008 Zavádí datový typ XML s nativními metodami Zavádí objekt XML SCHEMA COLLECTION (xsd) Rozšiřuje FOR XML o režimy PATH a EXPLICIT  MS SQL 2016 SELECT … FOR JSON (AUTO/PATH) SQL metody pro zpracování JSON hodnoty Vyžaduje cmtp level 130

8 Rychlé srovnání VlastnostJSONXML Režimy získání z relačních datSELECT FOR JSON AUTO/PATHSELECT FOR XML RAW/AUTO/PATH/EXPLICIT Vlastní datový typNeexistuje (substitut: nvarchar + fce ISJSON) Xml (použitelný bez omezení) Zpracování do relačních datOPENJSONOPENXML (DOM) Xml metody (SAX) Práce s uloženou hodnotouFce JSON_VALUE Fce JSON_QUERY Fce JSON_MODIFY Funkce na instanci xml hodnoty.value().exist().nodes().query() Pozn. CROSS APPLY IndexacePřes computed columnNativní XML index

9 DOM realizace na SQL Serveru I  Získání XML hodnoty DECLARE @docHandler int, @xml xml SET @xml = … (XML třeba ze souboru)  Načtení hodnoty do paměti EXEC sp_xml_preparedocument @docHandler output, @xml  Zpracování  Úklid paměti EXEC sp_xml_removedocument @docHandler

10 DOM realizace na SQL Serveru II SELECT * FROM OPENXML(@docHandler, ‘base_path’, 0) WITH ( Název_sloupce datový_typ‘volitelně cesta k hodnotě’, … ) Pokud není uveden popis struktury, vrací samotnou strukturu, a ještě pomalu!

11 SAX na SQL Serveru I  Metody přímo na datovém typu xml @mojeXml.nazev_metody  Výčet běžných metod: value(‘xPath’, ‘return sql server type’): vrací hodnotu uzlu exist(‘xPath’): vrací 0 nebo 1 podle toho, zda uzel (resp. hodnota uzlu) existuje nodes(‘xPath’): vytváří subset XML (klauzule FROM) query(‘xQuery’): může vytvořit nové XML („transformaci“) modify(‘xQuery’): může modifikovat obsah

12 SAX na SQL Serveru II  Výhody Zpracování více XML hodnot najednou (celý sloupec tabulky) Nepotřebuje přípravu a úklid Malá paměťová náročnost  Nevýhody Poněkud méně přehledný zápis Zpomaluje  Léčba XML indexy  Použití XML schémat v deklaraci XML sloupců

13 JSON „DOM“ na SQL Serveru  Rowsetová funkce OPENJSON()  Bez WITH vždy vrací výsledek s těmito položkami Key: název klíče (i když je to pole objektů, pak string) Value: hodnota klíče (i když je to celý objekt, pak string) Type: nešikovná enumerace  0: null  1: string  2: int  3: bool  4: array (string JSON format)  5: object (string JSON format)  WITH: formátuje „pěknou“ výsledkovou sadu AS JSON, když některé sloupce mají zůstat validní JSON

14 JSON výrazy  Používány ve funkcích  $ kontextový prvek $.klic nebo $.”viceslovny klic”  [] indexer pole Indexováno od 0 Lze použít jako atribut_typu_pole[0]: celý objekt Nebo jako atribut_typu_pole[0].klic: jednotlivá hodnota  Přísnost výrazů lax: neexistující cesta vrátí NULL (default) strict: neexistující cesta vrátí error  Řešení duplicit atributů: JSON výraz vrátí první výskyt klíče

15 JSON funkce do klauzule SELECT (JSON „SAX“)  Jsou schopny zpracovat JSON hodnoty z celého sloupce v tabulce  JSON_VALUE() Z cesty vybere hodnotu Obdoba xml.value()  JSON_QUERY() Z cesty extrahuje validní „subJSON“ (správné escapování) Obdoba xml.query()  JSON_MODIFY() Přímý update do JSON hodnoty Teoreticky lze nahradit řetězcovou funkcí REPLACE  Chatrná přesnost

16 Příklady, ukázky  Deklarace vhodného datového typu XML JSON CHECK  Získání dat ve formátu JSON/XML SELECT FOR  Načtení JSON/XML dat ze souboru  Zpracování JSON/XML dat v tabulce  Indexace


Stáhnout ppt "Zpracování XML a JSON dat na MS SQL Serveru"

Podobné prezentace


Reklamy Google