테이블 형식 모델의 문자열 저장소 및 데이터 정렬

테이블 형식 모델에서 문자열(텍스트 값)은 고도로 압축된 형식으로 저장되며, 이러한 압축으로 인해 전체 또는 부분 문자열을 검색할 때 예기치 않은 결과를 얻게 될 수 있습니다. 또한 문자열 로캘 및 데이터 정렬은 가장 가까운 부모 개체에서 계층적으로 상속되므로 문자열 언어가 명시적으로 정의되어 있지 않은 경우 각 문자열이 저장되는 방식과 문자열이 고유한지 아니면 부모 데이터 정렬에 의해 정의된 유사 문자열과 혼합되는지는 부모의 로캘 및 데이터 정렬에 따라 달라질 수 있습니다.

이 항목에서는 문자열 압축 및 저장 메커니즘에 대해 설명하고 테이블 형식 모델에서 데이터 정렬 및 언어가 텍스트 수식 결과에 미치는 영향을 보여 주는 예를 제공합니다.

저장소

테이블 형식 모델에서는 모든 데이터가 메모리 사용을 최적화할 수 있도록 고도로 압축됩니다. 따라서 어휘적으로 동일한 것으로 간주될 수 있는 모든 문자열이 한 번만 저장됩니다. 문자열의 첫 번째 인스턴스는 정식 표현으로 사용되며 이후 해당하는 각 문자열은 첫 번째 발생한 인스턴스와 동일한 압축된 값으로 인덱싱됩니다.

가장 중요한 질문은 어휘적으로 동일한 문자열을 구성하는 요소가 무엇이냐는 것입니다. 동일한 단어로 간주할 수 있는 두 문자열은 어휘적으로 동일한 것으로 간주됩니다. 예를 들어 영어로 violin이라는 단어를 사전에서 검색할 경우 사전의 편집 정책에 따라 Violin 또는 violin 항목을 찾을 수 있지만, 일반적으로 두 단어는 모두 동일한 것으로 간주되며 대/소문자 차이는 무시됩니다. 테이블 형식 모델에서 두 문자열이 어휘적으로 동일한지 여부를 결정하는 요소는 편집 정책이나 사용자 선호도가 아니라 해당 열에 할당된 로캘 및 데이터 정렬 순서입니다.

따라서 대문자와 소문자를 동일하게 처리할지 다르게 처리할지는 데이터 정렬과 로캘에 따라 결정됩니다. 해당 로캘 내의 특정 단어에 대해 특정 열에서 첫 번째로 발생하는 단어가 해당 단어의 정식 표현으로 처리되고 해당 문자열은 압축되지 않은 형식으로 저장됩니다. 다른 모든 문자열은 첫 번째 발생한 단어를 기준으로 테스트되며, 동일성 테스트 조건을 충족하는 문자열은 첫 번째 발생한 단어의 압축된 값에 할당됩니다. 나중에 압축된 값이 검색될 때 이 값은 첫 번째 발생한 문자열의 압축되지 않은 값을 사용하여 표현됩니다.

예를 통해 이 과정을 명확하게 이해할 수 있습니다. 다음의 "Classification - English" 열은 식물과 나무에 대한 정보를 포함하는 테이블에서 추출한 것입니다. 분류 열에서는 각 식물(식물 이름은 여기에 표시되지 않음)에 대한 일반 범주를 보여 줍니다.

Classification - English

trEE

PlAnT

TREE

PLANT

Plant

Tree

plant

tReE

tree

pLaNt

tREE

대/소문자와 악센트 사용이 일관되지 않은 것은 데이터의 원본이 다양하기 때문일 수 있으며 관계형 데이터베이스에서는 이러한 차이가 있는 그대로 저장됩니다. 그러나 이러한 값은 대/소문자만 다를 뿐 대체적으로는 Plant 또는 Tree 중 하나에 해당합니다.

미국 영어의 기본 데이터 정렬과 정렬 순서를 사용하는 테이블 형식 모델로 이러한 값을 로드할 경우 대/소문자는 중요하지 않으므로 전체 열에 대해 두 개의 값만 저장됩니다.

Classification - English

trEE

PlAnT

모델에서 Classification – English 열을 사용할 경우 식물 분류를 표시할 때는 항상 대/소문자의 사용이 다양한 원래 값이 아니라 첫 번째 인스턴스만 표시됩니다. 이 데이터 정렬 및 로캘에서는 tree의 대문자 및 소문자 변형이 모두 동일한 것으로 간주되기 때문입니다. 따라서 한 문자열만 보관되며 시스템에서 발견한 첫 번째 문자열 인스턴스가 저장 인스턴스가 됩니다.

주의 사항주의

