Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
9
О двухфазном подтверждении транзакций см. в главе 25.
10
Рекомендуется свободно распространяемый драйвер IBProvider Дмитрия Коваленко. Подробности см. на http://www.ibprovider.com/rus/index.html.
11
Список ссылок на документальные источники см. в приложении 12.
12
На этих платформах, не имеющих поддержки сервисов, размещение может быть иным. Необходимо проверять, установлены ли предыдущие клиенты Firebird или InterBase.
13
Встроенный сервер для Linux не соответствует ему же в Windows. Как и в модели под Windows, клиент libfbembed.so Имеет "прямое соединение" с экземпляром сервера. В Linux та же библиотека может создавать экземпляр встpoeннoro сервера на сетевом сервере. Однако libfbembed.so cтpoгo рекомендуется в качестве клиента, если приложение содержит потоки.
14
Официальный инсталлятор и instclient.exe трактуют с: Windowssysteт как "системный каталог" для этих платформ. Некоторые "неофициальные" инсталляторы следуют соглашениям, установленным фирмой Borland для InterBase, как и некоторые инсталляторы Firebird 1.0, трактующие C:Windows как системный каталог, Оба размещения должны быть проверены, если вам нужно отыскать инсталлированноrо клиента.
15
Точность задает количество значащих цифр (игнорируя конечные или начальные нули), которое может храниться в типе данных без переполнения или потери данных.
16
Хранимыми типами являются SMALLINT, INTEGER или BIGINT в зависимости от объявлен-
17
Использование "!=" в качестве замены для "<>" допустимо в Firebird, но не соответствует стандарту. Те, у кого хорошее экстрасенсорное восприятие, будут придерживаться "о", чтобы сделать код более удобным для чтения.
18
Часто таблица RDB$DATABASE используется для "пустых" запросов, которые возвращают одно вычисляемое значение или контекстную переменную. Это реальная системная таблица, содержащая одну и только одну строку. Она используется как DUAL В Oracle.
19
Несмотря на то, что в третьем диалекте генераторы являются числами BIGINT, совершенно необязательно столбец первичного ключа, для которого будет применяться генератор, также делать BIGINT. При выборе типа данных для столбца первичного ключа следует учитывать конкретные нужды предметной области. Как правило, в большинстве случаев вполне достаточно INTEGER. - Прим. науч. ред.
20
Существуют техники для поддержки непрерывных последовательностей с использованием генераторов, которые могут быть реализованы в случае абсолютной необходимости повторного применения неиспользуемых промежутков в сериях, не являющихся значениями ключа. Список Tech Info "Контролируемые серии чисел" (An Auditable Series of Numbers) описывает подобную технику на http://www.ibobjects.com/TechInfo.html.
21
Хранится в системной таблице RDB$FIELDS как RDB$FIELD_PRECISION.
22
Хранится в системной таблице RDB$FIELDS как RDB$FIELD_SCALE.
23
Спасибо Джеффу Ворбойзу (Geoff Worboys) за его понятные замечания по этой больной теме.
24
Так в оригинале. В документации по InterBase указан диапазон дат от 1 января 100 г. до 29 февраля 32 768 г. - Прим. перев.
25
Для того чтобы осуществлять агрегацию интервала (суммирование, среднее), необходимо хранить не время окончания интервала, а его длительность, например в секундах, в обычном целочисленном типе данных. - Прим. науч. ред.
26
Вероятно, не будет ошибкой, если эта дата дает целое значение, называемое Измененным юлианским номером дня. Подробности см. на http://hermetic.nofadz.com/cal_stud/jdn.htm.
27
API предоставляет программистам две полезные функции для преобразования структуры дата/время клиентского языка в формат Firebird и из формата Firebird. См. в документе фирмы Borland "API Guide" (Руководство по API) описание функций isc_encode_date() и isc_decode_date().
28
Тип BLOB не является волшебной палочкой для сохранения и поиска больших объемов файлов двоичных данных. Иногда при учете производительности накладные расходы и неуправляемость хранения нединамических объектов данных, вроде фильмов или звуков, в базе данных перевешивает преимущества, которые вы предполагали. Хранение ссылок на объекты файловой системы может быть хорошим решением.
29
Возможна передача строковых типов как входных данных для BLOB С предоставлением серверу возможности их конвертирования. При этих условиях невозможно хранение BLOB, который превышает ограничение для строк в 32 Кбайта.
30
Чтобы понять эти тонкости, обратитесь к разд. "Темы оптимизации" главы 18.
31
При изменении типов домена учитывайте, что в хранимых данных могут быть данные, которые не пройдут преобразование из одного типа в другой. Например, VARCHAR В INTEGER сконвертируется, только если VARCHAR будет содержать цифры и числа, допустимые для INTEGER - Прим. науч. ред.
32
Существует море литературы, содержащей описания техник эффективного анализа задач бизнеса для проектировщика реляционных баз данных, размышления об уровне нашей профессиональности. Автор особенно рекомендует Data Modeling Essentials: Analysis, Design and Innovation, 2nd Edition by Graeme C. Simsion (Coriolis, 2000).
33
Команда SET TERM не является SQL-оператором, понимаемым Firebird. Это команда утилиты 1SQL, позволяющая задать индикатор окончания оператора DDL. SET TERM используется только там, где инструмент разработчика может выполнить несколько команд DDL и DML в одном скрипте. - Прим. науч. ред.
34
Замечание для программистов API. В динамическом SQL (DSQL) оператор CREATE DATABASE или CREATE SCHEMA должен быть выполнен с EXECUTE IMMEDIATE. Дескриптор базы данных и имя транзакции, если присутствуют, должны быть инициализированы нулем до использования.
35
Для "русскоязычных программ" следует использовать набор символов WIN1251.- Прим. перев.
36
При создании или расширении многофайловой базы данных для всех файлов базы данных используйте либо только LENGTH (явную длину конкретного файла), либо только STARTING AT (указание начала нового файла), для избежания путаницы. - Прим. науч. ред.
37
Сервис API предоставляет доступ к обоим методам для перевода базы данных в режим только для чтения. Чтобы получить информацию, изучите доступную документацию по различным группам параметров действий сервиса (isc_action_svc_xxx), которые могут передаваться в функцию isc_service_start О . Множество компонентов доступа к базе данных реализуют эти функции для использования в различных языковых средах.
38
К сожалению, теневое копирование не обеспечивает восстановление, если база данных была случайно удалена оператором DROP DATABASE. Когда вы удаляете таким образом базу данных, ее теневая копия (shadow) также удаляется.
39
Для автора оказалось невозможным найти кого-нибудь, кто мог бы объяснить преимущества (если они существуют) ведения множества наборов теневых копий. Система нумерации могла быть результатом некоторой функциональности, которая никогда не была реализована. При отсутствии лучшей информации, похоже, имеет смысл остановиться на одном наборе
40
CONDITIONAL SHADOW на самом деле имеет смысл как дополнение к AUTO, и только. Если CONDITIONAL создана как второй набор по отношению к AUTO, то она будет пустой до тех пор, пока с базой или с AUTO SHADOW не произойдет сбой. При сбое CONDITIONAL SHADOW будет наполнена страницами из целого файла и примет на себя функции альтернативной копии, таким образом даже в случае сбоя дисковой системы будет существовать две копии базы данных. И, разумеется, CONDITIONAL SHADOW не имеет смысла как дополнение к manual shadow (как и комбинация из двух SHADOW- AUTO + MANUAL), Т. к. при MANUAL в случае сбоя работа сервера с базой останавливается. - Прим. науч. ред.
41
Если вы кодируете CREATE TABLE в приложении встроенного SQL (Embedded SQL) с намерением также в этом приложении заполнять данными эту таблицу, то таблица вначале должна быть объявлена в предшествующем операторе DECLARE TABLE.
42
Если ваша операционная система поддерживает использование многобайтовых символов в именах пользователей или вы используете многобайтовый набор символов при определении ролей, то каждый столбец, в котором будут сохраняться в качестве значений по умолчанию CURRENT_USER или CURRENT_ROLE, должен быть определен с использованием совместимого набора символов.
43
См. ограничение NOT NULL для столбца, NULL может оказаться несовместимым значением
44
Здесь мы говорим об архитектуре Intel. Выравнивание может отличаться в некоторых архитектурах.
45
Создание спецификаций для чтения/записи во внешний файл может потребовать гораздо больше детальных знаний о формате, чем здесь обсуждается. Наборы символов и размеры в байтах могут оказаться проблемой. Во многих случаях использование в качестве набора символов нейтрального набора символов OCTETS в определении внешней таблицы может решить некоторые проблемы. Импорт и экспорт данных не подчиняется принципу "один размер подходит всем".