Babelfish for Aurora PostgreSQL의 데이터 정렬 이해
Babelfish를 사용하여 Aurora PostgreSQL DB 클러스터를 생성하는 경우 데이터의 데이터 정렬을 선택하게 됩니다. 데이터 정렬은 주어진 문자 언어로 텍스트 또는 문자를 생성하는 정렬 순서와 비트 패턴을 지정합니다. 데이터 정렬에는 지정된 비트 패턴 세트에 대한 데이터를 비교하는 규칙이 포함됩니다. 데이터 정렬은 현지화와 관련이 있습니다. 서로 다른 로캘은 문자 매핑, 정렬 순서 등에 영향을 줍니다. 데이터 정렬 속성은 다양한 데이터 정렬의 이름에 반영됩니다. 속성에 대한 자세한 내용은 Babelfish collation attributes table 섹션을 참조하세요.
Babelfish는 SQL Server 데이터 정렬을 Babelfish에서 제공하는 유사한 데이터 정렬에 매핑합니다. Babelfish는 문화적으로 민감한 문자열 비교 및 정렬 순서를 사용하여 유니코드 데이터 정렬을 미리 정의합니다. 또한 Babelfish는 SQL Server DB에 있는 데이터 정렬을 가장 r근접하게 일치하는 Babelfish 데이터 정렬로 변환하는 방법을 제공합니다. 로캘별 데이터 정렬은 다양한 언어 및 지역에 대해 제공됩니다.
일부 데이터 정렬은 클라이언트 측 인코딩에 해당하는 코드 페이지를 지정합니다. Babelfish는 각 출력 열의 데이터 정렬에 따라 서버 인코딩에서 클라이언트 인코딩으로 자동 변환됩니다.
Babelfish는 Babelfish supported collations table에 나열된 데이터 정렬을 지원합니다. Babelfish는 SQL Server 데이터 정렬을 Babelfish에서 제공하는 유사한 데이터 정렬에 매핑합니다.
Babelfish는 International Components for Unicode(ICU) 데이터 정렬 라이브러리 버전 153.80을 사용합니다. ICU 데이터 정렬의 자세한 내용은 ICU 설명서의 데이터 정렬
주제
데이터 정렬 및 로캘을 제어하는 DB 클러스터 파라미터
다음 파라미터는 데이터 정렬 동작에 영향을 줍니다.
- babelfishpg_tsql.default_locale
이 파라미터는 데이터 정렬에 사용되는 기본 로캘을 지정합니다. 또한, Babelfish collation attributes table에 나열된 속성과 함께 사용되어 특정 언어 및 지역에 대한 데이터 정렬을 사용자 지정합니다. 이 파라미터의 기본값은
en-US
입니다.기본 로캘은 BBF로 시작하는 모든 Babelfish 데이터 정렬 이름과 Babelfish 데이터 정렬에 매핑되는 모든 SQL Server 데이터 정렬에 적용됩니다. 기존 Babelfish DB 클러스터의 이 파라미터에 대한 설정을 변경해도 기존 데이터 정렬의 로캘에는 영향을 주지 않습니다. 데이터 정렬 목록은 Babelfish supported collations table 섹션을 참조하세요.
- babelfishpg_tsql.server_collation_name
이 파라미터는 서버(Aurora PostgreSQL DB 클러스터 인스턴스)와 데이터베이스의 기본 데이터 정렬을 지정합니다. 기본값은
sql_latin1_general_cp1_ci_as
입니다. T-SQL에서 서버 데이터 정렬이 식별자를 비교하는 방법을 결정하므로server_collation_name
은CI_AS
데이터 정렬이어야 합니다.Babelfish DB 클러스터를 생성할 때 선택 가능한 목록에서 데이터 정렬 이름(Collation name)을 선택합니다. 여기에는 Babelfish supported collations table에 나열된 데이터 정렬이 포함됩니다. Babelfish 데이터베이스가 생성된 후
server_collation_name
을 수정하지 마세요.
Babelfish for Aurora PostgreSQL DB 클러스터를 생성할 때 선택하는 설정은 이러한 파라미터의 클러스터와 연결된 DB 클러스터 파라미터 그룹에 저장되고 데이터 정렬 동작을 설정합니다.
Babelfish의 결정적 및 비결정적 데이터 정렬
Babelfish는 결정적이고 비결정적인 데이터 정렬을 지원합니다.
결정적 데이터 정렬은 동일한 바이트 시퀀스를 가진 문자를 동등하게 평가합니다. 이는
x
및X
가 결정적 데이터 정렬에서는 동일하지 않다는 뜻입니다. 결정적 데이터 정렬에는 대소문자 구분(CS) 및 악센트 구분(AS)이 적용됩니다.비결정적 데이터 정렬은 똑같이 일치할 필요가 없습니다. 비결정적 데이터 정렬은
x
및X
를 동일한 것으로 확인합니다. 비결정적 데이터 정렬은 대소문자 구분하지 않음(CI)이나 악센트 구분하지 않음(AI) 또는 둘 다가 적용됩니다.
다음 테이블에서 비결정적 데이터 정렬을 사용할 때 Babelfish와 PostgreSQL 간의 동작 차이점을 확인할 수 있습니다.
Babelfish | PostgreSQL |
---|---|
CI_AS 데이터 정렬에 대한 LIKE 절을 지원합니다. |
비결정적 데이터 정렬에서는 LIKE 절을 지원하지 않습니다. |
Babelfish 버전 4.2.0의 다음 AI 데이터 정렬에서만 LIKE 절을 지원합니다.
|
비결정적 데이터 정렬에서는 LIKE 절을 지원하지 않습니다. |
SQL Server 및 PostgreSQL과 비교하여 Babelfish의 기타 제한 사항 및 동작 차이점에 대한 목록은 데이터 정렬 제한 및 동작 차이점 섹션을 참조하세요.
Babelfish와 SQL Server는 다음 테이블과 같이 데이터 정렬 속성을 설명하는 데이터 정렬에 대한 명명 규칙을 따릅니다.
속성 | 설명 |
---|---|
AI |
악센트 구분하지 않음. |
AS |
악센트 구분. |
BIN2 |
BIN2는 코드 포인트 순서대로 데이터를 정렬하도록 요청합니다. 유니코드 코드 포인트 순서는 UTF-8, UTF-16 및 UCS-2 인코딩의 문자 순서와 동일합니다. 코드 포인트 순서는 빠른 결정적 데이터 정렬입니다. |
CI |
대소문자 구분하지 않음. |
CS |
대소문자 구분. |
PREF |
소문자 앞에 대문자를 정렬하려면 PREF 데이터 정렬을 사용합니다. 비교가 대소문자를 구분하지 않는 경우 다른 구분이 없으면 대문자 버전은 소문자 버전 앞에 정렬됩니다. ICU 라이브러리는 PREF는 |
Babelfish의 데이터베이스 수준에서 지원되는 데이터 정렬
다음 데이터 정렬은 Babelfish의 데이터베이스 수준에서 지원됩니다.
bbf_unicode_bin2
bbf_unicode_cp1_ci_ai
bbf_unicode_cp1_ci_as
bbf_unicode_cp1250_ci_ai
bbf_unicode_cp1250_ci_as
bbf_unicode_cp1257_ci_ai
bbf_unicode_cp1257_ci_as
estonian_ci_ai
estonian_ci_as
finnish_swedish_ci_ai
finnish_swedish_ci_as
french_ci_ai
french_ci_as
latin1_general_bin2
latin1_general_ci_ai
latin1_general_ci_as
latin1_general_90_bin2
latin1_general_100_bin2
latin1_general_140_bin2
modern_spanish_ci_ai
modern_spanish_ci_as
polish_ci_ai
polish_ci_as
sql_latin1_general_cp1_ci_ai
sql_latin1_general_cp1_ci_as
sql_latin1_general_cp1250_ci_as
sql_latin1_general_cp1251_ci_as
sql_latin1_general_cp1257_ci_as
traditional_spanish_ci_ai
traditional_spanish_ci_as
참고
데이터베이스 수준에서 다른 데이터 정렬을 사용하려면 서버 수준 데이터 정렬과 일치하는지 확인합니다. 자세한 내용은 Babelfish의 서버 및 객체 데이터 정렬 단원을 참조하세요.
Babelfish의 서버 및 객체 데이터 정렬
다음 데이터 정렬을 서버 데이터 정렬 또는 객체 데이터 정렬로 사용합니다.
데이터 정렬 ID | 참고 |
---|---|
bbf_unicode_general_ci_as |
대소문자를 구분하지 않는 비교와 LIKE 연산자를 지원합니다. |
bbf_unicode_cp1_ci_as |
비결정적 데이터 정렬 |
bbf_unicode_CP1250_ci_as |
비결정적 데이터 정렬 |
bbf_unicode_CP1251_ci_as |
비결정적 데이터 정렬 |
bbf_unicode_cp1253_ci_as |
비결정적 데이터 정렬 |
bbf_unicode_cp1254_ci_as |
비결정적 데이터 정렬 |
bbf_unicode_cp1255_ci_as |
비결정적 데이터 정렬 |
bbf_unicode_cp1256_ci_as |
비결정적 데이터 정렬 |
bbf_unicode_cp1257_ci_as |
비결정적 데이터 정렬 |
bbf_unicode_cp1258_ci_as |
비결정적 데이터 정렬 |
bbf_unicode_cp874_ci_as |
비결정적 데이터 정렬 |
sql_latin1_general_cp1250_ci_as |
비결정적 싱글바이트 문자 인코딩 |
sql_latin1_general_cp1251_ci_as |
비결정적 데이터 정렬 |
sql_latin1_general_cp1_ci_as |
비결정적 데이터 정렬 |
sql_latin1_general_cp1253_ci_as |
비결정적 데이터 정렬 |
sql_latin1_general_cp1254_ci_as |
비결정적 데이터 정렬 |
sql_latin1_general_cp1255_ci_as |
비결정적 데이터 정렬 |
sql_latin1_general_cp1256_ci_as |
비결정적 데이터 정렬 |
sql_latin1_general_cp1257_ci_as |
비결정적 데이터 정렬 |
sql_latin1_general_cp1258_ci_as |
비결정적 데이터 정렬 |
chinese_prc_ci_as |
비결정적 데이터 정렬은 중국어(PRC)를 지원합니다. |
cyrillic_general_ci_as |
비결정적 데이터 정렬은 키릴어를 지원합니다. |
finnish_swedish_ci_as |
비결정적 데이터 정렬은 핀란드어를 지원합니다. |
french_ci_as |
비결정적 데이터 정렬은 프랑스어를 지원합니다. |
japanese_ci_as |
비결정적 데이터 정렬은 일본어를 지원합니다. Babelfish 2.1.0 이상 릴리스에서 지원됩니다. |
korean_wansung_ci_as |
비결정적 데이터 정렬은 한국어를 지원합니다(사전 정렬 사용). |
latin1_general_ci_as |
비결정적 데이터 정렬은 라틴 문자를 지원합니다. |
modern_spanish_ci_as |
비결정적 데이터 정렬은 현대 스페인어를 지원합니다. |
polish_ci_as |
비결정적 데이터 정렬은 폴란드어를 지원합니다. |
thai_ci_as |
비결정적 데이터 정렬은 태국어를 지원합니다. |
traditional_spanish_ci_as |
비결정적 데이터 정렬은 스페인어(전통에 따라 정렬)를 지원합니다. |
turkish_ci_as |
비결정적 데이터 정렬은 터키어를 지원합니다. |
ukrainian_ci_as |
비결정적 데이터 정렬은 우크라이나어를 지원합니다. |
vietnamese_ci_as |
비결정적 데이터 정렬은 베트남어를 지원합니다. |
다음 데이터 정렬을 객체 데이터 정렬로 사용할 수 있습니다.
언어 | 결정적 옵션 | 비결정적 옵션 |
---|---|---|
아랍어 |
Arabic_CS_AS |
Arabic_CI_AS Arabic_CI_AI |
아랍어 문자 |
BBF_Unicode_CP1256_CS_AS BBF_Unicode_Pref_CP1256_CS_AS |
BBF_Unicode_CP1256_CI_AI BBF_Unicode_CP1256_CS_AI |
바이너리 |
latin1_general_bin2 BBF_Unicode_BIN2 |
– |
라틴 문자를 사용하는 중부 유럽 및 동유럽 언어 |
BBF_Unicode_CP1250_CS_AS BBF_Unicode_Pref_CP1250_CS_AS |
BBF_Unicode_CP1250_CI_AI BBF_Unicode_CP1250_CS_AI |
중국어 |
Chinese_PRC_CS_AS |
Chinese_PRC_CI_AS Chinese_PRC_CI_AI |
키릴 문자_일반 |
Cyrillic_General_CS_AS |
Cyrillic_General_CI_AS Cyrillic_General_CI_AI |
키릴 문자 |
BBF_Unicode_CP1251_CS_AS BBF_Unicode_Pref_CP1251_CS_AS |
BBF_Unicode_CP1251_CI_AI BBF_Unicode_CP1251_CS_AI |
에스토니아어 |
Estonian_CS_AS |
Estonian_CI_AS Estonian_CI_AI |
에스토니아어, 라트비아어, 리투아니아어 |
BBF_Unicode_CP1257_CS_AS BBF_Unicode_Pref_CP1257_CS_AS |
BBF_Unicode_CP1257_CI_AI BBF_Unicode_CP1257_CS_AI |
필란드어_스웨덴어 |
Finnish_Swedish_CS_AS |
Finnish_Swedish_CI_AS Finnish_Swedish_CI_AI |
프랑스어 |
French_CS_AS |
French_CI_AS French_CI_AI |
그리스어 |
Greek_CS_AS |
Greek_CI_AS Greek_CI_AI |
히브리어 |
BBF_Unicode_CP1255_CS_AS BBF_Unicode_Pref_CP1255_CS_AS Hebrew_CS_AS |
BBF_Unicode_CP1255_CI_AI BBF_Unicode_CP1255_CS_AI Hebrew_CI_AS Hebrew_CI_AI |
일본어(Babelfish 2.1.0 이상) |
Japanese_CS_AS |
Japanese_CI_AI Japanese_CI_AS |
한국어_완성형 |
Korean_Wamsung_CS_AS |
Korean_Wamsung_CI_AS Korean_Wamsung_CI_AI |
코드 페이지 CP1252의 라틴 문자 |
latin1_general_cs_as BBF_Unicode_General_CS_AS BBF_Unicode_General_Pref_CS_AS BBF_Unicode_Pref_CP1_CS_AS BBF_Unicode_CP1_CS_AS |
latin1_general_ci_as latin1_general_ci_ai latin1_general_cs_ai BBF_Unicode_General_CI_AI BBF_Unicode_General_CS_AI BBF_Unicode_CP1_CI_AI BBF_Unicode_CP1_CS_AI |
현대 그리스어 |
BBF_Unicode_CP1253_CS_AS BBF_Unicode_Pref_CP1253_CS_AS |
BBF_Unicode_CP1253_CI_AI BBF_Unicode_CP1253_CS_AI |
현대_스페인어 |
Modern_Spanish_CS_AS |
Modern_Spanish_CI_AS Modern_Spanish_CI_AI |
몽골어 |
Mongolian_CS_AS |
Mongolian_CI_AS Mongolian_CI_AI |
폴란드어 |
Polish_CS_AS |
Polish_CI_AS Polish_CI_AI |
태국어 |
BBF_Unicode_CP874_CS_AS BBF_Unicode_Pref_CP874_CS_AS Thai_CS_AS |
BBF_Unicode_CP874_CI_AI BBF_Unicode_CP874_CS_AI Thai_CI_AS, Thai_CI_AI |
정통_스페인어 |
Traditional_Spanish_CS_AS |
Traditional_Spanish_CI_AS Traditional_Spanish_CI_AI |
터키어 |
BBF_Unicode_CP1254_CS_AS BBF_Unicode_Pref_CP1254_CS_AS Turkish_CS_AS |
BBF_Unicode_CP1254_CI_AI BBF_Unicode_CP1254_CS_AI Turkish_CI_AS, Turkish_CI_AI |
우크라이나어 |
Ukranian_CS_AS |
Ukranian_CI_AS Ukranian_CI_AI |
베트남어 |
BBF_Unicode_CP1258_CS_AS BBF_Unicode_Pref_CP1258_CS_AS Vietnamese_CS_AS |
BBF_Unicode_CP1258_CI_AI BBF_Unicode_CP1258_CS_AI Vietnamese_CI_AS Vietnamese_CI_AI |
Babelfish의 기본 데이터 정렬 동작
이전에는 pg_catalog.default
가 정렬 가능한 데이터 형식의 기본 데이터 정렬이었습니다. 이러한 데이터 형식에 의존하는 데이터 형식 및 객체는 대/소문자 구분 데이터 정렬을 따릅니다. 이 조건은 대소문자를 구분하지 않는 데이터 정렬을 따르는 데이터 세트의 T-SQL 객체에 잠재적으로 영향을 미칩니다. Babelfish 2.3.0부터 정렬 가능한 데이터 형식(TEXT 및 NTEXT 제외)의 기본 데이터 정렬은 babelfishpg_tsql.server_collation_name
파라미터의 데이터 정렬과 동일합니다. Babelfish 2.3.0으로 업그레이드하면 DB 클러스터 생성 시 기본 데이터 정렬이 자동으로 선택되므로 눈에 띄는 영향이 없습니다.