6.6. 데이터베이스에 대한 유니코드 고려 사항
Red Hat Single Sign-On의 데이터베이스 스키마는 다음 특수 필드의 유니코드 문자열만 고려합니다.
- realms: 표시 이름, HTML 표시 이름
- 페더레이션 공급자: 표시 이름
- 사용자 이름: 사용자 이름, 이름, 성, 특성 이름 및 값
- groups: 이름, 속성 이름 및 값
- 역할: 이름
- 오브젝트 설명
그렇지 않으면 문자는 종종 8비트인 데이터베이스 인코딩에 포함된 문자로 제한됩니다. 그러나 일부 데이터베이스 시스템의 경우 유니코드 문자의 UTF-8 인코딩을 활성화하고 모든 텍스트 필드에서 전체 유니코드 문자를 사용할 수 있습니다. 종종 이는 8비트 인코딩의 경우보다 짧은 최대 문자열 길이만큼 균형을 이루는 경우가 많습니다.
일부 데이터베이스는 유니코드 문자를 처리할 수 있도록 데이터베이스 및/또는 JDBC 드라이버에 특수 설정이 필요합니다. 아래에서 데이터베이스에 대한 설정을 찾으십시오. 데이터베이스가 여기에 나열되어 있는 경우에도 데이터베이스 및 JDBC 드라이버 수준에서 UTF-8 인코딩을 올바르게 처리할 수 있습니다.
기술적으로 모든 필드에 대한 유니코드 지원의 핵심 기준은 데이터베이스가 VARCHAR 및 Cryostat 필드에 설정된 유니코드 문자 설정을 허용하는지 여부입니다. 예인 경우 일반적으로 유니코드가 필드 길이를 희생할 가능성이 높습니다. NVARCHAR 및 N 필드에서 유니코드만 지원하는 경우 모든 텍스트 필드에 대한 유니코드 지원은 Keycloak 스키마에서 CHAR VARCHAR 및 Cryostat 필드를 광범위하게 사용하므로 거의 지원되지 않습니다.
6.6.1. Oracle 데이터베이스 링크 복사링크가 클립보드에 복사되었습니다!
유니코드 문자는 적절하게 처리되면 데이터베이스가 VARCHAR 및 Cryostat 필드에서 유니코드 지원을 사용하여 생성되었습니다(예: AL32UTF8 문자 세트를 데이터베이스 문자 집합으로 사용). JDBC 드라이버에는 특별한 설정이 필요하지 않습니다.
데이터베이스 문자 집합이 유니코드가 아닌 경우 특수 필드에서 유니코드 문자를 사용하려면 연결 속성 oracle.jdbc.defaultNChar 를 true 로 설정하여 JDBC 드라이버를 구성해야 합니다. oracle.jdbc.convertNcharLiterals 연결 속성을 true 로 설정하는 것은 엄격하게 필요하지는 않지만 의미가 있을 수 있습니다. 이러한 속성은 시스템 속성 또는 연결 속성으로 설정할 수 있습니다. oracle.jdbc.defaultNChar 설정은 성능에 부정적인 영향을 미칠 수 있습니다. 자세한 내용은 Oracle JDBC 드라이버 구성 설명서를 참조하십시오.
6.6.2. Microsoft SQL Server 데이터베이스 링크 복사링크가 클립보드에 복사되었습니다!
유니코드 문자는 특수 필드에 대해서만 올바르게 처리됩니다. JDBC 드라이버 또는 데이터베이스의 특수 설정은 필요하지 않습니다.
6.6.3. MySQL 데이터베이스 링크 복사링크가 클립보드에 복사되었습니다!
유니코드 문자가 올바르게 처리되면 데이터베이스가 CREATE DATABASE 명령의 VARCHAR 및 Cryostat 필드에서 유니코드 지원을 사용하여 생성되었습니다(예: MySQL 5.5에 설정된 기본 데이터베이스 문자로 설정된 utf8 문자 집합을 사용하는 경우). utf8mb4 문자 세트는 utf8 문자 세트의 다른 스토리지 요구 사항으로 인해 작동하지 않습니다. [1]). 이 경우 바이트가 아닌 지정된 양의 문자를 수용하도록 열이 생성되므로 특수하지 않은 필드에 대한 길이 제한이 적용되지 않습니다. 데이터베이스 기본 문자 집합에서 유니코드를 저장할 수 없는 경우 특수 필드만 유니코드 값을 저장할 수 있습니다.
JDBC 드라이버 설정 측면에서 JDBC 연결 설정에 connection 속성 characterEncoding=UTF-8 을 추가해야 합니다.
6.6.4. PostgreSQL 데이터베이스 링크 복사링크가 클립보드에 복사되었습니다!
데이터베이스 문자 집합이 UTF8 인 경우 유니코드가 지원됩니다. 이 경우 유니코드 문자를 어떤 필드에서든 사용할 수 있으며, 특수하지 않은 필드에 대한 필드 길이는 감소되지 않습니다. JDBC 드라이버의 특수 설정은 필요하지 않습니다.
PostgreSQL 데이터베이스의 문자 세트는 생성 시 결정됩니다. SQL 명령을 사용하여 PostgreSQL 클러스터에 설정된 기본 문자를 확인할 수 있습니다.
show server_encoding;
show server_encoding;
기본 문자 세트가 UTF 8이 아닌 경우 다음과 같이 UTF8을 사용하여 데이터베이스를 생성할 수 있습니다.
create database keycloak with encoding 'UTF8';
create database keycloak with encoding 'UTF8';