Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Строки (текстовые значения) хранятся в формате с большим сжатием в табличных моделях. В силу сжатия при извлечении полных или частичных строк можно получить неверные результаты. Кроме того, поскольку языковой стандарт и параметры сортировки строки наследуются в иерархическом порядке у ближайшего родительского объекта, если язык строки не определен явным образом, локаль и параметры сортировки родительского элемента могут повлиять на то, как каждая строка хранится, является строка уникальной или объединена с похожими строками согласно определению параметров сортировки родительского элемента.
В этом разделе содержится описание механизма, с помощью которого сжимаются и сохраняются строки, а также примеры того, как параметры сортировки и язык влияют на результаты текстовых формул в табличных моделях.
Хранение
В табличных моделях все данные сильно сжаты для того, чтобы занимать меньше места в памяти. Как следствие, все строки, которые могут считаться лексически эквивалентными, сохраняются только один раз. Первый экземпляр строки используется в качестве канонического представления, после которой каждая эквивалентная строка индексируется с тем же сжатым значением, что и первый экземпляр.
Ключевой вопрос следующий: что такое лексически эквивалентная строка? Две строки считаются лексически эквивалентными, если они могут рассматриваться как одно и то же слово. Например, если искать в словаре русского языка слово скрипка, можно найти запись Скрипка или скрипка, в зависимости от политики редактирования словаря, однако оба слова считаются эквивалентными, и разница заглавной или прописной буквы не учитывается. В табличной модели коэффициент, который определяет, являются ли две строки лексически эквивалентными, не является политикой редактирования или даже предпочтением пользователя, он представляет собой локаль и порядок сортировки, заданные столбцу.
Таким образом, решение о том, является ли верхний и нижний регистр отличием двух слов, зависит от параметров сортировки и локали. Для любого слова локали первый экземпляр слова, находящийся в определенном столбце, служит каноническим представлением слова и строки, которая хранится в несжатом формате. Все остальные строки проходят проверку относительно первого экземпляра, и если они не проходят тест на соответствие, то приписываются к сжатому значению первого экземпляра. В дальнейшем при извлечении сжатых значений они будут представлены с помощью несжатого значения первого экземпляра строки.
Следующий пример позволяет понять, как это работает. Следующий столбец «Классификация ― английский» был взят из таблицы, содержащей сведения о растениях и деревьях. Для каждого растения (имена растений не показаны) столбец классификации показывает общую категорию растения.
Классификация ― английский |
|---|
дереВО |
РасТениЕ |
ДЕРЕВО |
РАСТЕНИЕ |
Растение |
Дерево |
растение |
дЕрЕвО |
дерево |
рАстенИе |
дЕРЕВО |
Возможно, данные были получены из многих различных источников, поэтому регистр и использование диакритических знаков было неверным и реляционная база данных сохранила эти отличия как есть. Однако в целом это либо значения Растение, либо Дерево просто с разным регистром.
Когда эти значения будут загружены в табличную модель, которая использует сортировку по умолчанию для американского английского, регистр не будет важным, поэтому будут сохранены только два значения для всего столбца:
Классификация ― английский |
|---|
дереВО |
РасТениЕ |
При использовании столбца Классификация ― английский в модели каждый раз во время отображения классификации слова «растение» будут отображены не исходные значения с различным использованием верхнего и нижнего регистра, а только первый экземпляр. Причина в том, что все варианты верхнего и нижнего регистров слова дерево считаются эквивалентными в этой сортировке и локали. Таким образом, была оставлена только одна строка, и только первый экземпляр этой строки, найденный системой, будет сохранен.
Внимание! |
|---|
Можно решить, какая строка будет сохранена первой, в соответствии с тем, какая строка признана верной, однако реализовать это будет сложно. Не существует простых путей для определения того, какая строка должна быть обработана ядром первой, если учитывать, что все значения считаются одинаковыми. Вместо этого, если необходимо задать стандартное значение, очистите все строки, прежде чем загружать модель. |
Локаль и порядок сортировки
При сравнении строк (текстовых значений) эквивалентность определяется культурным аспектом интерпретации этих строк. В некоторых странах диакритический знак или верхний регистр символа может полностью изменить значение строки. Поэтому обычно такие отличия учитываются при определении эквивалентности для какого-либо языка или региона.
Обычно компьютер уже настроен и соответствует определенному лингвистическому стилю, поэтому строковые операции, такие как сортировка и сравнение текстовых значений, выполняются в соответствии с ожиданиями. Параметры, определяющие зависящее от языка поведение, определяются в настройках Языки и региональные стандарты в Windows. Приложения считывают эти параметры и изменяют свое поведение соответствующим образом. В некоторых случаях приложение может иметь функцию, которая позволит изменить культурное поведение приложения или способ сравнения строк.
При создании табличных шаблонов баз данных по умолчанию база данных наследует эти культурные и лингвистические параметры в форме языкового идентификатора и параметров сортировки.
Языковой идентификатор определяет набор символов, которые будут использованы для сравнения строк в соответствии с языковой средой.
Параметры сортировки определяют порядок символов и их эквивалентность.
Следует отметить, что языковой идентификатор не только определяет язык, но также и страну или регион, где этот язык используется. Каждый языковой идентификатор также имеет определение параметров сортировки по умолчанию. Дополнительные сведения о языковых идентификаторах см. в разделе Locale IDs Assigned by Microsoft. При ручной вставке значения можно использовать столбец LCID Dec для получения нужного идентификатора. Дополнительные сведения об SQL-концепциях сортировки см. в разделе COLLATE (Transact-SQL)ms184391(v=sql.110).md. Дополнительные сведения об обозначениях параметров сортировки и стилях сравнения для имен параметров сортировки в Windows см. в разделе Имя параметров сортировки Windows (Transact-SQL). Тема Имя параметров сортировки SQL Server (Transact-SQL) сопоставляет имена параметров сортировки Windows с именами, используемыми для SQL.
После создания табличных шаблонов баз данных все новые объекты в модели унаследуют атрибуты языка и сортировки базы данных. Это верно для всех объектов. Путь наследования начинается от объекта, находит родительский объект для определения наследуемых атрибутов языка и параметры сортировки, если таковые не найдены, продолжает движение вверх и находит атрибуты языка и сортировки на уровне базы данных. Другими словами, если не указать атрибуты языка и параметры сортировки для объекта, то по умолчанию объект унаследует атрибуты своего ближайшего родительского элемента.
Для столбцов атрибуты языка и параметры сортировки наследуются при создании в соответствии со следующими правилами.
Выполняется поиск атрибутов языка и параметров сортировки в родительском объекте измерения. Если существуют оба значения, они копируются в атрибуты столбца. Если существует только одно значение, второе будет вычислено, после чего оба значения будут присвоены. Если оба значения не найдены, выполняется переход к следующему уровню.
Поиск объекта базы данных осуществляется с использованием того же процесса, который был описан в шаге 1 для измерений. Если атрибуты не найдены, выполняется переход к следующему шагу.
Поиск серверного объекта выполняется с помощью того же процесса, который был описан в шаге 1 для измерений. Если атрибуты не найдены, столбец использует языковой идентификатор Windows и получает атрибут параметра сортировки от этого значения.
Следует отметить, что обычно языковой идентификатор и порядок параметра сортировки в базе данных-источнике практически не влияет на способ хранения значений в столбце табличной модели. Исключение возникает, если база данных-источник преобразует или фильтрует запрошенные значения.
Внимание!