Вопросы и ответы по созданию своей национальной кодовой страницы Для хранения и обработки древнерусских рукописей.
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 ?


