Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Typy danych XML

Termin Definicja
Typy danych XML

Typy danych XML w SQL Server pozwalają przechowywać dokumenty tego formatu wraz z ich walidacją strukturalną.

Przechowywanie dokumentów XML w SQL Server

Typ danych xml w SQL Server służy do przechowywania dokumentów i fragmentów XML bez konieczności traktowania ich wyłącznie jako zwykłego tekstu. Kolumna tego typu może zawierać zarówno kompletny dokument z pojedynczym elementem głównym, jak i fragment XML złożony z kilku elementów najwyższego poziomu. SQL Server analizuje strukturę zapisywanej wartości, dzięki czemu niepoprawnie zbudowany XML może zostać odrzucony już podczas zapisu. W odróżnieniu od kolumny varchar lub nvarchar dane XML zachowują strukturę elementów, atrybutów, przestrzeni nazw i wartości tekstowych.

Typ xml może być używany jako typ kolumny, zmiennej, parametru procedury składowanej oraz wartości zwracanej przez funkcję. W definicji kolumny można określić, czy dane mają być przechowywane jako XML nietypowany, czy typowany za pomocą kolekcji schematów XML. Wariant nietypowany sprawdza poprawność składni XML, ale nie wymaga zgodności z konkretnym schematem. Jest przydatny wtedy, gdy struktura dokumentów może się zmieniać albo gdy walidacja ma odbywać się w późniejszym etapie przetwarzania.

Walidacja za pomocą kolekcji schematów XML

SQL Server pozwala powiązać typ xml z kolekcją schematów XML, czyli zestawem definicji zapisanych w bazie za pomocą instrukcji DDL. Schemat może określać dozwolone elementy i atrybuty, ich typy danych, kolejność występowania, liczność oraz zależności między elementami. Typowana kolumna XML nie przechowuje więc dowolnego dokumentu spełniającego jedynie reguły składniowe. Wartość musi dodatkowo przejść walidację względem przypisanego schematu.

W SQL Server kolekcję schematów XML tworzy się instrukcją CREATE XML SCHEMA COLLECTION, a następnie można wykorzystać ją w definicji kolumny, podając odpowiednią nazwę kolekcji po słowie kluczowym xml. Dla dokumentów z jednym elementem głównym stosuje się wariant DOCUMENT, natomiast dla fragmentów XML można użyć wariantu CONTENT. Po dodaniu ograniczeń schematowych zmiana lub usunięcie kolekcji może wymagać wcześniejszego odłączenia jej od zależnych kolumn i parametrów. Walidacja ogranicza ryzyko zapisania dokumentu o błędnej strukturze, ale nie zastępuje kontroli znaczenia biznesowego wartości.

Zapytania XQuery i modyfikowanie zawartości

Do pracy z wartością typu xml SQL Server udostępnia metody query(), value(), exist(), nodes() oraz modify(). Metoda query() zwraca wynik zapytania XQuery jako XML. value() pobiera pojedynczą wartość atomową i konwertuje ją do wskazanego typu SQL, dlatego wyrażenie musi zwracać najwyżej jedną wartość. exist() zwraca informację, czy wskazana ścieżka lub warunek znajduje dopasowanie. Metoda nodes() rozbija wynik na zestaw wierszy, co pozwala łączyć elementy XML z klasycznym zapytaniem relacyjnym.

Przykładowe odczytywanie danych może wykorzystywać ścieżkę XPath, taką jak /zamowienie/klient/nazwa, ale dokładna składnia zależy od rzeczywistej struktury dokumentu oraz użytych przestrzeni nazw. Jeżeli XML zawiera przestrzeń nazw, musi ona zostać uwzględniona w zapytaniu, na przykład przez deklarację WITH XMLNAMESPACES. Pominięcie przestrzeni nazw często prowadzi do pozornie pustych wyników, mimo że odpowiednie elementy znajdują się w dokumencie.

Metoda modify() wykonuje modyfikację XML za pomocą wyrażeń XML DML, między innymi insert, delete i replace value of. Jest dostępna w kontekście instrukcji SET lub UPDATE i działa na pojedynczej wartości XML. Przy zmianach danych należy uwzględnić kardynalność wskazanego węzła, typ wartości oraz ograniczenia wynikające z kolekcji schematów. Nieprawidłowa ścieżka albo próba zmiany elementu niezgodnie ze schematem może zakończyć się błędem wykonania.

Indeksy, rozmiar danych i diagnostyka problemów

Dane XML mogą być przechowywane w kolumnie o dużej zawartości, dlatego ich użycie wymaga oceny rozmiaru dokumentów i sposobu wykonywania zapytań. SQL Server udostępnia indeks podstawowy XML oraz indeksy pomocnicze, między innymi PATH, VALUE i PROPERTY. Indeks podstawowy XML jest tworzony na tabeli zawierającej klucz główny i stanowi podstawę dla indeksów pomocniczych. Indeks PATH wspiera wyszukiwanie po ścieżkach, VALUE może pomagać przy wyszukiwaniu wartości, a PROPERTY jest przeznaczony dla określonych wzorców odczytu właściwości wierszy.

Indeks XML nie jest automatycznym rozwiązaniem każdego problemu wydajnościowego. Zwiększa rozmiar bazy oraz koszt operacji INSERT, UPDATE i DELETE, ponieważ zmiana dokumentu może wymagać aktualizacji struktur indeksowych. Przed dodaniem indeksu należy sprawdzić plan wykonania zapytania, selektywność warunków, częstotliwość odczytu i modyfikacji oraz faktyczną wielkość przechowywanych dokumentów. W wielu przypadkach częściej wyszukiwane atrybuty warto przechowywać także w zwykłych kolumnach relacyjnych, zamiast za każdym razem wydobywać je z XML.

Diagnostyka problemów z typem danych XML powinna obejmować sprawdzenie poprawności składni, kodowania znaków, przestrzeni nazw, zgodności z kolekcją schematów oraz użytych metod XQuery. Warto odróżnić błąd zapisu niepoprawnego dokumentu od błędu zapytania, które wskazuje niewłaściwą ścieżkę. Należy również sprawdzić, czy wartość jest dokumentem, czy fragmentem XML, ponieważ wymagania dotyczące elementu głównego są w obu przypadkach różne. Przy analizie wydajności pomocne są plany wykonania i pomiary czasu zapytań, a nie tylko obserwacja rozmiaru kolumny.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę