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

Slides:



Advertisements
Podobné prezentace
XML, (X)HTML, DHTML, CSS Pavel Tvrdík 2008, Oktáva.
Advertisements

Fulltextové technologie a jejich využití v UIS Bc. Miroslav Prachař datamanagement
Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Kateřina Raichová. Materiál je publikován pod licencí Creative Commons. ze sady:3tematický.
Pořízení dat Databázové funkce Řazení Filtrování Souhrny Kontingenční tabulky Kontingenční grafy.
Počítačové sítě 8. Využití sítí © Milan Keršlágerhttp:// Obsah: ● sdílení v sítích.
Spolupráce mezi výkresy bloky (s atributy) Design center externí reference.
Formáty souborů (neboli typ souboru) obvykle určuje význam dat v elektronickém souboru. Existuje množství různých formátů, přizpůsobených pro ukládání.
Základní škola a Mateřská škola, Liberec, Barvířská 38/6, příspěvková organizace Název : VY_32_inovace_18 Informatika - MS Excel – Typy grafů Autor: Pavlína.
ZAL – 5. cvičení Martin Tomášek Pole - opakování Základní datový typ. V poli držíme více elementů (jednoho typu) S elementy v poli můžeme manipulovat.
Co nového na SQL Serveru 2016 aneb koupit, či nekoupit?
Tabulkový procesor Odebrání skrytých dat a osobních informací kontrolou sešitů Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Růžena Hynková.
Řetězce v jazyce C ● řetězec je posloupnost znaků ● řetězcové konstanty se v C vkládají mezi uvozovky, např. "Ahoj Hugo!" ● v paměti je řetězec uložen.
Inf Vizualizace dat a tvorba grafů. Výukový materiál Číslo projektu: CZ.1.07/1.5.00/ Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím.
Postup modelování Kateřina Růžičková. Postup modelování Rozhodnutí modelovat Definice problému Existence modelu, pro daný problém Identifikace modelu.
OneNote. Co to je?  OneNote patří k produktům Microsoftu, nyní je ke stažení zdarma  jde o aplikaci pro rychlou, snadnou a přehlednou správu různých.
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 10: Tvorba vlastních funkcí Bc. Radek Libovický.
Databáze © Mgr. Petr Loskot
Úvod do databází MS Access (1).
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Systémové databáze v SQL Serveru
Vytvořil: Robert Döring
Dotkněte se inovací CZ.1.07/1.3.00/
COM – Práce s objektovým modelem jiné aplikace
Návod na tvorbu prezentace diplomové / bakalářské práce
Batové dávky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Vojtěch Mrózek. Dostupné z Metodického portálu ISSN: ,
1. ročník oboru Mechanik opravář motorových vozidel
Databázové systémy a SQL
ZÁKLADNÍ ŠKOLA, JIČÍN, HUSOVA 170 Číslo projektu
ORGANIZACE DAT V POČÍTAČI
Přetěžování Datové typy.
Uživatelem definované datové typy
Financováno z ESF a státního rozpočtu ČR.
Algoritmizace - opakování
Algoritmizace - opakování
Číslo projektu CZ.1.07/1.4.00/ Název sady materiálů
Struktury.
Databáze MS ACCESS 2010.
Vkládání dat MS Access (5).
Vytvoření databázového dotazu z více tabulek
2. seminární úkol - projekt
4.1 – 4.3 Lineární nerovnice i jednoduchý podílový tvar
Databázové systémy, datové modelování
Paměti počítače, rozdělení
Popis výukového materiálu Název: PowerPoint
Číslo projektu CZ.1.07/1.4.00/ Název sady materiálů
Informatika pro ekonomy přednáška 8
Číslicové měřící přístroje
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
Informační a komunikační technologie Informatika Operační systémy
Databázové systémy a SQL
MS Excel – příklady na databázové funkce
Počítačová cvičení z předmětu Datové sklady
Microsoft Office Access
Dotazovací jazyk SQL I.
Prezentace SDAT pro ČBA
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
A5M33IZS – Informační a znalostní systémy
Lineární regrese.
MS Access Tabulka letní semestr 2013.
Přednáška 6 SQL – spojení tabulek.
Základní škola a mateřská škola Lázně Kynžvart Autor: Mgr
Přednáška 10 Uložené procedury.
Přednáška 8 INDEXY, POHLEDY.
Střední škola obchodně technická s. r. o.
Vzdělávání jako hlavní složka řízení lidských zdrojů
Hromadné dokumenty opakující se pro kolekci osob
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Využití strojového učení na SQL Serveru 2016/2017
SQL Server 2017: Automatic tuning
Transkript prezentace:

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

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

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

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

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

Č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

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

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

DOM realizace na SQL Serveru I  Získání XML hodnoty xml = … (XML třeba ze souboru)  Načtení hodnoty do paměti EXEC  Zpracování  Úklid paměti EXEC

DOM realizace na SQL Serveru II SELECT * FROM ‘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!

SAX na SQL Serveru I  Metody přímo na datovém typu  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

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ů

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

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

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

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