Alapvető információk az xml sql-kiszolgáló használatáról
Az SQL Server számos lehetőséget támogat az XML adatok tárolására.
Természetes tárolás xml típus formájában
XML adatok és a relációs formátumban tárolt adatok leképezése
Annotált séma (AXSD) használatával az XML egy vagy több táblázat oszlopaiba osztható. Ez biztosítja, hogy az adatok helyesek legyenek relációs szinten. Ennek eredményeként az adatok hierarchikus struktúrája megmarad, bár az elemek sorrendjét nem veszik figyelembe. A séma nem lehet rekurzív.
Nagy tárgyak tárolása, [n] varchar (max) és varbinary (max)
Az adatok egyazon másolatát tároljuk. Ez hasznos lehet speciális alkalmazásokban, például olyan alkalmazásokban, amelyek feldolgozzák a jogi dokumentációt. A legtöbb alkalmazásnak nincs szüksége az adatok pontos másolatára - elegendő XML tartalomra van szükségük (az InfoSet elemek helyességét).
Általában e megközelítések kombinációját használják. Például az XML adatok tárolhatók az xml típusú oszlopban. a tulajdonságok fejlődését a relációs oszlopok szintjére állítva. Alternatívaként a leképezési technológiát a nem rekurzív töredékek XML-től eltérő oszlopokban történő tárolására használhatja, és csak rekurzív töredékeket tárolhat xml típusú oszlopokban.
Az XML technológia kiválasztása
A természetes XML formátum és az XML ábrázolás közötti választás általában a következő tényezők függvénye.
Néha az XML adatok (például termékismertető) a leginkább a nagy objektumként tárolódnak, más helyzetekben - relációs oszlopokban (például a termék leírása XML formátumra konvertálva). Minden adattárolási lehetőség biztosítja a dokumentum pontosságát különböző mértékben.
Néha egy tárolási lehetőség jobb, mint a másik, ami megfelel az XML adatkérések természetének és intenzitásának. A részletes XML lekérdezési adatok támogatásának mértéke, például az XML csomópontok predikátumbecsléseit kétféle tárolási technológiával, különböző mértékben támogatja.
Előfordulhat, hogy az XML-adatok indexeléséhez fel kell gyorsítania az XML-kérelmek feldolgozását. Az indexelés lehetőségei az adattárolás technológiájától függenek; A munkaterhelés optimalizálása érdekében megfelelőbb opciót kell választania.
Adatmódosítási képességek
Néhány munkaterhelés magában foglalja az XML adatok részletes módosítását. Ez például akkor szükséges, ha új szakaszt ad hozzá egy dokumentumhoz, miközben nem szükséges megoldani más feladatokat, például a webes tartalmak feldolgozását. Egy adott alkalmazás fejlesztőinek esetében az adatmódosítás nyelvének nagy jelentőséggel bír.
Az XML-adatok leírhatók olyan sémák használatával, amelyek lehetnek vagy nem XML-sémakumentumok. A sémához kapcsolódó XML adatok támogatása az XML technológiától függ.
Ezenkívül az XML adatok tárolására szolgáló technológia változik a sebességben.
XML adatok tárolása natív formátumban
XML adatok tárolhatók a kiszolgálón egy xml típusú oszlopban. Ez az opció akkor megfelelő, ha teljesülnek a következő feltételek:
Szüksége van egy egyszerű módra XML adatok tárolására a kiszolgálón, miközben megőrzi a dokumentum sorrendjét és szerkezetét;
fennáll annak a lehetősége, hogy nincs XML séma;
Szükséges az XML-adatok lekérése és módosítása;
XML-adatok indexelésére van szükség a kérések gyorsabb feldolgozásához;
A rendszerkatalógus nézetben az XML-adatok és az XML-sémák kezelését kell használnia az alkalmazásban.
Az XML-adatok természetes formátumú tárolására szolgáló mechanizmus akkor hasznos, ha különböző struktúrákkal vagy XML-dokumentumokkal rendelkező XML-dokumentumok vannak, amelyek különböző vagy összetett sémáknak felelnek meg, amelyek túl nehéz összehasonlítani a relációs struktúrákkal.
Egy példa. XML adatok modellezése az xml adattípus használatával
Tegyük fel, hogy XML-formátumú termék kézikönyvvel foglalkozunk, amely számos, több részre kiterjedő fejezetre osztott témát foglal magába. A szakasz tartalmazhat alszekciókat. Így az elem
Az ilyen XML-dokumentumok tárolására tökéletesen közeledik az xml típusú oszlop. Ez lehetővé teszi az XML-adatok InfoSet tartalmának mentését. Az XML oszlop indexelése lehetővé teszi a lekérdezés feldolgozásának hatékonyságát.
Egy példa. Az XML-adatok pontos másolatainak mentése
Ha a kéréseket feldolgozás közben futtatja, konvertálja az adatokat xml-típusba, és végrehajtsa az XQuery lekérdezést. A típusátalakítás futásidőben jelentős erőforrásokkal jár, különösen akkor, ha a dokumentum nagy. Nagy lekérdezési gyakoriság esetén a dokumentumokat egy xml-típusú oszlopban tárolhatjuk, és pontosan indexelhetjük, és az [n] varchar (max) oszlop felhasználható a dokumentum pontos másolatainak visszaadására.
Az XML oszlop egy olyan oszlop lehet, amelyet az [n] varchar (max) oszlopból kiszámolunk. Azonban egy számított XML oszlop, valamint a [n] varchar (max) vagy varbinary (max) típusú oszlopok esetében nem tudunk XML indexet létrehozni.
XML reprezentációs technológia
Az XML sémák és az adatbázis-táblák közötti megfelelés meghatározásával létrehozhatja a tárolt adatok "XML reprezentációját". Az alaptáblák XML-ábrázolással történő kitöltéséhez használhatja az XML-adatok tömeges feltöltési műveletét. Az XML adatok lekérdezéséhez az XPath 1.0 verziót használja, és a lekérdezés SQL query táblákká alakul. A frissítések ezen táblázatokra is vonatkoznak.
Ez a technológia a következő esetekben hasznos:
Szükség van XML-orientált programozási modell megvalósítására, a meglévő relációs adatok XML-ábrázolásával;
Van egy XSD séma vagy XDR séma XML adatokhoz, amelyet egy külső partner szervezet nyújthat;
az adatok sorrendje nem fontos, a táblázatok adatai nem rekurzívek, vagy a rekurzió maximális mélysége nem ismert előre;
XML adatbázison keresztül kell kérni és módosítani az adatokat XPath 1.0-s verzióval;
át kell töltenie az XML-adatokat, és XML-ábrázolással el kell osztania az alaptáblák között.
Az ilyen feltételeknek megfelelő adatok példái lehetnek a webes szolgáltatások és az adatcsere-létesítmények XML-formátumú relációs adatai, valamint az XML-adatok rögzített sémával. További információért lásd az MSDN Online könyvtárat.
Egy példa. Annotált XML sémával (AXSD) történő adatmodellezés
Tegyük fel, hogy vannak olyan relációs adatok (például az ügyfelekkel, megrendelésekkel és termékekkel kapcsolatos információk), amelyeket XML-ként szeretne feldolgozni. Ebben az esetben határozza meg az XML reprezentációt az AXSD séma alkalmazásával a relációs adatokra. Az XML nézet lehetővé teszi az XML-adatok tömeges feltöltését a táblákba, valamint a relációs adatok lekérdezését és frissítését. Ez a modell különösen hatékony, ha XML-jelölést tartalmazó adatokat szeretne cserélni más alkalmazásokkal az SQL-alkalmazások felfüggesztése nélkül.
Kombinált modell
Gyakran a relációs oszlopok és az xml oszlopok kombinációja a legmegfelelőbb az adatmodellezéshez. Az XML adatok bizonyos értékei tárolhatók a relációs oszlopokban, a többi vagy az összes XML érték az XML oszlopban. Ez nagyobb teljesítményhez vezethet a relációs oszlopok és a zárolási paraméterek létrehozásához.
A relációs oszlopokban tárolt értékek a munkateremből függenek. Ha például az / Customer / @ CustId útvonal kifejezéssel minden XML-értéket lekérünk, akkor a CustId attribútumnak a relációs oszlopra való áthelyezésével és indexálásával gyorsíthatja a lekérdezések feldolgozását. Másrészről, ha az XML adatok túlterheltek a relációs oszlopokban duplikálás nélkül, akkor az adatok koherens egészbe foglalása túl drága lehet.
Nagyon strukturált XML adatok, például az XML tartalomjegyzékbe konvertált táblázat tartalmak esetén minden értéket relációs oszlopokba rendezhetünk, és lehetőség szerint XML reprezentációs technológiát alkalmazhatunk.
Az XML oszlopban tárolt XML adatok nagyarányúsága nagyon fontos a zárakhoz és kisebb mértékben a frissítésekhez. Az SQL Server-ben, az XML-adatoknál és az XML-től eltérő adatoknál ugyanazok a zárolási mechanizmusok használatosak. Így ha a sor szintjén zárolja, az összes XML-példány a vonalon blokkolva van. Ha a granularitás nagy, az XML nagy példányainak lezárása a frissítések végrehajtására csökkenti a rendszer teljesítményét egy többfelhasználós környezetben. Másrészt túlzott bomlással az objektum-kapszulázás elveszik, és az adat-újbóli létrehozásával összefüggő általános költségek nőnek.
Hatékony rendszer létrehozása érdekében meg kell találnia az egyensúlyt az adatmodellezés követelményei és a zárak és frissítések jellemzői között. Az SQL Serverben azonban a tárolt XML példányok mérete nem annyira fontos.
Például az XML-példány frissítéseit egy új módszer segítségével végzik el, ahol részlegesen frissítik a nagy foltokat (BLOB-okat) és az indexeket, amelyekben egy meglévő tárolt XML-példányt összehasonlítanak a frissített verziójával. Amikor egy nagy bináris részleges frissítésre kerül, kétpéldányos XML összehasonlítást végez, és csak a különböző adatok frissülnek. Ha az index részlegesen frissül, csak azok az XML indexsorok, amelyek ezt a módosítást igénylik.