Новое в СУБД ЛИНТЕР 6.1

         

Настройка и работа


В только что созданной базе данных таблицы $$$CHARSET и $$$TRANSL отсутствуют, и для работы базы данных используется интегрированная кодовая страница 20127(US-ASCII), имеющая имя «DEFAULT» и содержащая 127 символов. После создания системного словаря эта кодовая страница может быть подменена любой другой, носящей то же имя. Таким образом, кодовая страница «DEFAULT» является первой кодовой страницей по умолчанию в базе данных. Кодовая страница по умолчанию используется в двух случаях:

• в символах этой кодовой страницы хранится системный словарь (названия таблиц, столбцов, триггеров, процедур и т. д.);

•  при создании таблиц и столбцов без явного указания кодовой страницы, им назначается кодовая страница базы данных по умолчанию.

В настоящее время кодовая страница по умолчанию может быть только однобайтовой. Сменить кодовую страницу по умолчанию можно с помощью SQL- команды «SET DATABASE NAMES …;». Например команда «SET DATABASE NAMES CP866;» устанавливает по умолчанию кодовую страницу 866. Если вслед за этим подать команду «CREATE TABLE A (B CHAR(5));», то для таблицы A и столбца B будет установлена кодовая страница 866. Если же, например, подать команду «CREATE TABLE A (B CHAR(5) CHARACTER SET CP1251);», то для столбца B будет установлена кодовая страница 1251.

Для нормальной работы с кодовой страницей рекомендуется явно задать ее на клиентской части. Это проще всего сделать, задав переменную окружения:

set LINTER_CP=CP932

Этот пример для случая, если мы хотим работать с японской SJIS-кодовой страницей CP932.

Данные в столбцах в произвольной национальной кодовой странице могут храниться двумя способами:

•  в текстовых столбцах таблиц с заданной национальной кодовой страницей;

•  в UNICODE-столбцах таблиц.

В качестве длин текстовых полей указывается их размер в байтах.

Проиллюстрируем оба этих способа на примере японской кодовой страницы CP932 (эта японская кодовая страница содержит как однобайтовые, так и двухбайтовые символы.):

CREATE TABLE TBL_JP( JSTR CHAR( 30 ) CHARACTER SET CP932 ); INSERT INTO TBL_JP VALUES ('???1'); INSERT INTO TBL_JP VALUES ('???2');


CREATE TABLE TBL_JP1( JSTR1 NCHAR( 30 )); INSERT INTO TBL_JP1 VALUES (N'???1N'); INSERT INTO TBL_JP1 VALUES (N'???2N');

На рисунке 1 показано, как будет представлена выборка из данной таблицы в утилите LinDesk :



Рисунок 1. Отображение национальных символов.

Следует отметить еще один важный момент. Поскольку хранение многобайтовых кодовых страниц требует существенного объема оперативной памяти, то внутри СУБД такие страницы хранятся в отдельной очереди, которая по умолчанию не инициализирована. Ее инициализация происходит только в результате занесения в таблицу $$$CHARSET первой многобайтовой кодовой страницы и последующего перезапуска базы данных.

В заключение следует сказать, что реализованная в шестой версии СУБД ЛИНТЕР система многоязыковой поддержки обладает рядом существенных преимуществ: простота реализации, возможность гибкой настройки, расширяемость данной системы по мере необходимости. В то же время следует обратить внимание, что для полноценного использования всех этих возможностей следует очень серьезно подойти к проектированию базы данных, а также внимательно изучить примеры, прилагаемые к документации СУБД.


Содержание раздела