- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри
Шрифт:
Интервал:
Закладка:
Важно быть в курсе того, как многобайтовые наборы символов влияют на размеры текстовых элементов, особенно имеющих переменный размер. Например, в наборе символов UNICODE FSS даже 256-символьный столбец будет иметь больший размер - потенциально 770 байт- как для хранения данных, так и для поиска. Дальше в этой главе будет много сказано об осторожности, которую вы должны проявить, решая вопрос о хранении текстов для многобайтовых наборов символов.
Ограничения индексовПри решении вопросов размера, набора символов и последовательности сортировки для символьного столбца вам нужно убедиться, что индексируемые столбцы этих типов достаточно ограничены по размеру. В настоящее время (версия 1.5) общий размер любого индекса не может превышать 252 байта- заметьте, байтов, а не символов. Многобайтовые и многие более сложные однобайтовые наборы символов используют много больше байтов, чем простые наборы символов. Многосегментные индексы используют дополнительные байты, как и последовательности сортировки. Просчитайте количество байтов в процессе проектирования!
Подробности см. в главе 18, обратите внимание на разделы о наборах символов и последовательностях сортировки далее в этой главе.
Использование памяти клиентаПрограммы клиента будут выделять память для хранения копий строк, которые они считали из базы данных. Многие уровни интерфейсов выделяют достаточное количество ресурсов для максимального (т. е. определенного) размера значений столбцов фиксированной и переменной длины, даже если фактически никакие данные не сохранены в таком размере. Буферизация большого количества строк может использовать слишком большой объем памяти, и пользователи будут жаловаться на задержки при обновлении экрана и на потерю соединения.
Рассмотрим, например, какое влияние окажет на рабочую станцию запрос, возвращающий 1024 строки, каждая из которых содержит один столбец, объявленный как VARCHAR(1024) . Даже с самым "скромным" набором символов этого столбца потребуется, по меньшей мере, 1 Мбайт памяти клиента. Для столбца Unicode умножьте эту величину на три.
Символьные данные фиксированной длины
Строковые типы данных фиксированной длины в Firebird используются для хранения строк, длина которых является одной и той же или очень близкой, либо там, где фор- мат или относительная позиция символов может передавать семантическое содержание. Обычно они применяются для таких элементов, как идентификационные коды, номера удаленной связи, базирующиеся на символах цифровые системы, а также для объявления полей с целью хранения предварительно форматированных строк фиксированной длины, чтобы конвертировать их в другие типы данных - например, литералы даты Firebird.
Начальные символы пробелов (символ ASCII 32) во вводимых строках фиксированной длины являются значимыми, в то время как завершающие - нет. При сохранении строк фиксированной длины Firebird убирает конечные пробелы. Строки отыскиваются без избыточного расширения до объявленной длины.
Использование типов фиксированной длины не рекомендуется для данных, которые могут содержать значимые конечные символы пробелов, или для элементов, чья фактическая длина может сильно изменяться.
CHAR(n), алиас для CHARACTER(n)
CHAR(n), алиас для CHARACTER(n), является основой символьного типа фиксированной длины, n представляет точное количество хранимых символов. Этот тип данных может хранить строки любого поддерживаемого набора символов.
! ! !
ПРИМЕЧАНИЕ. Если аргумент длины, n, в объявлении отсутствует, то предполагается CHAR(1). Допустимо объявлять односимвольные поля CHAR как просто CHAR.
. ! .
NCHAR(n), алиас для NATIONAL CHARACTER(n)
NCHAR (n), алиас для NATIONAL CHAR(11) , является специализированной реализацией типа CHAR(n) с предварительно установленным атрибутом набора символов iso8859_1. Естественно, недопустимо определять атрибут набора символов для столбца NCHAR, хотя последовательность сортировки - последовательность, в которой будут сортироваться символы для поиска упорядочения вывода, - может быть объявлена для столбца или домена, которые используют этот тип.
Подробные разделы о наборах символов и последовательностях сортировки присутствуют далее в этой главе.
Символьные данные переменной длины
Строковые типы данных переменной длины в Firebird используются для хранения строк, длина которых может изменяться. Обязательный аргумент размера n ограничивает количество символов, которые могут храниться в столбце максимум n символами. Размер типа VARCHAR не может превышать 32 765 байтов, потому что Firebird добавляет два байта к размеру элемента для каждого объекта VARCHAR.
Выбор, хранение и поиск текстов переменной длиныСимвольный тип переменной длины используется для хранения текстов, потому что размер хранимой структуры равен фактическому размеру данных плюс два байта. Все символы, введенные в поле переменной длины, трактуются как значимые, включая начальные и конечные пробельные символы.
Транспортировка в сетиДо Firebird 1.5 найденные текстовые элементы данных переменной длины дополнялись на сервере до полного, объявленного размера до передачи клиенту. Начиная с Firebird 1.5, данные не дополняются. На момент написания этой книги такая возможность для текстов переменной длины не была выполнена для Firebird 1,0.x, что может повлиять на ваш выбор размера и типа столбца, если вы пишете приложения для удаленных клиентов, соединяющихся с сервером 1,0.x в медленной сети.
Хотя типы переменной длины могут хранить строки почти в 32 Кбайтах, на практике не рекомендуется использовать их для элементов данных, длиннее, чем 250 байт, особенно если их таблицы будут увеличиваться в размерах или если они часто будут субъектом запросов SELECT. Тип данных BLOB с подтипом SUB_TYPE 1 (текст) обычно лучше подходит для хранения больших строковых данных. Тексты BLOB подробно обсуждаются в следующей главе.
VARCHAR(n), алиас для CHARACTER VARYING(n)VARCHAR(n), алиас для CHARACTER VARYING(n), является базовым строковым типом переменной длины, n представляет максимальное количество символов, которое может сохраняться в столбце. Этот тип хранит строки любого поддерживаемого набора символов. Если никакой набор символов не указан, атрибут примет значение набора символов по умолчанию, который был определен в операторе CREATE DATABASE в предложении DEFAULT CHARACTER SET. ЕСЛИ не существует набора символов по умолчанию, то столбец получит CHARACTER SET NONE.
NCHAR VARYING(n), алиас для NATIONAL CHAR VARYING(n)NCHAR VARYING(N), алиас для NATIONAL CHAR VARYING(N), который в свою очередь является алиасом для NATIONAL.CHARACTER VARYING(N) - это специализированная реализация типа VARCHAR(n) с предварительно установленным атрибутом набора символов ISO8859_1. Недопустимо определять атрибут набора символов для столбца NCHAR VARYING, хотя последовательность сортировки - последовательность, в которой будут сортироваться символы для поиска упорядочения вывода - может быть объявлена для столбца или домена, которые используют этот тип.
Наборы символов и последовательность сортировки
Набор символов, выбранный для хранения текстовых данных, определяет:
* символы, которые могут быть использованы в столбцах CHAR, VARCHAR и BLOB SUB_TYPE | (текст);
* число байтов, выделяемых для каждого символа;
* последовательность сортировки по умолчанию (алфавитно-цифровой порядок), используемая при сортировке столбцов CHAR и VARCHAR (столбцы BLOB не могут сортироваться - так что последовательность сортировки для них не применяется).
Если для столбца вы не укажете набор символов, то для него будет использован набор символов по умолчанию базы данных. Если для базы данных не указан набор символов по умолчанию, то столбец получит значение CHARACTER SET NONE. ЕСЛИ ваша база данных используется в окружении, где присутствует только английский язык, у вас может появиться соблазн не использовать набор символов. Не соблазняйтесь! Набор символов NONE безропотно примет любые однобайтовые символы. Проблемы появятся- в неанглийском окружении или при наличии смешанных языков- вы получите ошибку транслитерации при выборе ваших текстовых данных. То, что уходит, не всегда то же самое, что приходит!
Текст, вводимый с клавиатуры или с других устройств ввода, например с устройства считывания штрихового кода, особым образом кодируется в соответствии с некоторой стандартной кодовой страницей, которая может быть связана с диалектом, заданным при установке вводящего устройства. Обычно входные устройства снабжаются программами-адаптерами, дающими возможность пользователям по желанию переключать кодовую страницу.
В одной кодовой странице числовой код, соответствующий образу некоторого символа, может отличаться от кода в другой кодовой странице. В основном каждый набор символов Firebird отображает некоторую кодовую страницу или группу связанных кодовых страниц. Некоторые наборы символов работают более чем с одной кодовой страницей, в отдельных случаях кодовая страница будет работать более чем с одним набором символов. Различные языки могут использовать один общий набор символов, но по-разному отображая пары прописные/строчные буквы, символы валюты и др.

