Чтение онлайн

на главную - закладки

Жанры

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

PK_TEST_UQ UNIQUE INDEX ON TEST_UQ(ID)

UQ1_DATA UNIQUE INDEX ON TEST_UQ(DATA_ID)

SQL>

! ! !

ПРИМЕЧАНИЕ. Запомните следующее заклинание: индекс не является ключом. Вы можете создавать уникальные индексы (подробности см. в главе 18), но создание уникального индекса не создает уникального ключа. Если существует вероятность, что вам может понадобиться для использования уникально индексированный столбец или структура в качестве ключа, создайте вместо индекса ограничение.

. ! .

Использование внешних файлов в качестве таблиц

В текущем жаргоне SQL Firebird

поддерживает внешние виртуальные таблицы (External Virtual Table, EVT). Файлы файловой системы в текстовом формате ASCII могут быть использованы в Firebird для чтения и манипулирования, как если бы они были таблицами, хотя и со значительными ограничениями, связанными с тем фактом, что они не являются внутренними объектами базы данных. Другие приложения могут обмениваться данными с базой данных Firebird, независимо от любых специальных механизмов преобразования. Внешние таблицы могут быть конвертированы во внутренние.

Предложение EXTERNAL FILE позволяет определять таблицы со структурой строки, отображаемой в "поля" фиксированной длины в "записях" (обычно разделенных символом перевода строки), которые размещаются во внешнем файле. Firebird может выбирать данные из файла и помещать данные в файл, как если бы это было обычной таблицей. При этом он не может выполнять операции изменения и удаления с внешними таблицами.

Текстовый файл, содержащий эти данные, должен быть создан или скопирован на устройство хранения, физически находящееся под управлением сервера - как обычно, это не должно быть устройство NFS, совместно используемый диск или отображаемый диск. Совместный доступ Firebird и других приложений на уровне файла невозможен. Firebird требует исключительного доступа в течение всего времени, когда файл открыт в транзакции. В остальное время этот файл может изменяться другими приложениями.

Синтаксис для CREATE TABLE...EXTERNAL FILE

Оператор CREATE TABLE для внешнего файла определяет как спецификацию внешнего файла (размещение и имя файла), так и характеристики столбцов Firebird, представляющих структуру хранимых записей.

CREATE TABLE внешняя-таблица

EXTERNAL FILE спецификация-файла (определение-столбца [, определение-столбца, ...], [разделитель-строки-1 CHAR(l) [,разделитель-строки-2 CHAR(l)]]);

спецификация-файла - полный путь и имя файла для внешнего файла данных. Файл не должен существовать во время создания таблицы. При этом в Firebird 1.5 и выше оператор CREATE будет неудачным, если спецификация ссылается на несконфигуриро- ванное размещение внешнего файла. См. раздел "Организация защиты внешних файлов" далее в этой главе и разд. "Конфигурирование внешних размещений" главы 36.

определение-столбца - обычное определение столбца Firebird. Могут быть заданы не символьные типы данных; при этом обеспечивается неявное преобразование в этот тип каждой строки, выделяемой из местоположения столбца во внешней записи.

разделитель-строки- необязательный последний столбец или пара столбцов, которые могут быть определены для использования в системе файла в качестве отметки конца строки текста. Хотя наличие таких разделителей делает более удобным чтение файла человеком, это не является обязательным для записей фиксированной длины, если только собирающиеся читать эти данные программы не требуют таких разделителей.

* В Linux/UNIX это один символ перевода строки ASCII 10.

* В Windows это упорядоченная пара ASCII 13 (возврат каретки) и ASCII 10.

* В Mac OS это ASCII 10 и ASCII 13.

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

Ограничения и рекомендации
Организация защиты внешних файлов

Во

всех версиях Firebird список каталогов должен быть сконфигурирован для ограничения размещений, где Firebird будет отыскивать или создавать внешние файлы. Параметры конфигурации ExternaiFiieAccess в firebird.conf (для серверов версии 1.5) или external_file_directory В ibconfig/isc_config (для версии 1.0.x) см. В главе 3. По умолчанию Firebird 1.5 инсталлируется без доступа к внешним файлам, в то время как версия 1.0.x дает открытый доступ к любому файлу файловой системы.

