Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
Шрифт:
Новые функции API для работы с Blob и массивами
Были добавлены 10 новых функций InterBase API для поддержки длинных имен объектов. Ниже представлены новые вызовы API:
isc_array_gen_sd!2
isc_array_get_slice2
isc_array_lookup_bounds2
isc_array_lookup_desc2
isc_array_set_desc2
isc_array_put_slice2
isc_blob_default_desc2
isc_blob_gen_bpb2
isc_blob_lookup_desc2
isc_blob_set_desc2
Другие изменения в 7-й версии InterBase
SET TERM
Как вы знаете из главы "Хранимые процедуры", для создания хранимых процедур и триггеров с помощью SQL-скриптов и интерпретатора isql необходимо предварять и завершать команды создания и изменения процедур и триггеров специальной командой смены разделителя.
В 7-й версии ликвидирована нужда в команде SET TERM - теперь интерпретатор SQL корректно обрабатывает указанные выше команды и не выдает ошибку, которая ранее являлась просто ночным кошмаром для начинающих (во всяком случае, для тех из них, что не любят читать документацию).
Определение версии клиента
Некоторые клиентские библиотеки и драйверы могут иметь необходимость определять версию клиентской библиотеки Interbase. Для этого введены три новые функции API:
isc_get_client_version,
isc_get_client_major_version,
isc_get_client_minor_version.
Безопасность внешних таблиц. Параметр EXTERNAL FILE DIRECTORY
В определенных условиях внешние таблицы (external table) могут быть источником проблем в безопасности. Известно, что в предыдущих версиях InterBase, используя механизм внешних таблиц, можно было выкрасть всю базу целиком, от первого до последнего байта!
Здесь мы. конечно, не будем приводить этот способ, но скажем, что в InterBase 7 наконец разрешили эту серьезную проблему путем введения ограничений на возможное расположение системных таблиц. Теперь внешние таблицы должны удовлетворять следующим условиям:
* Внешние таблицы должны находиться в каталоге <interbase_hoine>/ext. InterBase будет сначала искать внешние таблицы в этом каталоге.
* Если внешняя таблица находится не в каталоге /ext, то путь к каталогу, где она находится, нужно указать в ibconfig при помощи параметра EXTERNAL_FELE_DIRECTORY Параметр можно указывать несколько раз для всех каталогов, где могут находиться внешние таблицы.
* Введение этих ограничений позволяет значительно ограничить доступ злоумышленника к данным внутри базы данных.
Единое имя файла параметров InterBase
Теперь файл параметров InterBase 7 имеет единое имя как для платформы Windows, так и для Linux - ibconfig.
Рекомендуемое расширение для файлов баз данных - *.ib
Теперь рекомендуемым разрешением для файлов баз данных становится ib - вместо привычного gdb. Прежде всего эта смена расширения связана с тем, что при использовании InterBase на Windows XP эта операционная система распознает файлы с расширением gdb как нечто системное и пытается при любых его изменениях сделать резервную копию. В результате чего производительность колоссально снижается. Конечно, можно эту функцию Windows XP отключить с помощью определенных манипуляций, однако для предупреждения проблем с тиражируемыми приложениями, которые
Конечно, InterBase 7 по-прежнему будет работать с базами данных, имена файлов которых имеют расширения любых видов и вообще не имеют расширения, но рекомендуется все же использовать *.ib.
Новое имя базы данных пользователей
Отныне база данных пользователей isc4.gdb отходит в прошлое, и вместо нее по умолчанию будет использоваться база данных admin.ib. По сути, она выполняет идентичные функции.
Правда, наименование базы данных пользователей теперь не является жестко заданным - используя параметр ADMIN_DB, вы можете задать любое приятное вашему слуху имя базы данных пользователей InterBase.
Заключение
Выход InterBase 7 показал всем, что у компании Borland есть еще "порох в пороховницах", и отказываться от этой СУБД она не намерена.
Нельзя сказать, что InterBase 7 поразил воображение пользователей своими нововведениями, но он сделал очень хороший задел на будущее - прежде всего, благодаря эффективной поддержке многих процессоров. Можно ожидать, что в дальнейших версиях InterBase, ближайшая из которых (может быть, 8 или 7.5) ожидается в 2003 году, будут проведены кардинальные изменения в структуре оптимизатора SQL-запросов, которыми ныне щеголяют "братья-СУБД" Firebird 1.5 и Yaffil 1.0.
В любом случае InterBase 7 стал родоначальником новой ветки СУБД на основе InterBase 6.0 и первой значительно отличающейся от семейства InterBase 6 Open Source/Firebird/Yaffil окончательной версией (release) сервера. Часть его нововведений можно расценивать именно как политическую, направленную на четкое позиционирование и отгораживание от других клонов. Это положительная тенденция, потому что вместо группы сходных серверов с неясными различиями мы, пользователи СУБД, сможем получить несколько отличных серверов баз данных!
Firebird 1.5 - Open Source DBMS
Прошел год с момента выпуска первой версии СУБД Firebird (12 апреля 2002 года) и. 1аким образом, с момента официального вхождения продукта в мир Open Source и начала завоевания собственного авторитета. Но это уже в прошлом, нас же больше интересует состояние дел на текущий момент, а также планы развития проекта на ближайшее будущее. Сейчас с полной определенностью можно сказать, что этот год прошел не зря для Firebird Была проделана большая работа, результаты которой можно наблюдать сегодня. Ниже будет подробно рассказано о том, что уже сделано и что еще предстоит сделать участникам проекта для достижения поставленных ими целей, главной из которых является выпуск в свет версии 1.5 в начале 2003 года.
Продолжение линии 1.0
Сразу после выхода первого релиза был начат процесс анализа реакции пользователей и исправление найденных проблем. Как результат, вскоре были выпущены несколько пострелизных сборок, одна из которых (821) стала в итоге версией 1.0.1, а сборка 908 - 1.0.2.
В версию 1.0.2 вошли несколько исправлений ошибок, основными из которых являются:
* корректная реализация 64bit I/O (поддержка больших файлов) для ТЖГХ-сиием,
* решение проблемы неправильной строки соединения (опять же для UNIX-систем);