Вопросы и ответы по созданию своей национальной кодовой страницы Для хранения и обработки древнерусских рукописей.

1. Что такое NLS?

National Languages Support (NLS) – это архитектура поддержки национальных языков Oracle, позволяющая хранить, обрабатывать и выбирать данные на национальном языке. Она обеспечивает, чтобы утилиты базы данных, сообщения об ошибках, соглашения по порядку сортировки, дате, времени, денежные, числовые и календарные соглашения автоматически адаптировались к национальным языкам и локальным настройкам клиентской машины (locale).

2. Какие стандартные характеристики имеет NLS?

Следующие:

–  поддержка языков

–  поддержка территорий

–  форматы даты и времени

–  форматы чисел и денег

–  календари

–  лингвистические сортировки (*)

–  поддержка наборов символов (**)

3. Для чего нужно приспособление наборов символов (Character Set Customization)?

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

4. В чем заключается приспособление наборов символов?

1)  Добавление пользовательских символов в существующую таблицу символов Oracle (character set)

5. Что не делает процедура приспособления набора символов?

1)  Ввод пользовательских символов (должен осуществляться системой или с применением специального метода ввода, или с помощью виртуальной клавиатуры)

2)  Отображение пользовательских символов (должно управляться системой и/или приложением. Требуются новые спецификации фонта, который должен быть создан и установлен в системе)

НЕ нашли? Не то? Что вы ищете?

3)  Сортировка пользовательских символов (NB: в версии 8.1.6 не поддерживается сортировка многобайтовых наборов символов за исключением Japanese Hiragana/Katakana и UTF8).

6. Как создать свой набор символов?

1)  Зарегистрировать Имя и ID нового набора символов для обеспечения их уникальности (по адресу *****@***)

2)  Создать файл загрузки шаблонов NLS (NLS Text Boot File)

3)  Создать файл-определение набора символов (Character Set Definition File (lx2dddd. nlt))

3.1. Можно только расширять существующий набор символов

3.2. Нельзя изменять существующие символы

3.3. Коды новых символов должны быть в дипазоне e000-f4ff. (Unicode private use range). То есть возможно добавление не более 5*256=1280 новых символов

3.4. Запрещено соответствие один-во-много и много-в-один между новыми символами и новыми кодами. (***)

4)  Сохранить прежние файлы загрузки

5)  Сгенерировать и установить новые. nlb файлы

6)  Повторить шаг 5 для каждой платформы (Windows, Linux)

7)  Создать базу данных с новым набором символов

7. Потребуется ли при добавлении одного нового символа изменять набор символов на сервере и, следовательно, создавать новую базу данных с новым набором символов?

Да.

8. Какие существуют виды сортировки?

1)  Бинарная сортировка – в соответствии с числовым кодом символа в наборе символов.

2)  Лингвистические сортировки – в соответствии с последовательностью расположения символов в алфавите конкретного языка. Происходят путем замены символов другими числовыми значениями, которые отражают правильный порядок сортировки символов.

Для одного набора символов может быть определено несколько лингвистических определений (Linguistic definitions), в соответствии с которыми будет производиться сортировка (например, для набора символов??? существуют лингвистические определения CZECH и XCZECH, по разному сортирующие т. н. специальные случаи ch, CH, Ch, ß).

Выбор вида сортировки и лингвистического определения осуществляется параметром NLS_SORT:

NLS_SORT = { BINARY | linguistic_sort_name }

9. Недостатки лингвистической сортировки?

Ухудшение быстродействия, так как при любом выполнении оператора ORDER BY будет производиться сортировка.

10. Возможно ли создание лингвистических индексов (индексов, использующих порядок лингвистической сортировки)?

Да. Например:

SQL> CREATE INDEX nls_index ON my_table (NLSSORT(name, 'NLS_SORT = German'));

Запрос, использующий этот индекс, будет выглядеть так:

SQL> SELECT * FROM my_table WHERE NLSSORT(name) IS NOT NULL

> ORDER BY name;

11. Где Oracle использует наборы символов?

–  В данных, хранимых в колонках CHAR, VARCHAR2, CLOB и LONG

–  Идентификаторах, таких как имена полей, колонок и переменных PL/SQL

–  Вводе и хранении исходного программного кода SQL и PL/SQL

12. Какая существует литература по NLS?

Документация: Oracle8i National Language Support Guide, Release 2 (8.1.6) A

Вопросы, специфичные для древнерусских рукописей проекта Манускрипт.

1. Как учитывать альтернативные варианты написания одной буквы? Они должны иметь связь с буквой-родителем, но иметь разные изображения и разные сортировочные индексы. Помещать ли их в одном фонте, или же для каждого способа написания букв (общий стиль, общие графические элементы и т. п.) надо делать свой собственный фонт?

2. Какие алфавиты должны поддерживаться базой данных?

–  Современный русский

–  Греческий

–  Латинский

–  …

3. Какие существующие наборы символов (NLS’ы) подходят нам в качестве начальной?

UTF-8 ?