! ! !

ПРИМЕЧАНИЕ. Метод конфигурирования и возможности защиты системы от злоумышленных атак через доступ к внешним файлам различаются в разных версиях сервера.

. ! .

Формат внешних данных

Firebird сам создаст внешний файл, если не найдет его по месту, указанному в спецификации CREATE EXTERNAL TABLE ' <спецификация--файла>'. ЕСЛИ файл уже существует, ТО каждая его запись должна быть фиксированной длины, состоять из полей фиксированной длины, которая должна в точности соответствовать длине в байтах спецификациям столбцов в определении таблицы. Если приложение, создавшее файл, использует жесткие символы перевода строки (например, двухбайтовую последовательность возврат каретки и перевод строки в текстовых файлах Windows), включите в описание столбец для приспособления к этой последовательности. См. далее разд. "Символы конца строки".

Данные BLOB и массивы не могут быть считаны или записаны во внешний файл.

Большинство правильно сформированных числовых данных могут читаться непосредственно из внешней таблицы и в большинстве случаев Firebird в состоянии использовать его внутренние правила преобразования для правильной их интерпретации. При этом может оказаться более простым и точным чтение чисел в символьные столбцы и последующее их преобразование с использованием функции CAST.

! ! !

СОВЕТ. Убедитесь, что вы выделили достаточный размер для размещения ваших данных. Для информации о размерах обратитесь к соответствующей главе в части III. Рисунок 8.1 описывает правила преобразования типов данных.

. ! .

CHAR в сравнении с VARCHAR

Использование VARCHAR в определении столбца внешнего строкового поля не рекомендуется, потому что он не является легко переносимым форматом:

<2-байтовое беззнаковое короткое х строка символьных байтов>

VARCHAR требует начального 2-байтового беззнакового числа для включения количества байтов строки, непосредственно за которым следует строка [44] . Для многих внешних приложений может оказаться трудным или невозможным получить доступ к данным. По этой причине используйте CHAR вместо VARCHAR для строковых полей и убедитесь, что приложение переводит эту строку в полный размер.

44

Здесь мы говорим об архитектуре Intel. Выравнивание может отличаться в некоторых архитектурах.

Символы конца строки

Когда вы создаете таблицу, которая будет использована для импорта внешних данных, вы должны определить столбец, содержащий символ конца строки (End-Of-Line, EOL) или новой строки, если приложение, создающее этот файл, включает такой символ. Размер столбца должен быть достаточным, чтобы хранить конкретный системный символ EOL (обычно 1 или 2 байта). Для большинства версий UNIX это 1 байт. Для Windows и Macintosh - 2 байта.

Советы по добавлению непечатаемых символов
Поделиться:
Популярные книги

Дракон с подарком

Суббота Светлана
3. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
6.62
рейтинг книги
Дракон с подарком

Бывшие. Война в академии магии

Берг Александра
2. Измены
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Бывшие. Война в академии магии

Мастер клинков. Начало пути

Распопов Дмитрий Викторович
1. Мастер клинков
Фантастика:
фэнтези
9.16
рейтинг книги
Мастер клинков. Начало пути

Имя нам Легион. Том 8

Дорничев Дмитрий
8. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 8

Измена. Право на счастье

Вирго Софи
1. Чем закончится измена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на счастье

Начальник милиции 2

Дамиров Рафаэль
2. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции 2

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Измена. Мой заклятый дракон

Марлин Юлия
Любовные романы:
любовно-фантастические романы
7.50
рейтинг книги
Измена. Мой заклятый дракон

Предатель. Цена ошибки

Кучер Ая
Измена
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Предатель. Цена ошибки

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Рождение победителя

Каменистый Артем
3. Девятый
Фантастика:
фэнтези
альтернативная история
9.07
рейтинг книги
Рождение победителя

Барону наплевать на правила

Ренгач Евгений
7. Закон сильного
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Барону наплевать на правила

Камень. Книга шестая

Минин Станислав
6. Камень
Фантастика:
боевая фантастика
7.64
рейтинг книги
Камень. Книга шестая

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь