PDF文库 - 千万精品文档,你想要的都能搜到,下载即用。

KingbaseES本地化支持手册.pdf

Ridiculous.(可笑的)32 页 288.482 KB下载文档
KingbaseES本地化支持手册.pdfKingbaseES本地化支持手册.pdfKingbaseES本地化支持手册.pdfKingbaseES本地化支持手册.pdfKingbaseES本地化支持手册.pdfKingbaseES本地化支持手册.pdf
当前文档共32页 2.88
下载后继续阅读

KingbaseES本地化支持手册.pdf

KingbaseES 本地化支持手册 金仓数据库管理系统 KingbaseES 文档版本:V9(V009R001C001B0024) 发布日期:2023 年 10 月 12 日 北京人大金仓信息技术股份有限公司 目 目 录 录 第 1 章 前言 1 1.1 适用读者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 相关文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 术语 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 手册约定 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 2 章 KingbaseES 本地化支持概述 4 第 3 章 区域支持 5 3.1 区域支持概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2 区域支持配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.3 行为 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.4 问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 第 4 章 排序规则 11 4.1 排序规则概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2 排序规则管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.2.1 标准的排序规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.2.2 预定义的排序规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2.2.1 libc 排序规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2.2.2 ICU 排序规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 创建新的排序规则对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2.3.1 libc 排序规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2.3.2 ICU 排序规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2.3.3 复制排序规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 非确定性排序规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2.3 4.2.4 第 5 章 字符集 18 5.1 字符集概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.2 字符集的配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.3 服务器和客户端之间的自动字符集转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 I 目 第 6 章 附录 录 21 6.1 KingbaseES 支持的字符集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.2 服务器和客户端字符集转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 版权声明 27 服务周期承诺 28 II 第 1 章 前言 1 第 章 前言 本文描述了 KingbaseES 支持的本地化特性,包括区域、排序规则以及字符集。 前言部分包含以下主题: • 适用读者 • 相关文档 • 术语 • 手册约定 1.1 适用读者 本手册适用于数据库管理员和应用程序开发人员在以下场景使用: • 创建 KingbaseES 本地化支持环境 • 配置 KingbaseES 字符集 • ... 在开始阅读本文档之前,您需要了解关系型数据库概念、KingbaseES 数据库基本概念以及 KingbaseES 运行时 所需的操作系统环境等信息。 1.2 相关文档 有关各类编码系统的更多信息,您可以参考以下文档: CJKV Information Processing: Chinese, Japanese, Korean & Vietnamese Computing 包 含 对 EUC_JP、 EUC_CN、EUC_KR、EUC_TW 的详细解释。 http://www.unicode.org/ Unicode 联盟网站。 RFC 3629 UTF-8 (8-bit UCS/Unicode 转换格式)相关定义。 1 第 1 章 前言 1.3 术语 字符 字符(Character)是各种文字和符号的总称,包括各个国家使用的文字、标点符号、图形符号、数字等。 字符集 字符集(Character set)是多个字符的集合,字符集种类较多,每种字符集包含的字符个数不同,常见的字 符集有:ASCII、GB2312、BIG5、GB18030、Unicode 等。计算机要准确的处理各种字符集文字,需付字符编 码,以便计算机能够识别和存储各种文字。 1.4 手册约定 本文档中可能出现“注意、提示、警告、另请参阅”等标志,它们所代表的含义如下: 注意: 用于突出重要/关键信息、最佳实践等。 提示: 用于突出小窍门、捷径等。 警告: 用于传递设备或环境安全警示信息,若不避免,可能会导致设备损坏、数据丢失、设备性能降低或其 它不可预知的结果。 另请参阅: 用于突出参考、参阅等。 以下程序代码书写约定适用于本文档: 符号 说明 [] 表示包含一个或多个可选项。不需要输入中括号本身。 {} 表示包含两个以上(含两个)的候选,必须在其中选取一个。不需要输入花括号本身。 | 分割中括号或者花括号中的两个或两个以上选项。不需要输入“|”本身。 ... 表示其之前的元素可以被重复。 斜体 表示占位符或者需要提供特定值的变量。 见续表 2 第 1 章 前言 表 1.4.1 – 续表 符号 说明 大写 表示系统提供的元素,以便与用户定义的元素相互区分。除出现在方括号中的元素外,应当按 照顺序逐字输入。当然,部分元素在系统中是大小写不敏感的,因此用户可以根据系统说明以 小写形式输入。 小写 表示由用户提供的元素。 3 第 2 章 KINGBASEES 本地化支持概述 2 第 章 KingbaseES 本地化支持概述 本章从管理员的角度介绍了 KingbaseES 本地化功能。KingbaseES 可以通过以下两种方法支持本地化: • 利用操作系统的区域(locale)特性,提供特定区域设置的排序规则、数字格式、翻译以及其它方面信息。详 见区域支持 和排序规则 。 • 为支持各种语言的文本存储,KingbaseES 支持多种不同的字符集,并支持在客户端和服务器之间的字符集转 换。详见字符集 。 4 第3章 区域支持 3 第 章 区域支持 本章讨论以下主题: • 区域支持概述 • 区域支持配置 • 行为 • 问题 区域支持指数据库遵守区域的文化偏好,包括字母表、排序、数字格式等。KingbaseES 通过服务器上运行的操 作系统提供的标准 ISO C 和 POSIX 的区域机制来实现区域支持。 3.1 区域支持概述 当您使用 initdb 创建数据库时,无需手动配置区域支持选项,KingbaseES 会根据本地环境的区域设置初始化 数据库的区域设置选项。如果您想使用其它的区域(或者您不知道您本地的区域是什么),在初始化数据库时,您可 以在 initdb 的时候增加--locale 选项。例如: initdb --locale=sv_SE 将区域设置为瑞典(SE)瑞典语(sv)。当然,您也可以将区域设置为 en_US(美国英语)或 fr_CA(加拿大法 语)。 如果有多于一种的字符集,可以采用如下的形式申明:“language_territory.codeset“。例如 fr_BE.UTF-8 表示在 比利时(BE)讲的法语(fr),使用 UTF-8 字符集编码。 在您的系统上支持哪些区域取决于操作系统提供商提供了哪些区域支持以及安装了哪些区域支持。在大部 分 Unix 系统上,locale -a 命令可显示本地可用的区域列表。Windows 支持一些更繁琐的区域名,例如 German_Germany 或者 Swedish_Sweden.1252,但是原则是相同的。 有时候,需要把几种区域规格混合使用,如:使用英语排序规则而用西班牙语消息。 为了支持该功能,您可以在 initdb 的时候通过设置以下选项来实现。 5 第3章 LC_COLLATE 字符串排序顺序 LC_CTYPE 字符分类(什么是一个字符?它的大写形式是否等效?) LC_MESSAGES 消息使用的语言(Language of messages) LC_MONETARY 货币数量使用的格式 LC_NUMERIC 数字的格式 LC_TIME 日期和时间的格式 区域支持 这些类名转换成 initdb 的选项名来覆盖某个特定分类的区域选择。比如,要把区域设置为加拿大法语,但使用 U.S. 规则格式化货币,可以使用 initdb --locale=fr_CA --lc-monetary=en_US。 如果您不想设置特定的区域,您也可以使用特殊的区域名 C 或者等效的 POSIX。 在数据库创建时,有一些区域分类的值需固定。您可以在不同的数据库使用不同的设置,一旦数据库被创建,这 些区域分类的值就不能被修改。如:LC_COLLATE 和 LC_CTYPE 这两选项影响索引的排序顺序,它们的值必需保持固 定,否则在文本列上的索引会崩溃(但是您可以使用排序规则放松这种限制,详见排序规则 )。这些分类的默认值 在 initdb 运行时被确定,并且这些值在新数据库被创建时使用,除非在 CREATE DATABASE 命令中特别指定。 您可以在任何时候修改其它区域分类参数,修改的方式是设置与区域分类同名的服务器配置参数(详见 区域和 格式化)。被 initdb 选中的值实际上只是被写入到配置文件 kingbase.conf 中作为服务器启动时的默认值。如果 您将这些赋值从 kingbase.conf 中除去,那么服务器将会从其执行环境中继承该设置。 请注意,服务器的区域行为是由它的环境变量决定的,不受任何客户端的环境变量影响。因此在启动服务器之 前,您需认真地设置这些变量。这样带来的一种结果是如果客户端和服务器设置成不同的区域,那么消息可能以不同 的语言呈现,实际情况取决于客户端的区域设置。 注意: 从执行环境继承区域是指:对于一个给定的区域分类,比如排序规则,按照规则给定的顺序评估这些环境变 量,直到找到一个被设置了的:LC_ALL、LC_COLLATE(或者对应于相应分类的变量)、LANG。如果这些环境变量一 个都没有被设置,那么将区域设置为 C。 一些信息本地化库也查看环境变量 LANGUAGE,它覆盖所有其它用于设置信息语言的区域设置。如果有疑问,请 参考您的操作系统的文档,特别是有关 gettext 的文档。 要允许信息被翻译成用户喜欢的语言,编译时必需打开 NLS(configure --enable-nls),所有其他区域支持 都会被自动编译。 3.2 区域支持配置 对于 LC_CTYPE 和 lLC_COLLATE 参数的配置,您可以从 initdb 创建数据库时在 database cluster 层 面指定,也可以在单独 create database 时指定数据库层面的配置。下面将从这两个层面介绍 LC_CTYPE 和 6 第3章 区域支持 lLC_COLLATE 参数的配置介绍以上参数的配置。 查看系统 locale 配置: [kingbase@node1 ~]$ locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= 查看系统支持的可用区域: locale -a|grep -i 初始化数据库指定 lc_ctype 和 lc_collate: [kingbase@node1 bin]$ ./initdb -U system -W -D /data/kingbase/v9c5_23/data1 --locale=C The files belonging to this database system will be owned by user "kingbase". This user must also own the server process. The database cluster will be initialized with locale "C". The default database encoding has accordingly been set to "SQL_ASCII". The default text search configuration will be set to "english". ...... initdb: warning: enabling "trust" authentication for local connections You can change this by editing sys_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. Success. You can now start the database server using: ./sys_ctl -D /data/kingbase/v9c5_23/data1 -l logfile start 创建 database 指定 lc_ctype 和 lc_collate: test=#create database prod lc_ctype='zh_CN.UTF-8' lc_collate='zh_CN.UTF-8'; CREATE DATABASE test=# \l+ 7 第3章 区域支持 List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace | Description -----------+--------+-----------+-------------+------------+-------------------+-------+-------------+------------------------------------------prod | system | SQL_ASCII | zh_CN.UTF-8 | zh_CN.UTF-8| template0 | system | SQL_ASCII | c | 12 MB | sys_default | | C | =c/system +| 12 MB | sys_default | | | system=CTc/system | | C | =c/system | | system=CTc/system | | C | unmodifiable empty database | | | template1 | system | SQL_ASCII | c | | +| 12 MB | sys_default | default template for new databases | test | | | system | SQL_ASCII | c | | | 13 MB | sys_default | default administrative connection database (4 rows) 初始化数据库指定大小写不敏感: [kingbase@node1 bin]$ ./initdb -U system -W -D /data/kingbase/v9c5_23/data1 --locale=C --enable-ci The files belonging to this database system will be owned by user "kingbase". This user must also own the server process. The database cluster will be initialized with locale "C". The default database encoding has accordingly been set to "SQL_ASCII". The default text search configuration will be set to "english". The comparision of strings is case-insensitive. Data page checksums are disabled. ...... initdb: warning: enabling "trust" authentication for local connections You can change this by editing sys_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. Success. You can now start the database server using: ./sys_ctl -D /data/kingbase/v9c5_23/data1 -l logfile start 查看数据库编码信息: [kingbase@node1 bin]$ ./sys_ctl -D /data/kingbase/v9c5_23/data1 start waiting for server to start....2021-03-01 14:49:14.269 CST [22103] LOG: sepapower extension initialized ...... server started [kingbase@node1 bin]$ ./ksql -U system test 8 第3章 区域支持 ksql (V9.0) Type "help" for help. test=# \l+ List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace | Description -----------+--------+-----------+----------+-------+-------------------+-------+-------------+------------------------------------------security | system | SQL_ASCII | ci_x_icu | C template0 | system | SQL_ASCII | ci_x_icu | C | | 13 MB | sys_default | | =c/system +| 12 MB | sys_default | unmodifiable empty database | | | | template1 | system | SQL_ASCII | ci_x_icu | C | system=CTc/system | | =c/system | | +| 12 MB | sys_default | default template for new databases | test | | | | system | SQL_ASCII | ci_x_icu | C | system=CTc/system | | | | | 13 MB | sys_default | default administrative connection database (4 rows) 3.3 行为 区域设置对以下 SQL 特性影响较大: • 在文本数据上使用 ORDER BY 或标准比较操作符的查询中的排序顺序 • 函数 upper、lower 和 initcap • 模式匹配操作符(LIKE、SIMILAR TO 和 POSIX 风格的正则表达式);区域影响大小写不敏感匹配和通过字符 类正则表达式的字符分类 • to_char 函数家族 • 是否允许 LIKE 子句使用索引 KingbaseES 中使用非 C 或非 POSIX 区域的缺点是影响性能。它降低了字符处理的速度并且阻止了在 LIKE 中对 普通索引的使用。建议真正需要的时候才使用它。 作为允许 KingbaseES 在非 C 区域下为 LIKE 子句使用索引,有好几种自定义操作符类可用。这些操作符类允许 创建一个执行严格按字符比较的索引。详见 操作符类和操作符族。另一种方法是创建使用 C 排序规则的索引,如排 序规则 所讨论的。 9 第3章 3.4 区域支持 问题 如果根据上文介绍的区域支持进行配置后仍然不能成功运行,检查一下操作系统的区域支持是否被正确配置。要 检查系统中安装了哪些区域,你可以使用命令 locale -a(如果您的操作系统提供了该命令)。 请确认 Kingbase 运行时使用的是您配置的区域,可通过 show timezone 命名查看。LC_COLLATE 和 LC_CTYPE 设置都是在数据库创建时决定的,并且在除了创建数据库之外的操作中都不能被更改。其它的区域设置包括 LC_MESSAGES 和 LC_MONETARY 都是由服务器启动的环境决定的,但是可以在运行时修改。您可以用 SHOW 命令检查 活跃的区域设置。 源代码目录的 src/test/locale 中包含 KingbaseES 的区域支持的测试套件。 那些通过分析错误消息来处理服务器端错误的客户端应用程序存在明显的问题,因为服务器来的消息可能会是以 不同语言表示的。我们建议这类应用的开发人员改用错误代码机制。 10 第4章 排序规则 4 第 章 排序规则 排序规则功能允许指定每一列甚至每一个操作的数据的排序顺序和字符分类行为。该功能取消了数据库的 LC_COLLATE 和 LC_CTYPE 在创建以后不能更改的限制。 • 排序规则概念 • 排序规则管理 4.1 排序规则概念 在概念上,一种可排序数据类型的每一种表达式都有一个排序规则(内置的可排序数据类型是 text、varchar 和 char。用户定义的基础类型也可以被标记为可排序的,并且在一种可排序数据类型上的域也是可排序的)。如果 该表达式是一个列引用,该表达式的排序规则就是列所定义的排序规则。如果该表达式是一个常量,排序规则是该常 量数据类型的默认排序规则。更复杂表达式根据其输入的排序规则来排序,如下所述: 一个表达式的排序规则可以是根据数据库的区域设置“默认”的排序规则,也可能是不确定的。在排序规则不确 定的情况下,排序操作和其他需要知道排序规则的操作会失败。 当您在使用例如 ORDER BY 子句,函数或操作符调用(如<)时,数据库系统会执行一次排序或者字符分类。 ORDER BY 子句根据排序键的排序规则来排序,函数调用和操作符根据他们的参数或者操作对象的排序规则来排 序,具体如下文所述。除比较操作符之外,在大小写字母之间转换的函数会使用排序规则,例如 lower、upper 和 initcap。模式匹配操作符和 to_char 及相关函数也会使用排序规则。 对于一个函数的调用以及操作符的运行,如果返回的结果是一种可排序的数据类型,其排序规则是执行时指定的 参数的排序规则。如果有外围表达式,在解析函数或操作符表达式的结果时使用的排序规则也会被用作函数或操作符 表达式的排序规则。 一个表达式的排序规则派生可以是显式或隐式。它们会影响在同一个表达式中如何组合多个不同的排序规则。当 使用一个 COLLATE 子句时,将会显式派生排序规则。所有其他排序规则的派生都是隐式的。当多个排序规则混合使 用时(例如在一个函数调用中),组合后的排序规则如下: 1. 如果任何一个输入表达式具有一个显式排序规则,在输入表达式之间的所有显式派生的排序规则必须相同,否 则将产生一个错误。如果存在任何一个显式的派生排序规则,它就是排序规则组合的结果。 11 第4章 排序规则 2. 所有输入表达式必须具有相同的隐式排序规则或默认排序规则。如果任何一个非默认排序规则存在,它就是排 序规则组合的结果。否则,结果是默认排序规则。 3. 如果在输入表达式之间存在冲突的非默认隐式排序规则,则组合被认为是具有不确定排序规则。这并非一种错 误情况(除非被调用的特定函数要求提供排序规则的依据)。如果它确实这样做,运行时将发生一个错误。 例如,考虑这个表定义: CREATE TABLE test1 ( a text COLLATE "de_DE", b text COLLATE "es_ES", ... ); 然后在下方示例中,< 比较被根据 de_DE 规则执行,因为表达式组合了一个隐式派生的排序规则和默认排序规 则。 SELECT a < 'foo' FROM test1; 但是在下方示例中,比较被使用 fr_FR 规则执行,因为显式排序规则派生重载了隐式排序规则。.. code: SELECT a < ('foo' COLLATE "fr_FR") FROM test1; 更进一步,给定解析器不能确定要应用哪个排序规则,因为 a 列和 b 列具有冲突的隐式排序规则。 SELECT a < b FROM test1; 由于< 操作符不需要知道到底使用哪一个排序规则,这将会导致一个错误。该错误可以通过在一个输入表达式上 附加一个显式排序规则说明符来解决,因此: SELECT a < b COLLATE "de_DE" FROM test1; 或者等效的 SELECT a COLLATE "de_DE" < b FROM test1; 在另一方面,结构相似的情况 SELECT a || b FROM test1; 不会导致一个错误,因为 || 操作符不关心排序规则:不管排序规则怎样它的结果都相同。 如果一个函数或操作符发送一个具有可排序数据类型的结果,分配给该函数或操作符的组合输入表达式的排序规 则也被应用到函数或操作符的结果。因此,在 SELECT * FROM test1 ORDER BY a || 'foo'; 中排序将根据 de_DE 规则完成。但这个查询: 12 第4章 排序规则 SELECT * FROM test1 ORDER BY a || b; 会导致一个错误,因为即使 || 操作符不需要知道排序规则,但 ORDER BY 子句需要。按照以前,冲突可以通过 使用一个显式排序规则说明符来解决: SELECT * FROM test1 ORDER BY a || b COLLATE "fr_FR"; 4.2 排序规则管理 排序规则是 SQL 模式对象,它将 SQL 名称映射到操作系统中安装的库提供的区域设置。排序规则定义中有一 个提供程序,它指定哪个库提供语言环境数据。一个标准的提供者名称是 libc,它使用操作系统 C 库提供的语言环 境。这些是操作系统提供的大多数工具使用的语言环境, 不同操作系统的 libc 版本不同可能会导致排序顺序略有不 同。另一个提供者是 icu,它使用外部 ICU 库。只有在构建 KingbaseES 时配置了对 ICU 的支持,才能使用 ICU 区 域设置。 libc 提供的排序规则对象映射到 setlocale() 系统调用接受的 LC_COLLATE 和 LC_CTYPE 设置的组合。(正 如其名字,一个排序规则的主要目的是设置 LC_COLLATE,它控制排序顺序。但是在实际中,很少有将 LC_COLLATE 设置成与 LC_CTYPE 不同,因此在同一个概念下收集这些设置比创建另一个基础结构来设置每一个表达式的 “LC_CTYPE“更加方便)。此外,一个 libc 排序规则是和一个字符集编码(见字符集 )绑定在一起的。相同的排 序规则名字可能存在于不同的编码中。 icu 提供的排序规则对象映射到 ICU 库提供的命名排序器。因为 ICU 不支持单独设置“collate”和“ctype”, 所以它们总是相同的。此外,ICU 排序规则与编码无关,因此在数据库中只有一个给定名称的 ICU 排序规则。 KingbaseES 数据库将从以下方面管理排序规则: • 标准的排序规则 • 预定义的排序规则 • 创建新的排序规则对象 • 非确定性排序规则 4.2.1 标准的排序规则 在所有的平台上,名为 default、C 和 POSIX 的排序规则都可用。附加的排序规则是否可用取决于操作系统是 否支持。default 排序规则选择在数据库创建时指定的 LC_COLLATE 和 LC_CTYPE 值。C 和 POSIX 排序规则都指定 为“传统的 C”行为,在其中只有 ASCII 字母“A”到“Z”被视为字母,并且排序严格地按照字符编码的字节值完 成。 此外,SQL 标准排序规则名称 ucs_basic 可用于编码 UTF8。它相当于 C,并按 Unicode 编码排序。 13 第4章 4.2.2 排序规则 预定义的排序规则 如果操作系统支持在一个程序中使用多个区域(newlocale 和相关函数),或者如果支持并配置了 ICU, 那么在初始化数据集簇时,initdb 根据它当时在操作系统中找到的所有区域设置,用排序规则填充系统目录 sys_collation。 检查当前可用的区域设置,请在 ksql 中使用查询 SELECT * FROM sys_collation 或命令\dOS +。 • libc 排序规则 • ICU 排序规则 4.2.2.1 libc 排序规则 如果操作系统提供 de_DE.utf8 的区域设置,initdb 会创建一个名为 de_DE.utf8 用于编码的排序规则,同时 将 LC_COLLATE 和 LC_CTYPE 设置为 de_DE.utf8,还将创建一个去掉前缀名为.utf8 的排序规则,因此您也可以使 用 de_DE 名下的排序规则,这样写起来就没有那么麻烦,并且使排序规则的名称不那么依赖编码。然而请注意,最 初的排序规则名称集是依赖于平台的。 libc 提供的默认排序规则集直接映射到操作系统中安装的语言环境,可以使用命令 locale -a 列出这些语 言环境。如果所需的 libc 排序规则与 LC_COLLATE 和 LC_CTYPE 的值不同,或者在数据库系统初始化之后, 操作系统中安装了新的区域设置,您可以使用 CREATE COLLATION 命令创建新的排序规则。还可以使用 sys_import_system_collations() 函数整体导入新的操作系统区域设置。 在任何特定的数据库中,只有使用该数据库编码的排序规则才是有意义的。sys_collation 中的其它项将被忽 略。因此,一个剥离的排序规则名称如 de_DE 在一个给定的数据库中可以被认为是唯一的,即使它在全局上不是唯 一的。我们推荐使用被剥离的排序规则名,因为如果您决定要更改到另一个数据库编码时需要做的修改更少。但是请 注意无论数据库编码如何,都可以使用默认的 C 和 POSIX 排序规则。 KingbaseES 认为不同的排序规则对象是不兼容的,即使他们有相同的属性,例如: SELECT a COLLATE "C" < b COLLATE "POSIX" FROM test1; 将会得到一个错误,即使 C 和 POSIX 排序规则具有相同的行为。因此,我们不推荐混合使用剥离的和非被剥离 的排序规则名。 4.2.2.2 ICU 排序规则 对于 ICU,列举所有可能的区域名称是不明智的。ICU 对区域设置使用特定的命名系统,但命名区域设置的方法 比实际不同的区域设置多得多。initdb 使用 ICU API 提取一组不同的区域设置,以填充初始排序规则集。ICU 提供 的排序规则是在 SQL 环境创建的,名称采用 BCP 47 语言标记格式,并附有一个专用扩展名-x-icu,以区别于 libc 语言环境。 以下是可能创建的一些排序规则的示例: de-x-icu 德语排序规则,默认变体 14 第4章 排序规则 de-AT-x-icu 奥地利的德语排序规则,默认变体 (也就是说 de-DE-x-icu 或 de-CH-x-icu,但是这种写法,相当于 de-x-icu。) und-x-icu (for “undefined”) ICU “根”排序规则。使用此选项可以获得合理的语言无关的排序顺序 ICU 不支持一些使用频率较低的编码。当数据库编码是其中之一时,sys_collation 中的 ICU 排序规则项将被 忽略。试图使用其中一个将会抛出一个类似“collation ”de-x-icu” for encoding ”WIN874” does not exist”的错误。 4.2.3 创建新的排序规则对象 如果标准和预定义的排序规则不够用,您可以使用 SQL 命令 CREATE COLLATION 创建自己的排序规则对 象。 与所有预定于的对象一样,标准和预定义的排序规则在模式 “sys_catalog“中。用户定义的排序规则应该在用户 模式中创建。这也确保它们被 sys_dump 保存。 • libc 排序规则 • ICU 排序规则 • 复制排序规则 4.2.3.1 libc 排序规则 您可以像这样创建新的 libc 排序规则: CREATE COLLATION german (provider = libc, locale = 'de_DE'); 该命令中 locale 子句可接受的确切值取决于操作系统。在类 Unix 系统上,命令 locale -a 可以显示所有可以 设置的区域设置。 由于预定义的 libc 排序规则已经包含了初始化数据库实例时在操作系统中定义的所有排序规则,因此通常 不需要手动创建新排序规则。原因可能是需要不同的命名系统(在这种情况下,请参见:ref: 复制排序规则), 或者操作系统已经升级以提供新的区域设置定义(在这种情况下,另请参阅 FUNCTIONS-ADMIN-COLLATION 中 sys_import_system_collations() )。 4.2.3.2 ICU 排序规则 ICU 允许在 initdb 预加载的基本语言 + 国家/地区集的排序规则。我们鼓励用户定义自己的排序对象,这些 对象利用这些功能使排序行为符合他们的要求。请参阅 http://userguide.icu-project.org/locale 和 http://userguide. icu-project.org/collation/api 获取有关 ICU 区域设置命名的信息。可接受的名称和属性集取决于特定的 ICU 版本。 示例: CREATE COLLATION "de-u-co-phonebk-x-icu" (provider = icu, locale = 'de-u-co-phonebk'); CREATE COLLATION "de-u-co-phonebk-x-icu" (provider = icu, locale = 'de@collation=phonebook'); 15 第4章 排序规则 带有电话簿排序类型的德语排序 第一个例子根据 BCP 47 使用“语言标记”选择 ICU 区域设置。第二个示例使用传统的 ICU 特定区域设置语 法。第一种风格是首选,但较旧的 ICU 版本不支持它。 请注意,您可以在 SQL 环境中任意指定排序规则对象的名称。在这个例子中,我们遵循预定义排序规则使用的 命名风格,而这种风格又遵循 BCP 47,但这对于用户定义的排序规则不是必需的。 CREATE COLLATION "und-u-co-emoji-x-icu" (provider = icu, locale = 'und-u-co-emoji'); CREATE COLLATION "und-u-co-emoji-x-icu" (provider = icu, locale = '@collation=emoji'); 根据 Unicode 技术标准# 51,使用表情符号排序规则类型的根排序规则 观察在传统的 ICU 区域设置命名系统中,根区域设置是如何由空字符串选择的。 CREATE COLLATION digitslast (provider = icu, locale = 'en-u-kr-latn-digit'); CREATE COLLATION digitslast (provider = icu, locale = 'en@colReorder=latn-digit'); 在拉丁字母后面排列数字。(默认是字母前的数字。) CREATE COLLATION upperfirst (provider = icu, locale = 'en-u-kf-upper'); CREATE COLLATION upperfirst (provider = icu, locale = 'en@colCaseFirst=upper');i766 在小写字母前面排列大写字母。(默认是小写字母在前面。) CREATE COLLATION special (provider = icu, locale = 'en-u-kf-upper-kr-latn-digit'); CREATE COLLATION special (provider = icu, locale = 'en@colCaseFirst=upper;colReorder=latn-digit'); 结合上述两个选项。 CREATE COLLATION numeric (provider = icu, locale = 'en-u-kn-true'); CREATE COLLATION numeric (provider = icu, locale = 'en@colNumeric=yes'); 数字排序,按数字值排序数字序列,例如:A-21 < A-123(也称为自然排序)。 参阅 Unicode 技术标准 35 和 BCP 47 获取详细信息。可能的排序规则类型(co 子标签)列表可以在 CLDR 仓 库 中找到。 请注意,虽然系统允许创建“忽略大小写”或“忽略重音符”或类似(使用 ks 键)的排序规则,但这样的排序 规则可以真正不区分大小写或者重音。它们还需要在 CREATE COLLATION 中声明为非确定性;参考非确定性排序规则 。否则,根据排序规则比较相等,但按照字节不相等的任何字符串将根据其字节值进行排序。 注意: 根据设计,ICU 几乎可以接受任何字符串作为区域名称,并使用其文档中描述的后备程序,将其与最接近的 区域设置相匹配。因此,如果您使用给定 ICU 安装实际上不支持的功能组合排序规范,则不会有直接反馈。因此建 议创建应用程序级别的测试用例,以检查排序规则定义是否满足需求。 16 第4章 4.2.3.3 排序规则 复制排序规则 您可使用命令 CREATE COLLATION 从现有的排序规则创建新的排序规则,这对于能够在应用程序中使用独立 于操作系统的排序规则名称、创建兼容性名称或使用 ICU 提供的更易读的排序规则名称很有帮助。例如: CREATE COLLATION german FROM "de_DE"; CREATE COLLATION french FROM "fr-x-icu"; 4.2.4 非确定性排序规则 排序规则要么是确定性的,要么是非确定性的。确定性排序规则使用确定性比较,这意味着仅当字符串由相同的 字节序列组成时才认为它们是相等的。即使字符串由不同的字节组成,非确定性比较也可能会确定字符串相等。典型 的情况包括不区分大小写的比较、不区分上下文的比较,以及不同 Unicode 标准格式的字符串比较。由排序规则提供 程序来实际实现这种不敏感的比较。确定性标志仅决定是否使用字节数比较来进行关联。有关非确定性排序规则的更 多信息,请参考 Unicode Technical Standard 10 。 您可以通过 CREATE COLLATION 指定属性 deterministic = false,来创建非确定性排序规则,例如: CREATE COLLATION ndcoll (provider = icu, locale = 'und', deterministic = false); 本例将以一种不确定的方式使用标准的 Unicode 排序规则。特别是,这将允许正确地比较不同形式的字符串。 更有趣的例子是使用 ICU 定制规则。示例: CREATE COLLATION case_insensitive (provider = icu, locale = 'und-u-ks-level2', deterministic = false); CREATE COLLATION ignore_accents (provider = icu, locale = 'und-u-ks-level1-kc-true', deterministic = false); 所有标准和预定义的排序都是确定性的,默认情况下所有用户定义的排序都是确定性的。虽然不确定性排序提供 了更“正确的”行为,但考虑到 Unicode 的强大功能及其许多特殊情况时,它们也有一些缺点。首先,使用它们会导 致性能损失。此外,对于非确定性排序,某些操作是不可能的,例如模式匹配操作。因此,它们应该只在特别需要的 情况下使用。 17 第5章 字符集 5 第 章 字符集 本部分包含以下主题: • 字符集概念 • 字符集的配置 • 服务器和客户端之间的自动字符集转换 5.1 字符集概念 KingbaseES 数据库支持各种字符集(也叫编码)来存储文本,包括单字节字符集(如 ISO 8859 系列),以及多 字节字符集(如 EUC “扩展 Unix 编码 Extended Unix Code”、UTF-8 和 Mule 内部编码)。所有被支持的字符集 都可以被客户端透明地使用,但少数只能在服务器上使用(即作为一种服务器方编码)。 默认的字符集是在使用 initdb 初始化您的 KingbaseES 数据库集簇时选择的。在您创建一个数据库时可以重载 它,因此您可能会有多个数据库并且每一个数据库使用不同的字符集。 但是,一个重要的限制是每个数据库的字符集必须和数据库的 LC_CTYPE (字符分类)和 LC_COLLATE (字符串 排序顺序)设置兼容。对于 C 或 POSIX 环境,任何字符集都是允许的,但是对于其他 libc 提供的环境只有一种字符 集可以正确工作(不过,在 Windows 上 UTF-8 编码可以和任何环境配合使用)。如果您配置了 ICU 支持,则 ICU 提供的区域设置可用于大多数服务器端编码。 5.2 字符集的配置 initdb 为 KingbaseES 数据库定义一个缺省的字符集(编码)。 例如,将缺省字符集设置为 EUC_JP(用于日文的扩展 Unix 编码): initdb -E EUC_JP 如果您喜欢用长选项字符串,您可以用--encoding 代替-E。 18 第5章 字符集 如果没有指定-E 或者--encoding 选项,initdb 会尝试基于指定的或者默认的区域判断要使用的合适编码。 您可以在创建数据库时指定一个非默认编码,提供的编码应和选择的区域兼容: createdb -E EUC_KR -T template0 --lc-collate=ko_KR.euckr --lc-ctype=ko_KR.euckr korean 创建一个名为 korean 的数据库,该数据库使用 EUC_KR 字符集和 ko_KR 区域设置。另外一种实现方法是使用 SQL 命令: CREATE DATABASE korean WITH ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0; 注意上述命令指定拷贝 template0 数据库。在拷贝任何其他数据库时,不能更改从源数据库得来的编码和区域 设置,因为这可能会导致破坏数据。详见 模板数据库。 数据库的编码存储在系统目录 sys_database 中。你可以使用 ksql -l 选项或者\l 命令来查看。 $ ksql -l List of databases Name | Owner | Encoding | Collation | Ctype | Access Privileges -----------+----------+-----------+-------------+-------------+------------------clocaledb | hlinnaka | SQL_ASCII | C | C | englishdb | hlinnaka | UTF8 | en_GB.UTF8 | en_GB.UTF8 | japanese | hlinnaka | UTF8 | ja_JP.UTF8 | ja_JP.UTF8 | korean | hlinnaka | EUC_KR | ko_KR.euckr | ko_KR.euckr | kingbase | hlinnaka | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | template0 | hlinnaka | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | {=c/hlinnaka,hlinnaka= CTc/hlinnaka} template1 | hlinnaka | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | {=c/hlinnaka,hlinnaka= CTc/hlinnaka} (7 rows) Important: 在大部分现代操作系统上,KingbaseES 可以判断 LC_CTYPE 设置哪一种隐含的字符集,并且它将强制只 使用匹配的数据库编码。在版本过旧的系统上您需要自己负责确保所使用的编码就是您所设置的区域。这里的一个错 误很可能导致区域依赖的操作产生奇怪的行为,例如排序。 即使 LC_CTYPE 不是 C 或 POSIX 时,KingbaseES 将允许超级用户使用 SQL_ASCII 编码创建数据库。正如前文 所述,SQL_ASCII 并不强制存储在数据库中的数据具有任何特定的编码,并且这种选择带来了依赖于区域设置的不正 当行为的风险。不推荐使用这种设置组合,可能有一点会被完全禁止。 5.3 服务器和客户端之间的自动字符集转换 KingbaseES 支持服务器和客户端之间的自动编码转换。如果您选择的数据库字符集不同于客户端操作系统上的 字符集,那么 KingbaseES 数据库可以将操作系统字符集转换为数据库字符集。 转换信息存储在系统目录 sys_conversion。KingbaseES 自带一些预定义的转换,如 表 6.2.1 所示。 19 第5章 字符集 您可以使用 SQL 命令 CREATE CONVERSION 创建一个新的转换。 要想启用自动字符集转换功能,您必须告诉 KingbaseES 您在客户端使用的字符集(编码)。 您可以采用以下几种方法来启用自动字符集转换功能: • 采用 ksql 里的\encoding 命令。\encoding 允许您动态修改客户端编码。例如,将编码改变为 SJIS: \encoding SJIS • 使用 SQL 命令 SET client_encoding TO 设置客户端编码: SET CLIENT_ENCODING TO 'value'; 您还可以采用标准 SQL 语法里的 SET NAMES 来设置: SET NAMES 'value'; 查询当前客户端编码: SHOW client_encoding; 返回到缺省编码: RESET client_encoding; • 使用 KINGBASE_CLIENTENCODING 。如果在客户端环境里定义了 KINGBASE_CLIENTENCODING 环 境变量,那么在与服务器进行了连接后将自动选择该编码(随后可以用上述的任何其他方法重载)。 • 使用配置变量 client_encoding 。如果设置了 client_encoding 变量,客户端在与服务器建立了连接之后,客 户端编码将被自动选定(随后可以用上述的任何的其他方法重载)。 如果无法转换特定的字符,则会报错,如您选的服务器编码是 EUC_JP,而客户端是 LATIN1,那么部分日文字 符不能被转换成 LATIN1 。 如果客户端字符集定义成了 SQL_ASCII,无论服务器的字符集是什么,编码转换都将被禁用。和服务器一样, 使用 SQL_ASCII 是不明智的,除非你的工作环境全部是 ASCII 数据。 20 第 6 章 附录 6 第 章 附录 本附录列出了 KingbaseES 支持的字符集、语言。 本附录包含以下主题: • KingbaseES 支持的字符集 • 服务器和客户端字符集转换 6.1 KingbaseES 支持的字符集 表”KingbaseES 字符集” 显示了 KingbaseES 字符集的支持情况。 表 6.1.1: KingbaseES 字符集 名称 描述 语言 服务器 是否支 字 端是否 持 ICU 节/字 支持 BIG5 BigFive 繁体中 否 符 否 1-2 文 EUC_CN EUC_JP 扩展 UNIX 编码- 简体中 中国 文 扩展 UNIX 编码- 别名 WIN950, “Win- dows950“ 是 是 1-3 日文 是 是 1-3 日文 是 否 1-3 韩文 是 是 1-3 日本 EUC_JIS_2004 扩展 UNIX 编码日本, JIS X 0213 EUC_KR 扩展 UNIX 编码韩国 见续表 21 第 6 章 附录 表 6.1.1 – 续表 名称 描述 语言 服务器 是否支 字 端是否 持 ICU 节/字 支持 扩展 UNIX 编码- 繁体中 中国 文 GB18030 国家标准 GBK 扩展国家标准 EUC_TW 符 是 是 1-3 中文 是 是 1-4 简体中 是 是 1-2 文 ISO_8859_5 ISO 8859-5, 拉 别名 WIN936, Windows936 丁 是 是 1 是 是 1 是 是 1 是 是 1 语/ 西 ECMA 113 里尔语 ISO_8859_6 ISO 8859-6, 拉 丁 语/ 阿 ECMA 114 拉伯语 ISO_8859_7 ISO 8859-7, 拉丁语 /希 腊 ECMA 118 语 ISO_8859_8 ISO 8859-8, 拉 丁 语/ 希 ECMA 121 伯来语 JOHAB JOHAB 韩语 否 否 1-3 KOI8R KOI8-R 西里尔 是 是 1 是 是 1 KOI8 语 (俄 语) KOI8U 西里尔 KOI8-U 语 (乌 克 兰 语) LATIN1 ISO 8859-1, 西欧 是 是 1 ISO 88591 8859-2, 中欧 是 是 1 ISO 88592 ECMA 94 LATIN2 ISO ECMA 94 见续表 22 第 6 章 附录 表 6.1.1 – 续表 名称 描述 语言 服务器 是否支 字 端是否 持 ICU 节/字 支持 LATIN3 ISO 别名 符 8859-3, 南欧 是 是 1 ISO 88593 8859-4, 北欧 是 是 1 ISO 88594 8859-9, 土耳其 是 是 1 ISO 88599 是 是 1 ISO 885910 是 是 1 ISO 885913 是 是 1 ISO 885914 是 是 1 ISO 885915 是 否 1 ISO 885916 是 否 1-4 否 否 1-2 ECMA 94 LATIN4 ISO ECMA 94 LATIN5 LATIN6 LATIN7 ISO ECMA 128 语 ISO 日耳曼 8859-10, ECMA 144 语 ISO 8859-13 波罗的 海 LATIN8 凯尔特 ISO 8859-14 语 LATIN9 带欧罗 ISO 8859-15 巴和口 音 的 LATIN1 LATIN10 MULE_INTERNAL ISO 8859-16, 罗马尼 ASRO SR14111 亚语 Mule 内部编码 多语种 编辑器 SJIS 日语 Shift JIS Mskanji, “ShiftJIS“, WIN932, Windows932 SHIFT_JIS_2004 Shift JIS, JIS 日语 否 否 1-2 X0213 SQL_ASCII 未指定 任意 是 否 1 UHC 统一韩语编码 韩语 否 否 1-2 WIN949, Windows949 见续表 23 第 6 章 附录 表 6.1.1 – 续表 名称 描述 语言 服务器 是否支 字 端是否 持 ICU 节/字 支持 别名 符 UTF8 Unicode, 8-bit 所有 是 是 1-4 Unicode WIN866 Windows CP866 西里尔 是 是 1 ALT 语 WIN874 Windows CP874 泰语 是 否 1 WIN1250 Windows CP1250 中欧 是 是 1 WIN1251 Windows CP1251 西里尔 是 是 1 WIN 语 WIN1252 Windows CP1252 西欧 是 是 1 WIN1253 Windows CP1253 希腊语 是 是 1 WIN1254 Windows CP1254 土耳其 是 是 1 是 是 1 是 是 1 是 是 1 是 是 1 语 WIN1255 Windows CP1255 希伯来 语 WIN1256 Windows CP1256 阿拉伯 语 WIN1257 Windows CP1257 波罗的 海 WIN1258 Windows CP1258 越南语 ABC, “TCVN“, TCVN5712, VSCII 注意: 并非所有的客户端接口都支持以上字符集。如:JDBC 不支持 MULE_INTERNAL、LATIN6、LATIN8 和 LATIN10。 SQL_ASCII 字符集的设置和其它字符集的设置差别很大。如果您设置的字符集是 SQL_ASCII,服务器根据 ASCII 标准解释在 0-127 范围内的字节,不能解析在 128-255 范围的字节。如果您设置的字符集是 SQL_ASCII,服务 器不会进行编码转换,基于此,SQL_ASCII 不会用来做为编码的声明。在大多数情况下,如果您使用了任何非 ASCII 数据,由于 Kingbase 不会转换或者校验费 ASCII 字符,建议您不把字符集设置为 SQL_ASCII。 24 第 6 章 附录 6.2 服务器和客户端字符集转换 KingbaseES 支持在服务器和客户端之间的一些编码的自动转换。转换信息在系统目录 sys_conversion 中存 储。KingbaseES 默认支持一些字符集之间的转换,如表” 客户端/服务器字符集转换”。您也可以使用 SQL 命令 CREATE CONVERSION 创建一个新的转换。 表 6.2.1: 客户端/服务器字符集转换 服务器字符集 可用的客户端字符集 BIG5 不支持作为一个服务器编码 EUC_CN EUC_CN, MULE_INTERNAL, UTF8 EUC_JP EUC_JP, MULE_INTERNAL, SJIS, UTF8 EUC_JIS_2004 EUC_JIS_2004, SHIFT_JIS_2004, UTF8 EUC_KR EUC_KR, MULE_INTERNAL, UTF8 EUC_TW EUC_TW, BIG5, MULE_INTERNAL, UTF8 GB18030 GB18030, UTF8 GBK GBK, UTF8 ISO_8859_5 ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN866, WIN1251 ISO_8859_6 ISO_8859_6, UTF8 ISO_8859_7 ISO_8859_7, UTF8 ISO_8859_8 ISO_8859_8, UTF8 JOHAB 不支持作为服务端编码 KOI8R KOI8R, ISO_8859_5, MULE_INTERNAL, UTF8, WIN866, WIN1251 KOI8U KOI8U, UTF8 LATIN1 LATIN1, MULE_INTERNAL, UTF8 LATIN2 LATIN2, MULE_INTERNAL, UTF8, WIN1250 LATIN3 LATIN3, MULE_INTERNAL, UTF8 LATIN4 LATIN4, MULE_INTERNAL, UTF8 LATIN5 LATIN5, UTF8 见续表 25 第 6 章 附录 表 6.2.1 – 续表 服务器字符集 可用的客户端字符集 LATIN6 LATIN6, UTF8 LATIN7 LATIN7, UTF8 LATIN8 LATIN8, UTF8 LATIN9 LATIN9, UTF8 LATIN10 LATIN10, UTF8 MULE_INTERNAL MULE_INTERNAL, BIG5, EUC_CN, EUC_JP, EUC_KR, EUC_TW, ISO_8859_5, KOI8R, LATIN1 to LATIN4, SJIS, WIN866, WIN1250, WIN1251 SJIS 不支持作为一个服务器编码 SHIFT_JIS_2004 不支持作为一个服务器编码 SQL_ASCII 任意(不会执行任何转换) UHC 不支持作为一个服务器编码 UTF8 所有支持的编码 WIN866 WIN866, ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN1251 WIN874 WIN874, UTF8 WIN1250 WIN1250, LATIN2, MULE_INTERNAL, UTF8 WIN1251 WIN1251, ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN866 WIN1252 WIN1252, UTF8 WIN1253 WIN1253, UTF8 WIN1254 WIN1254, UTF8 WIN1255 WIN1255, UTF8 WIN1256 WIN1256, UTF8 WIN1257 WIN1257, UTF8 WIN1258 WIN1258, UTF8 26 版权声明 版权声明 北京人大金仓信息技术股份有限公司(简称:人大金仓)版权所有,并保留对本手册及本声明的一切权利。 未得到人大金仓的书面许可,任何人不得以任何方式或形式对本手册内的任何部分进行复制、摘录、备份、修 改、传播、翻译成其他语言、将其全部或部分用于商业用途。 免责声明 本手册内容依据现有信息制作,由于产品版本升级或其他原因,其内容有可能变更。人大金仓保留在没有任何通 知或者提示的情况下对手册内容进行修改的权利。 本手册仅作为使用指导,人大金仓在编写本手册时已尽力保证其内容准确可靠,但并不确保手册内容完全没有错 误或遗漏,本手册中的所有信息也不构成任何明示或暗示的担保。 技术支持 • 人大金仓官方网站:http://www.kingbase.com.cn/ • 人大金仓文档中心:http://help.kingbase.com.cn/ • 全国服务热线:400-601-1188 • 人大金仓技术支持与反馈信箱:support@kingbase.com.cn 27 服务周期承诺 服务周期承诺 由于市场需求在不断变化,技术创新和发展的进程不断加剧,产品的版本更迭不可避免。人大金仓对于产品版本 生命周期的有效管理,有助于您提前规划项目,更好地从产品服务终止上过渡。 表 2: KingbaseES 产品生命周期里程碑 关键里程碑点 定义 产品发布日期 产品正式发布版本,即 GA(general availability)版本的发布日期。 停止销售日期 正式停止销售的日期,版本停止接受订单日。该日之后,产品将不再销售。 停止功能升级日期 在该日期之后,不再提供新特性和新硬件支持。但依旧提供错误修复、安全修复、功 能维护等服务。 停止功能维护日期 在该日期之后,不再维护功能,修复问题。但依旧提供安全修复等服务 停止安全维护日期 在该日期之后,不再发布补丁版本修复中高风险漏洞,仅提供有限的支持。 产品服务终止日期 停止提供产品服务和支持的日期。包括软件维护版本,缺陷修复,以及针对该产品的 所有服务支持(包括服务热线和远程/现场支持)。 服务周期策略 金仓数据库管理系统 KingbaseES 产品确保以下的服务周期: 1)产品自发布之日起至产品停止功能升级(包含新特性、新硬件支持)之日不少于 5 年。 2)产品停止功能升级之日起至产品停止功能维护(主要包括问题修复)之日不少于 4 年。 3)产品功能维护停止之日起至产品停止安全维护(包括中高风险漏洞修复)之日不少于 2 年。 服务终止策略 金仓数据库管理系统 KingbaseES 产品确保在销售后,至少提供 6 年的服务支持。 注意: 人大金仓将会综合各方因素来确定产品服务终止日期。并将在实际产品服务终止日期之前至少 90 天,通过公 28 服务周期承诺 开方式宣布产品服务终止日期。 29

相关文章