| Termin | Definicja |
|---|---|
| Kodowanie i sortowanie (Collation) | Kodowanie i sortowanie (Collation) to ustawienie SQL Server określające zarówno zestaw znaków, jak i reguły porównywania tekstu. Kodowanie i sortowanie tekstu w bazie danychKodowanie i sortowanie, określane w środowisku SQL Server jako Collation, opisuje sposób interpretowania danych tekstowych. Nie chodzi wyłącznie o to, jakie znaki mogą zostać zapisane w kolumnie. Ustawienie obejmuje również reguły porównywania, kolejność sortowania oraz sposób rozpoznawania podobieństw między znakami. Dzięki temu silnik bazy danych wie, czy litera ma być traktowana jako odpowiednik innej litery, czy wielkość znaków ma znaczenie oraz jak uporządkować wartości podczas wykonywania zapytania. W praktyce Collation wpływa na operacje wykonywane na typach takich jak Warto odróżnić kodowanie znaków od samego sortowania. Kodowanie opisuje sposób reprezentowania znaków w pamięci i podczas zapisu, natomiast Collation określa szerszy zestaw zasad interpretacji tekstu. W nowszych konfiguracjach często spotyka się ustawienia oparte na Unicode, ponieważ pozwalają przechowywać wiele alfabetów oraz znaki specjalne bez konieczności tworzenia osobnych rozwiązań dla każdego języka. Samo użycie typu Collation a porównywanie i kolejność wynikówNajbardziej widoczny efekt ustawienia Collation pojawia się podczas porównywania tekstu. W nazwie ustawienia mogą występować oznaczenia informujące o czułości na wielkość liter, akcenty, szerokość znaków lub warianty znaków japońskich. Przykładowo, konfiguracja niewrażliwa na wielkość liter może uznać zapis „Warszawa” i „warszawa” za równoważny w warunku porównania. Przy konfiguracji wrażliwej na wielkość liter takie wartości mogą zostać rozdzielone. Podobna zależność dotyczy znaków diakrytycznych. W określonych ustawieniach tekst zawierający „a” może być porównywany inaczej niż tekst zawierający „ą”, podczas gdy w innym wariancie reguł różnica ta może mieć mniejsze znaczenie dla porównania. Nie należy zakładać, że kolejność alfabetyczna znana z jednego języka będzie identyczna w każdym środowisku. Sortowanie wartości zależy od zasad językowych zapisanych w Collation, a nie tylko od kodu znaków. Ustawienie może być przypisane na kilku poziomach: całej instancji, konkretnej bazy danych, kolumny, wyrażenia lub pojedynczej operacji. Domyślna reguła bazy jest stosowana tam, gdzie nie określono bardziej szczegółowej wartości. Kolumna może jednak mieć własne ustawienie, a zapytanie może wymusić wybraną regułę przez użycie klauzuli Różne ustawienia Collation mają także znaczenie dla indeksów. Jeżeli porównanie tekstu wymaga przekształcenia wartości do innego porządku, optymalizator może nie wykorzystać indeksu w tak efektywny sposób, jak przy zgodnych regułach. W dużych tabelach może to prowadzić do dłuższego odczytu danych. Z tego powodu wybór Collation powinien być elementem projektu struktury danych, a nie przypadkową decyzją podejmowaną dopiero po wystąpieniu błędu. Kodowanie i sortowanie przy łączeniu danychProblemy z Collation często wychodzą na jaw podczas łączenia tabel. Gdy dwie kolumny tekstowe mają różne reguły porównywania, warunek Rozwiązaniem bywa jawne wskazanie reguły dla konkretnego porównania, na przykład poprzez konstrukcję w rodzaju Warto też zwrócić uwagę na operacje wykonywane na tabelach tymczasowych. Ich kolumny tekstowe mogą dziedziczyć ustawienia z innego poziomu niż tabela użytkownika, dlatego prosty fragment kodu testowany w jednej bazie może zachowywać się inaczej po uruchomieniu w innej. Szczególnej ostrożności wymagają procedury wykorzystujące dane z wielu baz, importy z plików oraz mechanizmy synchronizujące informacje między odrębnymi źródłami. Konflikt Collation nie zawsze objawia się błędem. Czasami zapytanie wykonuje się poprawnie, lecz zwraca kolejność, liczbę grup albo dopasowania inne od oczekiwanych. Dotyczy to zwłaszcza wyszukiwania nazw, adresów, identyfikatorów tekstowych i danych wprowadzanych przez użytkowników. Przy analizie wyniku należy więc sprawdzić nie tylko samą treść wartości, lecz także ustawienie kolumn uczestniczących w porównaniu. Collation w codziennym projektowaniu aplikacjiPrzy projektowaniu tabel należy wcześniej określić, jakie języki będą obsługiwane, czy rozróżnianie wielkości liter ma znaczenie oraz czy znaki diakrytyczne powinny być traktowane jako różne. Dla nazw osób, miejsc i produktów zwykle istotna jest przyjazna obsługa lokalnego alfabetu. Dla kodów, loginów, identyfikatorów technicznych lub tokenów wymagana może być ścisła zgodność znak po znaku. Te dwa rodzaje danych nie zawsze powinny korzystać z identycznych reguł. Należy unikać mieszania typów tekstowych bez wyraźnej potrzeby. Typy oparte na Unicode są właściwe tam, gdzie dane mogą zawierać znaki spoza podstawowego alfabetu łacińskiego. Przy imporcie danych trzeba sprawdzić, czy plik źródłowy, narzędzie pośredniczące i kolumna docelowa używają zgodnego sposobu reprezentacji. Nieprawidłowe dopasowanie może powodować zastępowanie znaków symbolami zastępczymi, utratę akcentów albo błędne wyniki wyszukiwania. Dobrym zwyczajem jest dokumentowanie ustawienia Collation dla najważniejszych baz i kolumn. Warto zapisać, jaka reguła obowiązuje domyślnie, które kolumny mają wyjątki i z jakiego powodu wybrano określoną czułość na wielkość liter lub akcenty. Taka informacja ułatwia późniejsze przenoszenie danych, tworzenie środowisk testowych i analizę różnic między instalacjami. Przed zmianą ustawienia na istniejącej kolumnie należy wykonać kopię danych i przeanalizować indeksy, ograniczenia oraz zależności w kodzie aplikacji. Zmiana może wpłynąć na unikalność wartości. Dwie wartości wcześniej uznawane za różne mogą po zmianie zostać potraktowane jako identyczne, co może ujawnić konflikt w indeksie unikalnym. Z kolei zaostrzenie reguł może sprawić, że wyszukiwanie przestanie znajdować wcześniejsze odpowiedniki. Kiedy zgłosić problem z kodowaniem i sortowaniemDo analizy warto przystąpić wtedy, gdy wyszukiwanie nie odnajduje wartości mimo pozornej zgodności, sortowanie nazw wygląda niezgodnie z regułami języka, pojawia się konflikt Collation przy łączeniu tabel albo importowane znaki są wyświetlane nieprawidłowo. Zgłoszenia wymagają również sytuacje, w których wyniki różnią się między środowiskiem testowym a produkcyjnym, a także przypadki nagłego spadku wydajności zapytań tekstowych po migracji danych. Przed przekazaniem sprawy warto przygotować fragment zapytania, przykładowe wartości, nazwy typów kolumn oraz informację o tym, na jakim poziomie ustawiono Collation. Pomocne jest również wskazanie, czy problem dotyczy porównania, sortowania, grupowania, indeksu, importu czy wyświetlania znaków. Tak zebrany materiał pozwala odróżnić błąd ustawień bazy od problemu po stronie aplikacji, sterownika lub pliku źródłowego. W sprawach związanych ze sprzętem, na którym działa środowisko używane do pracy z bazami, można skontaktować się z firmą Warszawskie Pogotowie Komputerowe 24/7. Sama analiza ustawień Collation pozostaje zadaniem administracyjnym lub programistycznym, natomiast sprawna diagnoza komputera może pomóc wykluczyć problemy z nośnikiem danych, pamięcią, systemem operacyjnym albo lokalną konfiguracją środowiska. Najbezpieczniejsze podejście polega na rozdzieleniu trzech obszarów: sposobu zapisu znaków, reguł ich porównywania oraz kolejności prezentowania wyników. Dopiero sprawdzenie wszystkich trzech elementów pozwala poprawnie ocenić, czy źródłem problemu jest kodowanie, Collation, struktura zapytania czy sposób działania aplikacji. |