사용자가 판단하는 올바른 형태에 따라 첫 번째로 저장할 문자열을 정의할 수도 있지만 이 과정은 매우 어려울 수 있습니다. 모든 값이 동일한 것으로 간주될 경우 엔진에서 처음 처리될 행을 미리 결정할 수 있는 간단한 방법은 없습니다. 대신 표준 값을 설정해야 하는 경우에는 모델을 로드하기 전에 모든 문자열을 정리해야 합니다.

로캘 및 데이터 정렬 순서

문자열(텍스트 값)을 비교할 때 동일성을 정의하는 요소는 일반적으로 해당 문자열이 해석되는 방식에 대한 culture 특성입니다. 일부 culture에서는 문자의 악센트나 대/소문자에 따라 문자열의 의미가 완전히 달라질 수 있으므로, 특정 언어 또는 영역에서 동일성을 결정할 때는 대개 이러한 차이가 고려됩니다.

일반적으로 사용 중인 컴퓨터는 이미 사용자에게 필요한 culture 및 언어 동작에 맞게 구성되어 있으므로 텍스트 값 정렬 및 비교와 같은 문자열 작업이 예상대로 작동합니다. 언어별 동작을 제어하는 설정은 Windows의 국가 및 언어 설정을 통해 정의됩니다. 응용 프로그램에서는 이 설정을 읽고 그에 따라 동작을 변경합니다. 일부 응용 프로그램에는 사용자가 응용 프로그램의 culture 동작이나 문자열 비교 방식을 변경할 수 있는 기능이 있는 경우도 있습니다.

테이블 형식 model 데이터베이스를 만들 때 데이터베이스는 기본적으로 이러한 culture 및 언어 설정을 언어 식별자 및 데이터 정렬의 형태로 상속합니다.

  • 언어 식별자는 문자열에 사용할 문자 집합을 해당 culture에 따라 정의합니다.

  • 데이터 정렬은 문자 순서와 문자 일치성을 정의합니다.

언어 식별자는 언어를 식별할 뿐 아니라 해당 언어가 사용되는 국가 또는 지역도 식별한다는 점에 주의해야 합니다. 각 언어 식별자에는 기본 데이터 정렬도 지정되어 있습니다. 언어 식별자에 대한 자세한 내용은 Locale IDs Assigned by Microsoft를 참조하십시오. 수동으로 값을 삽입할 때는 10진수 LCID 열에서 올바른 ID를 확인할 수 있습니다. SQL의 데이터 정렬 개념에 대한 자세한 내용은 COLLATE(Transact-SQL)ms184391(v=sql.110).md를 참조하십시오. Windows 데이터 정렬 이름의 데이터 정렬 지정자 및 비교 스타일에 대한 자세한 내용은 Windows 데이터 정렬 이름(Transact-SQL)을 참조하십시오. SQL Server 데이터 정렬 이름(Transact-SQL) 항목에서는 Windows 데이터 정렬 이름과 SQL에 사용되는 이름 간의 매핑을 제공합니다.

테이블 형식 model 데이터베이스를 만든 후 모델의 모든 새 개체는 데이터베이스 특성에서 언어 및 데이터 정렬 특성을 상속합니다. 이는 모든 개체에 대해 적용됩니다. 상속 경로는 개체에서 시작되어, 부모에서 상속할 언어 및 데이터 정렬 특성을 확인하고, 특성을 찾을 수 없는 경우 최상위 수준까지 계속 진행하여 데이터베이스 수준에서 언어 및 데이터 정렬 특성을 찾는 방식으로 진행됩니다. 즉, 개체의 언어 및 데이터 정렬 특성을 지정하지 않을 경우 기본적으로 개체는 가장 가까운 부모의 특성을 상속합니다.

열의 경우 생성 시 다음 규칙에 따라 언어 및 데이터 정렬 특성이 상속됩니다.

  1. 부모 차원 개체에서 언어 및 데이터 정렬 특성이 검색됩니다. 두 값이 모두 있으면 두 값이 열 특성에 복사되고, 한 값만 있으면 다른 값은 기존 값에서 유추되어 두 값이 모두 할당됩니다. 두 값이 모두 없는 경우에는 다음 단계로 진행합니다.

  2. 1단계에 설명된 차원에 대한 프로세스와 동일한 프로세스를 사용하여 데이터베이스 개체가 검색됩니다. 특성을 찾지 못하면 다음 단계로 진행합니다.

  3. 1단계에 설명된 차원에 대한 프로세스와 동일한 프로세스를 사용하여 서버 개체가 검색됩니다. 특성을 찾지 못하면 열에서는 Windows 언어 식별자를 사용하고 해당 값에서 데이터 정렬 특성을 유추합니다.

일반적으로 원본 데이터베이스의 언어 식별자 및 데이터 정렬 순서는 테이블 형식 모델 열에서 값이 저장되는 방식에 거의 영향을 주지 않는다는 점을 주의해야 합니다. 원본 데이터베이스에서 요청된 값을 변환하거나 필터링하는 경우는 예외입니다.