Что не надо делать при работе с interbase, firebird, yaffil


Содержание

Что не надо делать при работе с interbase, firebird, yaffil

Здравствуйте!
Хотел разобраться сам, да видимо — не судьба.
Проблема у меня такая:
сделал програмку, которая использовала базу данных InterBase.
работал я при этом через BDE.

Встал вопрос о переносе ее на бесплатную основу. Ничего лучше FireBird не нашел. Поначалу все было просто: заменил InterBase Server на FireBird Server — тут все прошло безболезненно.

следующий этап — сама база. тут и случился затык
если оставить ее интербэйзовской, то нужны драйвера, а они платные.
Я скачал бесплатные дрова для firebird, но случился очередной затык: теперь я не могу никак сделать fdb-файл.
Смог сделать только обычный — интербэйзовский, а он — не подходит.

ps: Может зря я это затеял. может быть нельзя работать в firebird через BDE.
хотя драйвера встали ))) и SQLExplorer их видит ))))
вот тока базы для них нет (((

pps: если можно, присылайте ответы на мыло, а то у меня доступ в инет ограничен, а вот мыло читать могу без проблем dimon-a@yandex.ru.

Заранее всем спасибо. QUOTE pps: если можно, присылайте ответы на мыло, а то у меня доступ в инет ограничен, а вот мыло читать могу без проблем dimon-a@yandex.ru

Подпишитесь на тему, вот ответы и будут автоматом приходить
на Ваш email

Отредактировано Admin — 15/06/2004, 22:29 Akella

Дата 22.9.2008, 22:03 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Модератор
Сообщений: 18483
Регистрация: 14.5.2003
Где: Корусант

Что не надо делать при работе с interbase, firebird, yaffil

Что здесь отсутствует? Правильно, знакомый многим параметр -r. Параметр -r на самом деле не -r[estore], а -r[eplace], т.е. не «восстановить», а «заменить» имеющуюся базу данных. Т.е. если в предыдущем примере команды заменить -c на -r, то существующая база данных e.fdb будет молча удалена. Этого допускать нельзя, потому что по разным причинам восстановление из резервной копии может не состояться, и тогда вы останетесь без оригинальной базы данных и с невосстановимой резервной копией.
Интересно, что иногда у людей в командной строке восстановления БД из резервной копии можно встретить и такой оксюморон:

Причина написания такой командной строки кроется в неверном чтении документации по InterBase. Там указано

Что означает — «или -c, или -r», но никак не оба вместе. Тем не менее, лучше такие неоднозначности не устраивать.

Кроме того, в Firebird 2.0 параметр -r сам по себе был фактически запрещен, т.к. «убиение» оригинальных баз данных при помощи -r имеет массовый характер. Теперь в Firebird 2.0 параметр -r просто не работает, и вместо него нужно использовать явно -rep (или -replace_database полным текстом), или -r o (-recreate_database overwrite).

Таким образом, если требуется сделать резервную копию базы данных и тут же восстановить базу из нее на том же сервере, нужно

  1. gbak -b -g e.fdb e.fbk
  2. переименовать e.fdb например в tmp.fdb
  3. gbak -c e.fbk e.fdb

если восстановление прошло успешно, то tmp.fdb можно удалить. До этого момента tmp.fdb категорически удалять нельзя. (есть вариации — можно восстановить не в e.fdb, а например в e1.fdb, после успешного восстановления удалить e.fdb, а e1.fdb переименовать в e.fbk)

Поборники параметра -r могут сказать, что они или выполняют пункт 2, или вместо пункта 2 копируют базу данных в другой файл (остановив сервер InterBase или Firebird, разумеется). На это могу сказать следующее — все равно использовать -r не надо. Во-первых, он несовместим с Firebird 2.0, и во-вторых, что будет, если переименование или копирование вдруг произойдет с ошибкой?

Теперь можно перейти к более подробному описанию параметров restore.

-bu n

Изменить размер кэша базы данных. По умолчанию кэш базы данных задан в файле конфигурации сервера (firebird.conf, ibconfig), и равен 2048 страниц. Это значение действует для всех баз данных, у которых размер кэша задан неявно. Если вы используете на сервере несколько баз данных, то может потребоваться указать для них разный размер кэша, в зависимости от назначения этих баз. Параметр -bu n позволяет при восстановлении базы данных задать или изменить этот размер. К сожалению, у gbak можно указать значение -bu только больше 0. Если вы обнаружили, что в бэкапе уже «зашито» значение кэша, то «сбросить» его при restore не получится. Для убирания размера кэша в БД придется использовать gfix.
Если размер кэша вообще задан в БД (а в большинстве случаев это не делают), то этот параметр используется обычно при переносе базы данных например со старого сервера на новый, или при переносе БД между архитектурами Classic и SuperServer.
Эквивалентно команде gfix -bu n.

-p n

Позволяет задать новый размер страницы базы данных. Это единственный способ, которым можно изменить размер страницы БД. На текущий момент можно сказать следующее — если вы посмотрели параметры БД через gstat -h, и увидели, что у базы данных размер страницы 1024 или 2048 байт — рекомендуется сделать backup и restore с указанием размера страницы 4096, 8192 или 16384 байт (если ваша версия сервера поддерживает страницы в 16к). Потому что даже небольшие базы данных с таким небольшим размером страницы имеют явно худшую производительность, чем базы со страницей 4 килобайта и выше.
Сервер сохраняет размер страницы БД при создании резервной копии, поэтому повторно указывать размер страницы при restore нет необходимости.
Не вставляйте этот параметр в «автоматизированную командную строку restore», потому что если вы захотите изменить размер страницы текущей БД вручную, то «автоматизированный restore» поменяет ее обратно.

-i

Не выполнять создание (активацию) индексов (последняя фаза restore). После восстановления базы данных все индексы в ней останутся отключены (неактивны). Фактически с такой базой данных работать нельзя, т.к. при отключенных индексах Primary key, Foreign key и Unique возможны нарушения целостности данных в таблицах (дублирование первичных ключей и т.д.).
Данный параметр имеет смысл использовать разве что в специфических целях — например, восстановить только данные из бэкапа за максимально быстрое время, или определить длительность создания всех индексов (замерить время gbak -c, затем замерить время gbak -c -i, после чего вычесть одно время из другого — получите длительность активации всех индексов), чтобы определить или текущую производительность каталога temp, или сравнить ее с явно заданным в конфигурации расположении temp на другом физическом диске.

если вы восстановили бэкап с опцией -i, индексы можно активировать командой alter index nnn active (для каждого индекса).

-k

Не создавать shadow, если таковые были созданы в оригинальной базе данных. На самом деле этот параметр не только «не создает» shadow, но и еще удаляет существующие, например в варианте с backup/restore с промежуточным переименованием базы данных. Впрочем, поскольку использовать shadow (программный raid 1) сейчас нет смысла, то и параметр -k можно считать атавизмом.
Эквивалентно команде gfix -kill.

-m

Восстановить только метаданные, без данных. Можно использовать как «проверочный» метод целостности резервной копии, или отсутствия проблем в метаданных.

-mode

По умолчанию база данных восстанавливается в режиме read_write. Однако, если вам нужно получить базу только для чтения, особенно для размещения ее на CD или DVD, то можно воспользоваться -mode read_only.
Эквивалентно команде gfix -mode read_write/read_only.

-use_

По умолчанию базы данных InterBase и Firebird резервируют примерно 30% пространства на страницах данных, для размещения версий при будущих вставках, удалениях или обновлениях записей. Если предполагается запись базы данных на CD или DVD, то лучше базу данных несколько «сжать», указав параметр -use_ при restore (одновременно указав -mode read_only).
Эквивалентно команде gfix -use full. Обратная команда (снятие режима максимального заполнения страниц)- gfix -use reserve.
! при помощи restore вы не можете указать -use reserve, такой опции у gbak при восстановлении нет ни у InterBase, ни у Firebird.

-o

Помогает при некоторых случаях «невосстановимого backup». Тут больше добавить нечего.

-n

Отключает проверку constraints, если при обычном восстановлении БД оказалось, что логическая целостность оригинальной БД была повреждена (например, из-за битого индекса PK возникли дубликаты первичного ключа).
Крайне не рекомендуется для использования в «командной строке автоматизированного restore».

-va


В InterBase 7.x, 2007 и 2009 при восстановлении БД из резервной копии параметр -n (см. выше) включен по умолчанию. Это опасно тем, что можно не заметить появление в базе данных нарушений целостности Primary key, Foreign key и Unique в случае повреждения оригинальной базы данных. Поэтому в данных версиях InterBase параметр -va рекомендуется использовать всегда, кроме случаев восстановления «невосстановимого backup».

примечание : если требуется восстановить сразу несколько баз из бэкапов, то нужно выполнить команду gbak -c для каждой базы данных отдельно, но ни в коем случае не указывать нечто вроде gbak -c *.gbk *.gdb. Шаблоны и маски в данном случае не работают.

-fix

Опции -fix_fss_metadata и -fix_fss_data у Firebird 2.5 предназначены для приведения чарсета метаданных (и данных), которые были записаны в некорректной кодировке. Например, при редактировании процедур или триггеров в код могли попасть комментарии или константы в кодировке none, в то время когда они на самом деле являются символами 1251.

Если при restore gbak выводит сообщение об ошибке

то нужно принудительно указать нужную кодировку при помощи указанных опций. После этого в столбцах unicode данные будут записаны корректно.

gbak от Firebird 2.5 также может выдавать сообщение

gbak:Invalid metadata detected. Use -FIX_FSS_METADATA option.

что сигнализирует об аналогичной ситуации, и требует явного указания данной опции с нужной кодировкой.

! Указывать опции -fix. можно ТОЛЬКО ОДИН РАЗ! Если вы сделаете еще раз backup/restore этой же базы данных с этими опциями, то исходные тексты процедур и триггеров БУДУТ ИСПОРЧЕНЫ!

Другие параметры gbak — InterBase 2007 и выше

-preallocate n

весьма странная опция, учитывая то, что она «добивает» базу данных до указанного в n размера страниц, а не аллокирует сразу эти страницы в момент начала restore. Физически это выглядит следующим образом:

gbak -c -pr 1300000 db.gbk db.gdb.

1. сначала пройдет restore
2. в конце restore сервер добьет базу нужным числом страниц до заданного размера. Если размер страницы базы db.gdb был 4096 байт, то размер файла будет ровно 5324800000 байт (1.3 млн страниц умножить на 4096. то есть, к счастью, preallocate не плюсует размер преаллокирования к размеру БД).

Причем, с этого момента значение preallocate будет кочевать из базы в бэкап и обратно, до тех пор пока при очередном restore не будет сброшено опцией -pr 0.
Одновременно, если вы поменяете при restore размер страницы, автоматически изменится и значение preallocate, чтобы соблюсти заданный размер независимо от размера страницы.

Если вы делаете restore бэкапа рабочей базы себе на компьютер, то сначала посмотрите gstat -h db.gdb, нет-ли там опции preallocate. Если есть — при restore придется указать -pr 0, иначе сервер развернет базу у вас на компьютере в полный размер preallocate.

Services API — restore

Здесь все то же самое, что и при создании резервной копии:

Восстановление (например, проверочное) на тот же самый диск, где находится резервная копия, не так опасно, как в случае backup (когда свободное место может кончиться, и резервная копия будет неполной, да еще и база данных может быть повреждена). Но разумеется имеет те же самые проблемы с производительностью, когда восстановление проводится на тот же самый физический диск (поочередные чтение и запись с разных участков диска). Поэтому при восстановлении базы данных из резевной копии рекомендуется использовать разные физические диски.

Ошибки при restore

Причины «невосстановимости» резервных копий подробно описаны в статье. Здесь я опишу в общих чертах причины и моменты, когда такие ошибки могут произойти. Если вернуться к описанию последовательности процесса restore, то можно сказать следующее:

  • на этапах 1 и 2 (создание БД и создание описаний таблиц и индексов) ошибки вряд ли могут произойти. Разве что если вы пытаетесь создать БД там, где это сделать невозможно — нет прав, read-only носитель и т.п.
  • на этапе 3 (заливка данных) могут быть ошибки, которые «чинятся» повтором restore с параметром -o
  • на этапе 4 (заливка процедур, триггеров и т.п.) могут быть ошибки, связанные с некорректным blr (двоичным кодом) процедур и триггеров. Текст процедур и триггеров в этот момент никакого значения не имеет, он даже может отсутствовать в оригинальной базе и резервной копии.
  • на этапе 5 (создание индексов) могут быть ошибки, связанные с нарушением целостности первичных, вторичных и уникальных ключей (повреждения индексов в базе). До Firebird 2.0 такие ошибки приводили к прекращению restore, и в базе оказывались неактивными все индексы, шедшие после «проблемного». Firebird 2.0 продолжает активирование индексов после такой ошибки.

Соответственно, при возникновении ошибки вы получаете «неполноценную» базу данных, в которой может быть часть данных, данные без триггеров, данные с процедурами и триггерами, но без части индексов.

Если в БД не оказалось процедур или триггеров, то их надо извлечь в виде скрипта из оригинальной базы, и создать в новой БД. Если в БД нет части индексов, то их надо пробовать активировать по очереди (вручную), одновременно корректируя данные, которые препятствуют созданию соответствующего индекса (дубликаты первичного ключа, отсутствующие данные для вторичного ключа, и т.д.)

Хуже, если резервная копия оказывается битой сама по себе. В данном случае сможет помочь только инструмент IBBackupSurgeon, который позволяет «вытащить» все что было в резервной копии, полностью или по частям, даже если резервная копия имеет повреждения «посередине».

Заключение по restore

Никогда не используйте параметр -r. Всегда используйте -v — это поможет вам определить в случае ошибки, что восстановилось из БД, а что нет. Если во время restore произошла ошибка, то база данных будет в состоянии shutdown, т.е. к ней сможет присоединиться только SYSDBA или владелец БД. Поэтому невозможность для обычных пользователей подсоединиться после restore может служить дополнительным сигналом, что восстановление не прошло нормально, если вы не проверяете логи restore.

Как правило, restore по времени занимает в 2-4 раза дольше, чем backup. Это не относится к восстановлению из резервных копий nbackup или online dump.

Замечание по Services API

Вы уже в курсе, что можно заставить сервер делать backup или restore, через Services API — компонентами или утилитой gbak с опцией -se.

Как показывают тесты, как минимум backup через Services API происходит быстрее, чем с использованием локального протокола или tcp. Однако, если потребуется прекратить процесс backup или restore, то

  • для gbak -b/-c достаточно принудительно снять (завершить) процесс gbak.exe, или если он запущен интерактивно, нажать в окне cmd Ctrl-C. Поскольку backup или restore выполняется не сервером, а утилитой gbak, этот процесс будет прекращен.
  • для backup и restore, выполняемых через Services API, это возможно только остановкой сервера, т.к. именно он выполняет этот процесс.

Автоматизация резервного копирования

Автоматизацию резервного копирования можно выполнить как самостоятельно, так и при помощи готовых инструментов. Например, как готовое решение можно использовать наш FBDataGuard Community Edition, который не только защищает базу данных от повреждений, но и может делать резервные копии по расписанию, тестовое восстановление, а также отправку уведомлений по email, и много других полезных вещей. Кроме него, разумеется, есть ряд других инструментов для автоматизации резервного копирования (только), но здесь мы их рассматривать не будем.

Что нужно помнить при самостоятельной автоматизации резервного копирования, производимой скриптами, написанными вручную

  1. команда gbak -b database.gdb database.gbk сотрет имеющуюся резервную копию с именем database.gbk
  2. не рекомендуется сохранять резервную копию на тот же самый логический диск, где находится база данных. Исключением можно считать одинокий клиентский компьютер, у которого есть только один диск C:.

Итак, у нас есть утилита командной строки gbak, и средства операционной системы для периодического выполнения команд — в Windows это AT или «планировщик заданий», в Unix — cron. Вот пример использования at в Windows:

Создаем файл backup.cmd. В файле должна быть одна команда создания резервной копии БД, возможно с параметром, указывающим некое число или день.

Здесь всего три строки — последние «две» на самом деле одна строка, здесь разбита на две части для облегчения читаемости. Полные пути прописаны для того, чтобы backup.cmd можно было вызвать из любого каталога.

Если мы вызовем командный файл как

то в результате в каталоге d:\backup будет создана резервная копия data1.gbk и лог data1.log

Теперь автоматизируем вызов at. Можно открыть окно командной строки (Пуск, выполнить, cmd), а можно открыть в Панели управления окно планировщика задач и задать нужные параметры интерактивно. Я приведу текст командного файла conf_at.cmd, который автоматически задает для AT создание резервных копий каждый день недели:

Теперь можно вызвать этот командный файл как

в результате каждый день недели ровно в 3 часа ночи at будет запускать backup.cmd с соответствующим параметром. И мы в каталоге d:\backup получим т.н. «револьверный» бэкап, то есть по одной резервной копии на каждый день недели, которые будут перезаписываться каждый день.

Имена резервных копий будут dataMon.gbk, dataTue.gbk и т.п., что не совсем удобно при просмотре каталога. Вместо Mon, Tue и так далее можно задать номера дней 1, 2, 3. только главное не забыть, какой день недели у вас соответствует цифре 1.

Это самый примитивный вариант, который не обрабатывает ошибки при выполнении резервного копирования. Если вы не будете проверять логи бэкапа, то может оказаться что все резервные копии «дефективные». Поэтому нужно не только регулярно проверять логи, но и периодически делать тестовое восстановление например из самой последней резервной копии.

Если backup делается на другой компьютер, то нужно задавать команды AT от имени пользователя, который имеет право доступа к разделяемой папке на этом компьютере. Также можно добавить обработку ошибок в backup.cmd, даже с отправкой email в случае ошибки, но это выходит за рамки статьи.

Вот здесь еще один пример автоматизации, более сложный, с тестовым восстановлением, уведомлением по email, обработкой ошибок. Разумеется, в качестве готового решения он не годится, но вполне подходит как пример.

Автоматизированное восстановление

на самом деле зло. Что, если автоматический бэкап завершился с ошибкой? Что будет, если при автоматизированном восстановлении возникнет ошибка?

Крайний случай — бэкап все время в один и тот же файл, восстановление с ключом -r, да еще и все это на одном логическом диске. Как результат (случившийся в одной компании) — неполный бэкап и убитая база.
Поэтому, если вы зачем-то делаете автоматизированное восстановление, то оригинальную базу ни в коем случае с «рабочего места» удалять нельзя, ее нужно переименовывать и оставлять на месте до тех пор, пока не будет сделано очередное резервное копирование новой базы.

Соответственно, примеров автоматизированного восстановления не даю. Схематически верный вариант изложен в разделе об опциях restore.

Программирование

четверг, 17 марта 2011 г.

Установка InterBase и Firebird вручную

В этой статье пойдет речь об установке InterBase и Firebird на Windows, заранее приношу извинения пользователям Unix. Тем не менее, пользователи Unix могут извлечь для себя полезную информацию из этой статьи.

Кому будет полезна эта статья

* тем, кто хочет научиться устанавливать InterBase или Firebird в тех случаях, когда нет инсталлятора под рукой.
* тем, кто хочет восстановить «убитую» инсталляцию конкретной версии InterBase/Firebird, которая пострадала из-за установки другой версии.
* тем, кто хочет работать (одновременно или попеременно) с разными версиями этих серверов на одном компьютере
* тем, кто хочет узнать, что же именно на самом деле происходит при установке InterBase и Firebird.

* Из каких файлов состоит сервер
* Установка вручную
o установка сервера
o установка только клиентской части
o запуск сервиса
* Установка или обновление «поверх»
* Установка серверов «рядом» и поочередный запуск
* Одновременный запуск
* Firebird 2.0, поочередный и одновременный запуск

Все остальное — лишнее, то есть серверу для работы не нужно.

замечание: некоторые версии InterBase и Firebird молча запускаются во втором экземпляре, даже если они уже работают (как сервис или как приложение). Соответственно, если в конфигурации для второго экземпляра не изменен номер порта, то он работать не будет, т.к. первый экземпляр уже перехватил порт tcp. Будьте внимательны при запуске разных серверов на компьютере — вполне может быть, что в момент запуска Firebird как приложения, уже работает InterBase (или наоборот). Если при этом открыть базу, которая совместима по ODS с обоими серверами, то можно «случайно испортить» метаданные (или blr триггеров и процедур), открыв базу «не тем» сервером.

instreg.exe, firebird.msg/interbase.msg, gds32.dll.

60 мегабайт (обновление 7.5.1 SP1 содержит только файлы, и может быть легко установлено «поверх»).

А Ковязин — Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil

99 Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания.

Скачивание начинается. Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Описание книги «Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil»

Описание и краткое содержание «Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil» читать бесплатно онлайн.

Добро пожаловать в форум.

Тема: «Мир Interbase..» или «FireBird..» Что выбрать

Начинаю потихоньку знакомиться с InterBase и решил приобрести книжку (поскольку с монитора читать довольно тяжело). Почитав отзывы, понял, что выбирать придется между «Мир InterBase» (Ковязин, Востриков) и «FireBird. Руководство разработчика баз данных) (Х.Борри). К сожалению, денег на обе не хватит.

В связи с этим вопросы:

·Какая из этих книг доступнее для новичка, только начинающего изучать СУБД и проектирование БД

·В какой степени эти книги, так сказать, взаимозаменяемы. Т.е. насколько знания, полученные из книги про InterBase(например) применимы для работы с FireBird и наоборот.

Заранее всем спасибо за ответы.

С уважением, Londinium

1. Если ты совсем новичек, то бери первую — в ней доступнее.

2. Если ты новичек только в ИБ, то лучше вторую.

3. Вторую книжку желательно иметь под рукой по-любому — независимо от того, есть ли первая.

4. Важно — во второй нет нихрена (кажется) про библиотеки доступа (IBX, FIBPlus).

5. Знания про InterBase, полученные из первой книги, применимы к FireBird практически в полном объеме.

InterBase — быстрый старт.

Перед тем как начать разрабатывать приложения баз данных с помощью InterBase, необходимо позаботиться о его установке. Обычно InterBase устанавливают как на сервер, так и на рабочую станцию программиста, разрабатывающего приложение. Разработчику InterBase нужен для внутренних экспериментов и отладки рабочих версий базы данных и программ, а InterBase на сервере используется для тестирования программы пользователями или совместной разработки в случае, если над проектом работает команда. Благодаря своей легковесности и нетребовательности к ресурсам InterBase можно спокойно устанавливать прямо на рабочие станции разработчиков, не беспокоясь о снижении быстродействия. Когда InterBase не обслуживает подключений к базам данных, находясь в ожидании запросов, то занимает памяти меньше, чем такие популярные программы, как ICQ или WinAmp.

Прежде чем устанавливать InterBase, надо решить, какой из его клонов (версий) мы выберем для работы. Прежде всего надо сказать, какую версию однозначно НЕ РЕКОМЕНДУЕТСЯ использовать. Это бета-версия InterBase 6.0.хх, одна из самых первых версий, выпущенных после объявления InterBase 6 бесплатным. Версия InterBase 6.x послужила основой для выпуска трех клонов — Firebird, InterBase 6.5 и Yaffil.

Клон Firebird появился вскоре после опубликования исходных кодов InterBase 6.x. Он является абсолютно бесплатным продуктом в открытых кодах (open source). В его создании принимало участие множество бывших сотрудников InterBase Software Corporation. Версия Firebird 1.0 отлично подойдет для освоения материала этой книги и начала работы с InterBase.

Компания Borland в конце 2001 года выпустила версию InterBase 6.5. Ее также можно установить и использовать для изучения материала этой книги. Для этих целей можно воспользоваться триал-версией с ограничением времени использования в 90 дней. Эту версию InterBase 6.5 можно скачать с сайта компании Borland.

Помимо Firebird и InterBase, существует еще и российская ветка InterBase 6.x — Yaffil, который отпочковался от Firebird в 2001 году. Yaffil существует пока только для платформы Windows, и часть его кода оптимизирована именно для этой ОС. Подробнее о новых свойствах Yaffil можно узнать в приложении «Yaffil — российский клон InterBase 6.x». Yaffil также можно использовать для изучения материала этой книги.


Следует отметить, что все клоны InterBase 6.x совместимы между собой и базу данных с одного сервера можно легко перевести под другой с помощью процесса backup/restore (см. главу «Миграция» (ч. 4)). Поэтому ничего страшного не произойдет, если вы пожелаете сменить одну версию (и даже клон) InterBase 6.x на другую.

Многих разработчиков пугает значительное разнообразие версий и потомков InterBase 6 и вызывает чувство неуверенности — много разных СУБД, которые непонятно чем отличаются. На самом деле это совершенно нормальная ситуация, типичная для проекта Open Source и свидетельствующая о том, что InterBase 6 активно развивается. Аналогичная ситуация сложилась и в Linux- сообществе, где количество возможных сочетаний ядро + дистрибутив давно перевалило за сотню.

Немного «пообщавшись» с InterBase (с любым его клоном), вы легко сможете выбрать, что же больше подходит для конкретной задачи.

Вопрос — где находятся дистрибутивы различных клонов InterBase? Различные варианты дистрибутивов представлены на сайте поддержки данной книги www.InterBase-world.corn, а также на сайте http://www.ibase.ru. Там же обычно можно получить ссылку на самый «свежий» дистрибутив всех клонов InterBase, а также массу другой полезной информации по использованию InterBase и разработке приложений баз данных.

Непосредственно из первоисточника дистрибутивы и исходные коды InterBase можно взять на сайте http://sourceforge.net/projects/InterBase, а дистрибутивы Firebird — на сайте http://sourceforge.net/projects/Firebird. В общем, хорошая поисковая машина вам поможет в получении практически любого дистрибутива.

На компакт-диске с Delphi Client/Server и Enterprise Edition всех версий (3.x, 4.x, 5.x и 6.x) также содержится InterBase, обычно версии 5.х/6.х. Его также можно использовать для работы с материалом этой книги, за исключением некоторых моментов, которые описывают функциональность, присущую только некоторым версиям клонов InterBase.

Определившись с версией InterBase, следует выбрать, под какой ОС мы будем работать. Для нашего случая предположим, что работа будет происходить на ОС Windows (версии старше 95 или NT 4.0). Если вы поклонник другой ОС, не расстраивайтесь: существуют дистрибутивы для Linux/Unix, FreeBSD, Solaris, и даже Mac OS X Darwin. Здесь мы рассмотрим процесс установки для платформ Windows и Linux, предполагая, что именно одна из этих ОС установлена на вашем рабочем компьютере.

Если в будущем потребуется «переехать» на другую ОС, нет проблем: это несложная процедура, которую мы рассмотрим в главе «Миграция».

Установка InterBase на платформе Windows

Подготовка к установке

Инсталлятор (программа, которая занимается установкой продукта) любого клона InterBase занимает всего около 5,5 Мбайт. Для запуска установки просто запустите файл установки (он может называться xxWin32SetupXX.exe, где хх определяют различные версии клонов InterBase).

Давайте рассмотрим установку клона InterBase 6.x — Firebird 1.0. Установка других клонов ничем кардинально от Firebird не отличается.

Если на компьютере, куда устанавливается InterBase, уже установлена любая версия InterBase, то ее сначала необходимо обязательно остановить. Для этого следует воспользоваться либо «Панелью управления» Windows, апплетом «Службы», если установка идет на Windows NT72000/XP, либо иконкой InterBase- сервера на панели задач Windows, если устанавливаем на Windows 95/98/Ме.

Внимание! Остановка уже существующей версии InterBase при установке новой обязательна. Рекомендуется вообще удалить предыдущую версию, чтобы не сталкиваться с конфликтами обновления файлов. Желательно удалить файлы gds32.dll из всех папок данного компьютера, указанных в переменной пути поиска Path (проще всего это сделать так: поискать на локальных дисках gds32.dll и удалить их отовсюду, кроме папок с дистрибутивами).

После запуска инсталлятора появится оповещение о том, что ставится именно та версия, которая нам нужна, — в данном случае Firebird 1.0. Нажмите Next для перехода к следующему шагу установки. На экране появится текст InterBase Public License. Выберите I agree и перейдите к следующему шагу. Появится окно, в котором предлагается выбрать путь для установки Firebird. Это важная опция. Обычно по умолчанию инсталлятор предлагает путь C:\Program FilesMnterBase. Однако часто имеет смысл переопределить этот путь во что-то вроде C:\IBServer.

Выбрав путь для установки, нажмите Next для перехода к следующему шагу установки. При этом на экране появится окно, изображенное на рис. 1.1. (вполне возможно, что дизайн его может отличаться для различных версий InterBase, но смысл остается тем же). На этом шаге мы выберем компоненты, необходимые для работы. Этот выбор достаточно прост — выберите все компоненты, находящиеся в списке. Как видите, они займут весьма скромное место на диске — всего около 16 Мбайт.

Если же на компьютере, куда устанавливается InterBase, существует недостаток дискового пространства, то можете ограничиться только опциями Server for Windows, Client for Windows и Command Line Tools. Абсолютно минимальная установка InterBase описана в главе «Установка InterBase — взгляд изнутри» (ч. 4).

Нажмите Next для перехода к следующему шагу.

Внимание! В этот момент инсталлятор может выдать сообщение «InterBase is running on this machine. » и прекратить установку. Это означает, что на компьютере уже установлен и запущен InterBase (возможно, он был установлен вместе с Delphi). В этом случае надо удалить предыдущую версию InterBase, согласно рекомендациям раздела «Подготовка к установке». После чего можно продолжить установку.

Если же после выбора компонентов не возникло никаких проблем и началось копирование файлов, то все в порядке, просто дождитесь завершения копирования, затем нажмите Finish.

Вот и все — установка InterBase закончилась. Обратите внимание, что для ее завершения не понадобилась перезагрузка компьютера — сервер уже запустился. Если вы используете ОС Windows 95/98/Ме, то работающий InterBase отобразится на панели задач в виде значка среди системных иконок, если NT 4/2000 — то сервер запустится как служба (service) и на экране никак его функционирование не отразится — наблюдать за его статусом и управлять работой можно лишь через апплет «Панели управления» «InterBase Manager» или через аплет «Службы» («Services»).

Рис 1.1. Выбор компонентов при установке Firebird

Установка InterBase на платформе Linux/Unix

Установка InterBase под Linix немного сложнее, чем на Windows, если вы не являетесь знатоком этой ОС. Для Linux InterBase (а также Firebird) существуют два варианта архитектуры сервера — SuperServer и Classic. Про их различия, а также про достоинства и недостатки поговорим позже, в главе «Classic и SuperServer», а пока будем считать, что речь идет о сервере с архитектурой SuperServer.

Инсталляционный пакет под Linux бывает двух видов — в формате rpm (для некоторых дистрибутивов Linux типа RedHat) и tar.gz (более универсальный пакет). Что это такое, можно узнать в любом приличном руководстве по Linux/Unix. Скачайте инсталляционный пакет того или иного вида (например, с сайта www.lnterBase-world.com) и можно приступать к установке.

Похожие книги на «Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil»

Книги похожие на «Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil» читать онлайн или скачать бесплатно полные версии.

Начинаем работать с Firebird Sql Server

Что такое Firebird SQL Server?

Firebird SQL Server — сервер баз данных основанный на открытом исходном коде InterBase 6.0. Дистрибутивы Firebird существуют под Windows, Linux, Unix, Solaris, MacOS, под 32-х и 64-х битную архитектуру. Firebird SQL Server распространяется бесплатно и не имеет лицензионных ограничений.

Какую версию Firebird выбрать?

На сегодняшний момент новейшая версия — Firebird 3.0. Стабильная версия Firebird 2.5.

Установка Firebird — выбор типа сервера

Сервер Firebird SQL доступен в 3-х вариантах:

  • Firebird Super Server
  • Firebird Classic Server
  • Firebird Embedded

Firebird Super Server

Firebird Super Server — все клиентские подключения обслуживаются одним серверным процессом, имеется общий клиентский кеш. За счет этого достигается меньший расход ресурсов на обслуживание клиентов. Недостатком Firebird Super Server является отсутствие возможности задействовать несколько процессоров для работы Firebird сервера.

Firebird Classic Server

Firebird Classic Server — на каждое клиентское подключение создает отдельный серверный процесс. Архитектура Firebird Classic Server более надежна, т.к. сбой одного серверного процесса не вызывает отказ в обслуживании всех клиентов. Кроме того, Firebird Classic позволяет задействовать многопроцессорную архитектуру. При установке Firebird вы можете выбрать между версиями Firebird Super Server или Firebird Classic Server.

Firebird Embedded

Firebird Embedded Server — предназначен для встраиваемых баз данных. Состоит из одной dll — fbembed.dll, которая включает в себя клиент и сервер Firebird Super Server. Firebird Embedded не требует установки на клиентской рабочей станции. Достаточно просто скопировать fbembed.dll и еще несколько файлов клиенту на компьютер.

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

Firebird Embedded Server распространяется отдельным дистрибутивом.

Если затрудняетесь с выбором

Если вы не уверены в выборе типа установки Firebird, то используйте Firebird Super Server. В дальнейшем вы без труда сможете изменить архитектуру сервера.

Начало работы с Firebird

Для знакомства с Firebird можно использовать тестовую базу данных employee.fdb. Она входит в установочный комплект Firebird и расположена в папке Program Files\Firebird\Firebird\examples\empbuild\.

Создание новой базы Firebird

Для создания пустой базы Firebird:

  • запустите утилиту C:\Program Files\Firebird\Firebird\bin\isql.exe
  • выполните инструкцию создания базы данных:

Use CONNECT or CREATE DATABASE to specify a database SQL> CREATE DATABASE ‘localhost:d:\temp\test.fdb’ user ‘SYSDBA’ password ‘masterkey’ DEFAULT CHARACTER SET WIN1251;

В ISQL каждое выражение завершается точкой с запятой.

Проверить подключение можно, выполнив запрос:

SQL> select MON$DATABASE_NAME from MON$DATABASE;

Если все сделано правильно, SQL запрос вернет путь к подключенной базе данных:

Безопасность Firebird

  • Firebird хранит всех пользователей в одной служебной базе данных security.fdb.
  • Начиная с Firebird 2.1 реализована поддержка SSPI аутентификации средствами Windows. Администраторы домена на уровне БД определяются как суперпользователи SYSDBA.
  • В Firebird 3.0 планируется реализовать возможность хранения пользователей в клиентской базе данных.

Пользователь SYSDBA. Смена пароля по умолчанию

SYSDBA — это административный пользователь Firebird с исключительными правами. Пароль по умолчанию: masterkey. Для того чтобы сменить пароль, используйте утилиту gsec из состава Firebird:

c:\Program Files\Firebird\bin>gsec GSEC> modify SYSDBA -pw NEW_PASS

При помощи утилиты gsec можно создавать, удалять, модифицировать и просматривать пользователей. Полный список команд можно получить, набрав help.

Подключение к Firebird из клиентского приложения

Для начала скачайте и установите пакет IBProvider Professional Edition.

IBProvider Professional Edition — это набор COM-компонент, которые позволяют работать с любыми версиями Firebird и InterBase. Компоненты поддерживаются большинством средств разработки: Delphi, C++ Builder, Visual C++, .Net Framework, C#, Visual Basic, VBScript, VBA и др.

Для проверки подключения к Firebird напишем простой сценарий на языке VBScript. Создайте пустой файл с расширением vbs и вставьте в него следующий код, указав правильный путь к базе данных:

Запустите скрипт на выполнение в режиме командной строки, и вы увидите список активных подключений к БД.

Firebird и VBScript, Visual Basic, VBA

Для доступа к Firebird и InterBase из VBScript, VBA, Visual Basic используется библиотека ADO (ActiveX Data Objects). Множество примеров работы с этой библиотекой вы найдете в документации: примеры InterBase, Firebird VBScript, VBA, Visual Basic.

Firebird и Delphi

IBProvider предлагает несколько способов работы с InterBase и Firebird из Delphi:

  • dbGo (ADO Express) компоненты, работающие через библиотеку ADO.
  • прямой доступ к COM-интерфейсам ADO, минуя компоненты dbGo.
  • прямой доступ к COM-интерфейсам OLE DB при помощи сторонних VCL-компонент (OLE DB Direct/OLE DB Express).

Firebird и .Net

Для доступа к Firebird из .Net используется библиотека ADO.NET. На сайте IBProvider опубликовано большое пошаговое руководство, посвященное работе с Firebird в Visual Studio .Net (ADO.NET).

Дополнительные материалы по теме:

Firebird и C++

В состав IBProvider Professional Edition входит C++ библиотека, которая предоставляет самый быстрый способ работы с OLE DB провайдерами из Visual C++ 2005-2008, а так же из C++ Builder.

Редактирование базы Firebird

В пустой базе данных необходимо создать таблицы, связи между таблицами, первичные ключи, индексы, хранимые процедуры, генераторы и другие объекты. Для редактирования баз данных Firebird вы можете использовать утилиту isql.exe.

SQL> CREATE TABLE cross_rate CON> ( CON> from_currency VARCHAR(10) NOT NULL, CON> to_currency VARCHAR(10) NOT NULL, CON> conv_rate FLOAT NOT NULL, CON> update_date DATE, CON> CON> PRIMARY KEY (from_currency, to_currency) CON> );

Вставляем одну запись и делаем выборку из таблицы:

SQL> INSERT INTO cross_rate VALUES (‘Dollar’, ‘CdnDlr’, 1.3273, ’11/22/93′); SQL> SELECT * from cross_rate; FROM_CURRENCY TO_CURRENCY CONV_RATE UPDATE_DATE ============= =========== ============== =========== Dollar CdnDlr 1.3273000 1993-11-22

Помимо isql существует различные графические утилиты администрирования Firebird.

Утилиты администрирования Firebird

FlameRobin

IBExpert


IB/FB Development Studio

Blaze Top

Database Workbench

Database Workbench — поддерживает несколько серверов баз данных, среди которых есть Firebird и InterBase. Отладка хранимых процедур, анализ планов, встроенные средства переноса данных и метаданных.
Лицензируется отдельно на InterBase и отдельно на Firebird. 171$ за каждый движок (InterBase или Firebird).
Сайт: Database Workbench

Firebird/Interbase

Система управления базами данных

Все подряд

Лучшие

Авторы

  • AlexeyKovyazin 25 марта 2020 в 13:38

Поточная конвертация баз Firebird 2.5 в формат ODS12 (Firebird 3.0)

У каждой версии Firebird есть собственная версия формата дисковых структур базы данных – O(n)D(isk)S(tructure). До версии 2.5 включительно, движок Firebird мог работать с ODS предыдущих версий, то есть базы от старых версий открывались новой версией и работали в режиме совместимости, но движок Firebird 3.0 работает только с БД в собственной ODS версии 12.0.

Чтобы перейти на 3.0, базу данных от 2.5 необходимо преобразовывать в новый формат через backup/restore. Разумеется, мы предполагаем, что БД была предварительно подготовлена для конвертации — т.е. метаданные и запросы были проверены на совместимость с Firebird 3.0.

Если следовать стандартному подходу, это означает, что нужно произвести бэкап на версии 2.5, затем установить 3.0 и сделать рестор. Такая процедура приемлема, если есть достаточно времени, но при миграции больших баз данных, или при одновременной миграции нескольких десятков БД, когда время поджимает, можно воспользоваться поточной конвертацией, которая на 30-40% быстрее. Как именно это сделать (под Windows и под Linux), читайте под катом.

Новости

Сравнение качества кода Firebird, MySQL и PostgreSQL

SergeyPyankov 24 июля 2020 в 00:08

Тестирование БД мобильного Delphi-приложения

В предыдущем материале «Выбор СУБД для мобильного Delphi-приложения», как следует из его названия, был показан первый этап в разработке той подсистемы приложения, что отвечает за хранение и бо́льшую часть обработки его данных; уточнение про «бо́льшую часть» сделано неспроста, т. к. в итоге обозначенный выбор пал на СУБД Interbase именно из-за возможности применять хранимые процедуры (ХП), которые и стали сосредоточением основной логики по работе с данными, оставляя за Делфи-кодом несложную задачу по их вызову.

Для лучшего понимания необходимости тестирования в данном конкретном случае, нужно отметить, что в описанном проекте изначально была задана довольно высокая планка качества, поддержание которой в части функционала, реализованного в процедурах, достиглось, в том числе, за счёт автотестов, проверяющих ключевые ХП (они ответственны за критический для приложения функционал – систему рекомендаций). Именно один из способов организации такого тестирования – на основе DUnitX и XML – и является предметом статьи.

sim_84 27 июня 2020 в 09:37

Создание приложений с использованием Firebird, jOOQ и Spring MVC

Всем привет. На этот раз будет описан процесс создания web приложения на языке Java с использованием фреймворка Spring MVC, библиотеки jOOQ и СУБД Firebird.

Для упрощения разработки вы можете воспользоваться одной из распространённых IDE для Java (NetBeans, IntelliJ IDEA, Eclipse, JDeveloper или др.). Лично я использовал NetBeans. Для тестирования и отладки нам так же потребуется установить один и веб-серверов или серверов приложения (Apache Tomcat или Glass Fish) Создаём проект на основе шаблона Maven проекта веб-приложения.

Рекомендуем

Раскрываем преступление при помощи кода: блокчейн-квест в стиле нуар

Биохакинг здорового человека или выводим жизнь на новый уровень

Чертовски умный дом: может ли бытовая техника зависать в инете и отправлять твиты

Шифрование БД под управлением Firebird 3.0

mail-online 12 января 2020 в 20:09

Как создать свою файловую систему на основе blob полей в базе данных. Почему это удобно. Вопросы эффективности

Уважаемые читатели. Это третья статья из цикла по базам данных.

  1. Как сделать разный часовой пояс в разных базах данных на одном сервере.
  2. Как вести логи изменений данных пользователями в базе данных, сохраняя их в другой базе данных (чтобы база основная база данных не забивалась мусором и не росла)
  3. Как создать свою файловую систему на основе blob полей в базе данных. Почему это удобно. Вопросы эффективности хранения файлов (как получить максимальное быстродействие и при этом минимальное занимаемое место)

Данный способ – способ реализации хранения файлов, приложенных пользователем на сайте, через веб интерфейс. Это не будет “файловой системой” в том понимании как это организовано в операционной системе.

Пример, описанный в этой статье, будет решать задачу стоявшую когда-то у меня: “Выделить раздел внутри аккаунта компании на веб сайте, где сотрудники компании смогут хранить свои файлы, создавать папки (назовем его “Диск”). Диск должен быть изолированным от аккаунтов других компаний и должен интегрироваться в процессы работы аккаунта (организация хранения файлов, прикладываемых к задачам, проектам, карточкам контрагентов, отчетов и т.п.) ”.

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

mail-online 18 декабря 2020 в 15:33

Как вести логи изменений данных пользователями в базе данных, сохраняя их в другой базе данных

Уважаемые читатели. Это вторая статья из цикла по базам данных. Решил сделать некоторое оглавление по планируемым статьям этого цикла:

  1. Как сделать разный часовой пояс в разных базах данных на одном сервере.
  2. Как вести логи изменений данных пользователями в базе данных, сохраняя их в другой базе данных, для того чтобы основная база данных не забивалась мусором и не росла.
  3. Как создать свою файловую систему на основе blob полей в базе данных. Почему это удобно. Вопросы эффективности хранения файлов: как получить максимальное быстродействие и при этом минимальное занимаемое место.

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

Так же я приветствую конструктивную критику. Бывает люди пишут интересные вещи и ты можешь взглянуть на проблему под углом, о котором не предполагал и как-то улучшить свои механизмы.

База данных firebird 3.

Формулировка задачи следующая: необходимо писать подробные логи изменений данных пользователями в базе данных (insert, update, delete), но при этом писать их в другой базе данных на другом сервере. Необходимо это для того чтобы размер основной базы данных не рос как на дрожжах, ее удобно было бекапить, ресторить, чтобы она работала быстро, не накапливала мусора, не содержала лишней и редконужной информации.

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

mail-online 15 декабря 2020 в 11:54

Как сделать разный часовой пояс в разных базах данных на одном сервере

Уважаемые Хабравчане, решил поделиться с Вами техническим решением некоторых интересных и на первый взгляд не очевидных проблем. Всю жизнь я в основном только черпал информацию, читал замечательные статьи (в том числе на Хабре) очень помогавшие мне в решении тех или иных технических проблем. Но в последние 2 года, занявшись разработкой своей облачной платформы для автоматизации предприятий, мне пришлось решать довольно много задач “впервые”, т.е. которые если кто-то и решал, то описания (даже близко) я не находил. В связи с этим я решил написать 3 цикла статей: цикл по базам данных, цикл по безопасности и цикл по системам автоматизации. Эта статья — первая статья первого цикла.

Краткая формулировка задачи: каким-то образом current_date, current_time и current_timestamp должны выдавать дату-время в зависимости от настроек в аккаунте пользователя и при этом на самом сервере будет стоять московское время.

Система задумывалась неограниченно масштабируемая, с огромным числом потенциальных пользователей в любом регионе нашей необъятной страны, в какой-то момент встал вопрос, а удобно ли будет пользователям, например во Владивостоке, работать в системе с московским временем. Сервера то находятся в Москве, на них стоит московское время, при этом каждому пользователю (не важно, из какого он региона) выделяется несколько своих (индивидуальных) баз данных и все они находятся, грубо говоря, на одном сервере. Делать под каждый часовой пояс свой сервер глупо, да и не возможно с точки зрения концепции системы, ибо любой пользователь в любой момент может часовой пояс поменять.

sim_84 14 декабря 2020 в 12:27

Создание web приложения на PHP с иcпользованием Firebird и Laravel

В прошлой статье я рассказывал о пакете для поддержки СУБД Firebird в фреймворке Laravel. На этот раз мы рассмотрим процесс создания web приложения с использованием СУБД Firebird на языке PHP с использованием Laravel.

Обзор драйверов для работы с Firebird

Обзор расширения Firebird/Interbase

Расширение Firebird/Interbase появилось раньше и является наиболее проверенным. Для установки расширения Firebird/Interbase в конфигурационном файле php.ini необходимо раскомментировать строку

или для UNIX подобных систем строку

Это расширение требует, чтобы у вас была установлена клиентская библиотека fbclient.dll/gds32.dll (для UNIX подобных систем fbclient.so) соответствующей разрядности.

Замечание для пользователей Win32/Win64

Для работы этого расширения системной переменной Windows PATH должны быть доступны DLL-файлы fbclient.dll или gds32.dll. Хотя копирование DLL-файлов из директории PHP в системную папку Windows также решает проблему (потому что системная директория по умолчанию находится в переменной PATH), это не рекомендуется. Этому расширению требуются следующие файлы в переменной PATH: fbclient.dll или gds32.dll.

sim_84 17 октября 2020 в 13:43

Пакет для работы с СУБД Firebird в Laravel

Привет Хабр! В прошлой статье я рассказывал о том, как можно добавить поддержку Firebird в Laravel. На тот момент я не знал о существовании пакета jacquestvanzuydam/laravel-firebird и добавлял поддержку Firebird с нуля. Сделано это было через модификацию файлов ядра Laravel, за что я был справедливо раскритикован. Посмотрев пакет jacquestvanzuydam/laravel-firebird, я понял, что его возможности меня не устраивают, и решил расширить его.

В этой статье я хочу описать основные функциональные отличия моего пакета sim1984/laravel-firebird от пакета jacquestvanzuydam/laravel-firebird.

Что не надо делать при работе с interbase, firebird, yaffil

Перед тем как начать разрабатывать приложения баз данных с помощью InterBase, необходимо позаботиться о его установке. Обычно InterBase устанавливают как на сервер, так и на рабочую станцию программиста, разрабатывающего приложение. Разработчику InterBase нужен для внутренних экспериментов и отладки рабочих версий базы данных и программ, а InterBase на сервере используется для тестирования программы пользователями или совместной разработки в случае, если над проектом работает команда. Благодаря своей легковесности и нетребовательности к ресурсам InterBase можно спокойно устанавливать прямо на рабочие станции разработчиков, не беспокоясь о снижении быстродействия. Когда InterBase не обслуживает подключений к базам данных, находясь в ожидании запросов, то занимает памяти меньше, чем такие популярные программы, как ICQ или WinAmp.

Что ставить?

Прежде чем устанавливать InterBase, надо решить, какой из его клонов (версий) мы выберем для работы. Прежде всего надо сказать, какую версию однозначно НЕ РЕКОМЕНДУЕТСЯ использовать. Это бета-версия InterBase 6.0.хх, одна из самых первых версий, выпущенных после объявления InterBase 6 бесплатным. Версия InterBase 6.x послужила основой для выпуска трех клонов — Firebird, InterBase 6.5 и Yaffil.

Клон Firebird появился вскоре после опубликования исходных кодов InterBase 6.x. Он является абсолютно бесплатным продуктом в открытых кодах (open source). В его создании принимало участие множество бывших сотрудников InterBase Software Corporation. Версия Firebird 1.0 отлично подойдет для освоения материала этой книги и начала работы с InterBase.

Компания Borland в конце 2001 года выпустила версию InterBase 6.5. Ее также можно установить и использовать для изучения материала этой книги. Для этих целей можно воспользоваться триал-версией с ограничением времени использования в 90 дней. Эту версию InterBase 6.5 можно скачать с сайта компании Borland.

Помимо Firebird и InterBase, существует еще и российская ветка InterBase 6.x — Yaffil, который отпочковался от Firebird в 2001 году. Yaffil существует пока только для платформы Windows, и часть его кода оптимизирована именно для этой ОС. Подробнее о новых свойствах Yaffil можно узнать в приложении «Yaffil — российский клон InterBase 6.x». Yaffil также можно использовать для изучения материала этой книги.

Следует отметить, что все клоны InterBase 6.x совместимы между собой и базу данных с одного сервера можно легко перевести под другой с помощью процесса backup/restore (см. главу «Миграция» (ч. 4)). Поэтому ничего страшного не произойдет, если вы пожелаете сменить одну версию (и даже клон) InterBase 6.x на другую.

Многих разработчиков пугает значительное разнообразие версий и потомков InterBase 6 и вызывает чувство неуверенности — много разных СУБД, которые непонятно чем отличаются. На самом деле это совершенно нормальная ситуация, типичная для проекта Open Source и свидетельствующая о том, что InterBase 6 активно развивается. Аналогичная ситуация сложилась и в Linux- сообществе, где количество возможных сочетаний ядро + дистрибутив давно перевалило за сотню.

Немного «пообщавшись» с InterBase (с любым его клоном), вы легко сможете выбрать, что же больше подходит для конкретной задачи.

Вопрос — где находятся дистрибутивы различных клонов InterBase? Различные варианты дистрибутивов представлены на сайте поддержки данной книги www.InterBase-world.corn, а также на сайте http://www.ibase.ru. Там же обычно можно получить ссылку на самый «свежий» дистрибутив всех клонов InterBase, а также массу другой полезной информации по использованию InterBase и разработке приложений баз данных.

Непосредственно из первоисточника дистрибутивы и исходные коды InterBase можно взять на сайте http://sourceforge.net/projects/InterBase, а дистрибутивы Firebird — на сайте http://sourceforge.net/projects/Firebird. В общем, хорошая поисковая машина вам поможет в получении практически любого дистрибутива.

На компакт-диске с Delphi Client/Server и Enterprise Edition всех версий (3.x, 4.x, 5.x и 6.x) также содержится InterBase, обычно версии 5.х/6.х. Его также можно использовать для работы с материалом этой книги, за исключением некоторых моментов, которые описывают функциональность, присущую только некоторым версиям клонов InterBase.

Определившись с версией InterBase, следует выбрать, под какой ОС мы будем работать. Для нашего случая предположим, что работа будет происходить на ОС Windows (версии старше 95 или NT 4.0). Если вы поклонник другой ОС, не расстраивайтесь: существуют дистрибутивы для Linux/Unix, FreeBSD, Solaris, и даже Mac OS X Darwin. Здесь мы рассмотрим процесс установки для платформ Windows и Linux, предполагая, что именно одна из этих ОС установлена на вашем рабочем компьютере.

Если в будущем потребуется «переехать» на другую ОС, нет проблем: это несложная процедура, которую мы рассмотрим в главе «Миграция».

Установка InterBase на платформе Windows

Подготовка к установке

Инсталлятор (программа, которая занимается установкой продукта) любого клона InterBase занимает всего около 5,5 Мбайт. Для запуска установки просто запустите файл установки (он может называться xxWin32SetupXX.exe, где хх определяют различные версии клонов InterBase).

Давайте рассмотрим установку клона InterBase 6.x — Firebird 1.0. Установка других клонов ничем кардинально от Firebird не отличается.

Если на компьютере, куда устанавливается InterBase, уже установлена любая версия InterBase, то ее сначала необходимо обязательно остановить. Для этого следует воспользоваться либо «Панелью управления» Windows, апплетом «Службы», если установка идет на Windows NT72000/XP, либо иконкой InterBase- сервера на панели задач Windows, если устанавливаем на Windows 95/98/Ме.

Внимание! Остановка уже существующей версии InterBase при установке новой обязательна. Рекомендуется вообще удалить предыдущую версию, чтобы не сталкиваться с конфликтами обновления файлов. Желательно удалить файлы gds32.dll из всех папок данного компьютера, указанных в переменной пути поиска Path (проще всего это сделать так: поискать на локальных дисках gds32.dll и удалить их отовсюду, кроме папок с дистрибутивами).

Установка

После запуска инсталлятора появится оповещение о том, что ставится именно та версия, которая нам нужна, — в данном случае Firebird 1.0. Нажмите Next для перехода к следующему шагу установки. На экране появится текст InterBase Public License. Выберите I agree и перейдите к следующему шагу. Появится окно, в котором предлагается выбрать путь для установки Firebird. Это важная опция. Обычно по умолчанию инсталлятор предлагает путь C:\Program FilesMnterBase. Однако часто имеет смысл переопределить этот путь во что-то вроде C:\IBServer.

Выбрав путь для установки, нажмите Next для перехода к следующему шагу установки. При этом на экране появится окно, изображенное на рис. 1.1. (вполне возможно, что дизайн его может отличаться для различных версий InterBase, но смысл остается тем же). На этом шаге мы выберем компоненты, необходимые для работы. Этот выбор достаточно прост — выберите все компоненты, находящиеся в списке. Как видите, они займут весьма скромное место на диске — всего около 16 Мбайт.

Если же на компьютере, куда устанавливается InterBase, существует недостаток дискового пространства, то можете ограничиться только опциями Server for Windows, Client for Windows и Command Line Tools. Абсолютно минимальная установка InterBase описана в главе «Установка InterBase — взгляд изнутри» (ч. 4).


Нажмите Next для перехода к следующему шагу.

Внимание! В этот момент инсталлятор может выдать сообщение «InterBase is running on this machine. » и прекратить установку. Это означает, что на компьютере уже установлен и запущен InterBase (возможно, он был установлен вместе с Delphi). В этом случае надо удалить предыдущую версию InterBase, согласно рекомендациям раздела «Подготовка к установке». После чего можно продолжить установку.

Если же после выбора компонентов не возникло никаких проблем и началось копирование файлов, то все в порядке, просто дождитесь завершения копирования, затем нажмите Finish.

Вот и все — установка InterBase закончилась. Обратите внимание, что для ее завершения не понадобилась перезагрузка компьютера — сервер уже запустился. Если вы используете ОС Windows 95/98/Ме, то работающий InterBase отобразится на панели задач в виде значка среди системных иконок, если NT 4/2000 — то сервер запустится как служба (service) и на экране никак его функционирование не отразится — наблюдать за его статусом и управлять работой можно лишь через апплет «Панели управления» «InterBase Manager» или через аплет «Службы» («Services»).

Рис 1.1. Выбор компонентов при установке Firebird

Установка InterBase на платформе Linux/Unix

Установка InterBase под Linix немного сложнее, чем на Windows, если вы не являетесь знатоком этой ОС. Для Linux InterBase (а также Firebird) существуют два варианта архитектуры сервера — SuperServer и Classic. Про их различия, а также про достоинства и недостатки поговорим позже, в главе «Classic и SuperServer», а пока будем считать, что речь идет о сервере с архитектурой SuperServer.

Начинаем работать с Firebird Sql Server

Что такое Firebird SQL Server?

Firebird SQL Server — сервер баз данных основанный на открытом исходном коде InterBase 6.0. Дистрибутивы Firebird существуют под Windows, Linux, Unix, Solaris, MacOS, под 32-х и 64-х битную архитектуру. Firebird SQL Server распространяется бесплатно и не имеет лицензионных ограничений.

Какую версию Firebird выбрать?

На сегодняшний момент новейшая версия — Firebird 3.0. Стабильная версия Firebird 2.5.

Установка Firebird — выбор типа сервера

Сервер Firebird SQL доступен в 3-х вариантах:

  • Firebird Super Server
  • Firebird Classic Server
  • Firebird Embedded

Firebird Super Server

Firebird Super Server — все клиентские подключения обслуживаются одним серверным процессом, имеется общий клиентский кеш. За счет этого достигается меньший расход ресурсов на обслуживание клиентов. Недостатком Firebird Super Server является отсутствие возможности задействовать несколько процессоров для работы Firebird сервера.

Firebird Classic Server

Firebird Classic Server — на каждое клиентское подключение создает отдельный серверный процесс. Архитектура Firebird Classic Server более надежна, т.к. сбой одного серверного процесса не вызывает отказ в обслуживании всех клиентов. Кроме того, Firebird Classic позволяет задействовать многопроцессорную архитектуру. При установке Firebird вы можете выбрать между версиями Firebird Super Server или Firebird Classic Server.

Firebird Embedded

Firebird Embedded Server — предназначен для встраиваемых баз данных. Состоит из одной dll — fbembed.dll, которая включает в себя клиент и сервер Firebird Super Server. Firebird Embedded не требует установки на клиентской рабочей станции. Достаточно просто скопировать fbembed.dll и еще несколько файлов клиенту на компьютер.

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

Firebird Embedded Server распространяется отдельным дистрибутивом.

Если затрудняетесь с выбором

Если вы не уверены в выборе типа установки Firebird, то используйте Firebird Super Server. В дальнейшем вы без труда сможете изменить архитектуру сервера.

Начало работы с Firebird

Для знакомства с Firebird можно использовать тестовую базу данных employee.fdb. Она входит в установочный комплект Firebird и расположена в папке Program Files\Firebird\Firebird\examples\empbuild\.

Создание новой базы Firebird

Для создания пустой базы Firebird:

  • запустите утилиту C:\Program Files\Firebird\Firebird\bin\isql.exe
  • выполните инструкцию создания базы данных:

Use CONNECT or CREATE DATABASE to specify a database SQL> CREATE DATABASE ‘localhost:d:\temp\test.fdb’ user ‘SYSDBA’ password ‘masterkey’ DEFAULT CHARACTER SET WIN1251;

В ISQL каждое выражение завершается точкой с запятой.

Проверить подключение можно, выполнив запрос:

SQL> select MON$DATABASE_NAME from MON$DATABASE;

Если все сделано правильно, SQL запрос вернет путь к подключенной базе данных:

Безопасность Firebird

  • Firebird хранит всех пользователей в одной служебной базе данных security.fdb.
  • Начиная с Firebird 2.1 реализована поддержка SSPI аутентификации средствами Windows. Администраторы домена на уровне БД определяются как суперпользователи SYSDBA.
  • В Firebird 3.0 планируется реализовать возможность хранения пользователей в клиентской базе данных.

Пользователь SYSDBA. Смена пароля по умолчанию

SYSDBA — это административный пользователь Firebird с исключительными правами. Пароль по умолчанию: masterkey. Для того чтобы сменить пароль, используйте утилиту gsec из состава Firebird:

c:\Program Files\Firebird\bin>gsec GSEC> modify SYSDBA -pw NEW_PASS

При помощи утилиты gsec можно создавать, удалять, модифицировать и просматривать пользователей. Полный список команд можно получить, набрав help.

Подключение к Firebird из клиентского приложения

Для начала скачайте и установите пакет IBProvider Professional Edition.

IBProvider Professional Edition — это набор COM-компонент, которые позволяют работать с любыми версиями Firebird и InterBase. Компоненты поддерживаются большинством средств разработки: Delphi, C++ Builder, Visual C++, .Net Framework, C#, Visual Basic, VBScript, VBA и др.

Для проверки подключения к Firebird напишем простой сценарий на языке VBScript. Создайте пустой файл с расширением vbs и вставьте в него следующий код, указав правильный путь к базе данных:

Запустите скрипт на выполнение в режиме командной строки, и вы увидите список активных подключений к БД.

Firebird и VBScript, Visual Basic, VBA

Для доступа к Firebird и InterBase из VBScript, VBA, Visual Basic используется библиотека ADO (ActiveX Data Objects). Множество примеров работы с этой библиотекой вы найдете в документации: примеры InterBase, Firebird VBScript, VBA, Visual Basic.

Firebird и Delphi

IBProvider предлагает несколько способов работы с InterBase и Firebird из Delphi:

  • dbGo (ADO Express) компоненты, работающие через библиотеку ADO.
  • прямой доступ к COM-интерфейсам ADO, минуя компоненты dbGo.
  • прямой доступ к COM-интерфейсам OLE DB при помощи сторонних VCL-компонент (OLE DB Direct/OLE DB Express).

Firebird и .Net

Для доступа к Firebird из .Net используется библиотека ADO.NET. На сайте IBProvider опубликовано большое пошаговое руководство, посвященное работе с Firebird в Visual Studio .Net (ADO.NET).

Дополнительные материалы по теме:

Firebird и C++

В состав IBProvider Professional Edition входит C++ библиотека, которая предоставляет самый быстрый способ работы с OLE DB провайдерами из Visual C++ 2005-2008, а так же из C++ Builder.

Редактирование базы Firebird

В пустой базе данных необходимо создать таблицы, связи между таблицами, первичные ключи, индексы, хранимые процедуры, генераторы и другие объекты. Для редактирования баз данных Firebird вы можете использовать утилиту isql.exe.

SQL> CREATE TABLE cross_rate CON> ( CON> from_currency VARCHAR(10) NOT NULL, CON> to_currency VARCHAR(10) NOT NULL, CON> conv_rate FLOAT NOT NULL, CON> update_date DATE, CON> CON> PRIMARY KEY (from_currency, to_currency) CON> );

Вставляем одну запись и делаем выборку из таблицы:

SQL> INSERT INTO cross_rate VALUES (‘Dollar’, ‘CdnDlr’, 1.3273, ’11/22/93′); SQL> SELECT * from cross_rate; FROM_CURRENCY TO_CURRENCY CONV_RATE UPDATE_DATE ============= =========== ============== =========== Dollar CdnDlr 1.3273000 1993-11-22

Помимо isql существует различные графические утилиты администрирования Firebird.

Утилиты администрирования Firebird

FlameRobin

IBExpert

IB/FB Development Studio

Blaze Top

Database Workbench

Database Workbench — поддерживает несколько серверов баз данных, среди которых есть Firebird и InterBase. Отладка хранимых процедур, анализ планов, встроенные средства переноса данных и метаданных.
Лицензируется отдельно на InterBase и отдельно на Firebird. 171$ за каждый движок (InterBase или Firebird).
Сайт: Database Workbench

Читать онлайн «Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil» автора Ковязин А. Н. — RuLit — Страница 40

При использовании для этой же операции TIBDataSet при большом количестве записей (порядка нескольких миллионов) приложение может начать работать на порядки медленнее.

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

Обычно пользователи все-таки применяют поиск, чтобы найти нужные данные, и задача разработчика, помимо прочего, состоит в том, чтобы формулировать условия в SQL-запросах максимально точно и иметь в итоге лишь небольшой набор данных. Во-первых, это резко снизит лишний сетевой трафик, а во- вторых, снизит размер памяти, занимаемой данными в буфере TIBDataSet, за счет чего также увеличится скорость работы TIBDataSet.

Управление транзакциями тоже зависит только от вас и требований вашей задачи. Не существует единственно правильного способа распределения компонентов TIBTransaction. Некоторые предпочитают все делать в контексте одной общей транзакции, вовремя вызывая Commit или Rollback; другие предпочитают для каждого TIBDataSet иметь отдельную транзакцию, следя за правильным уровнем изоляции. Только вы можете решить, какие транзакции нужны для правильной работы ваших запросов.

Данная глава не претендует на звание учебника по IBX, поскольку дает лишь самые основные факты и описывает только наиболее важные, как нам кажется, особенности компонентов. Однако мы надеемся, что этот материал даст вам необходимый оазис для дальнейшего самосостоятельного изучения.

Также заметим, что в главе по FTBPlus вы сможете найти многие вещи, которые окажутся полезными и при работе с ШХ. Например, вы вполне сможете использовать материалы, описывающие работу с генератором отчетов FastReport, работу с BLOB-полями, локальную фильтрацию и обработку событий (event alerts).

Что такое FIBPIus?

Предыдущие главы книги содержали описание самого сервера InterBase, но для практического его использования необходимо разрабатывать клиентские программы. Само название технологии Client/Server говорит о наличие двух сторон: сервера, который в нашем случае обслуживает базу данных, и клиента, который является специализированной программой, взаимодействующей с сервером InterBase.

Для написания клиента, или клиентской части, вы в принципе можете использовать практически любые среды разработки, которые позволяют вызывать функции из внешней DLL-библиотеки. Суть взаимодействия с InterBase состоит в том, что ваша программа вызывает некоторые функции InterBase API для выполнения тех или иных запросов к базе данных. InterBase API заключено в специальной библиотеке gds32.dll. Таким образом, вы имеете возможность писать свои программы на чем угодно, обращаясь к функциям gds32.dll. Тем не менее, такой низкоуровневый подход неудобен для создания прикладных программ, в которых основное внимание уделяется обработке данных на достаточно абстрактном уровне. Если разработчик вынужден каждый раз заботиться, прежде всего, о том, чтобы правильно сформировать внутренние структуры для вызова функций gds32.dll, то процесс разработки значительно усложняется и затягивается.

Этого можно избежать, если вы используете для разработки клиентской части Borland Delphi, Borland C++ Builder или Borland Kylix. Идеология этих продуктов поощряет создание специализированных наборов компонент для решения определенных системных задач, облегчая, таким образом, жизнь прикладного разработчика.

Devrace FIBPIus — это библиотека компонент для Delphi, C++ Builder и Kylix, предназначенных для работы с InterBase и его клонами (Firebird и Yaffil). Компоненты используют прямой InterBase API для взаимодействия с сервером, поэтому для нормальной работы программ, написанных с использованием FIBPIus, не нужно ничего, кроме наличия gds32.dll. Кроме того, использование прямого API дает клиентским приложениям максимальную производительность, гибкость и возможность использования «специальных» уникальных вещей, реализованных в InterBase. В частности, можно упомянуть array-поля, которые невозможно использовать при работе со стандартными Delphi компонентами ТТаЫе, TQuery, взаимодействующими с InterBase через Borland Database Engine (BDE).

Попробуем кратко перечислить основные возможности и преимущества FIBPIus:

* Полная совместимость со Borland Delphi 3-7, C++ Builder 3-6 и Kylix 3.

* Полная совместимость с существующими версиями InterBase 4.X-7.0, Firebird, Yaffil в настоящий момент, а также поддержка всех версий InterBase и его основных клонов в будущем.

* Поддержка всех особенностей и специальных возможностей InterBase: event alerters, array-полей, blob-полей.

* Встроенные макросы в SQL-выражениях, позволяющие использовать параметры-подстановки даже в там, где это не позволяет сам InterBase.

* Удивительно гибкий механизм работы с master-detail запросами, позволяющий свести «ручное» кодирование практически к нулю и при этом иметь возможность гибко настраивать любые связки master-detail без написания обработчиков событий, улучшая общую производительность приложения за счет снижения лишнего сетевого трафика.

* Улучшенная производительность при выполнении запросов со средним и небольшим количеством результирующих записей (т. е , для 90-95% всех запросов в обычных приложениях!).

* Гибкое управление транзакциями. FIBPlus, которое позволяет, с одной стороны, явно управлять каждой транзакцией, а с другой стороны автоматизирует большинство операций, автоматически запуская транзакции, и подтверждая их в режиме AutoCommit. Кроме этого, FIBPlus реализует уникальный механизм работы одного компонента в контексте двух транзакций: читающей и пишущей, что позволяет совершенно избегать DEADLOCK при работе приложения.

* Реализация и поддержка дополнительных возможностей, например, эмуляция Boolean-полей, отсутствующих в явном виде в InterBase. Качественная поддержка режима CachedUpdates позволяет использовать FIBPlus в приложениях с нестабильными удаленными подключениями к базе данных (например, посредством dial-up). Используя CachedUpdates, вы можете подключиться к базе данных, выбрать данные, отключиться, изменить данные и после повторного подключения (или восстановления подключения), вернуть изменения на сервер. Данная возможность реализована только в FIBPlus, поскольку, например, в IBX даже при режиме CachedUpdates необходимо, тем не менее, иметь активные транзакции и подключение к серверу.

* Поддержка локальной сортировки и локальной фильтрации данных (без дополнительных запросов на сервер).

* Автоматическая генерация модифицирующих запросов в run-time и design- time. Уникальная возможность автоматически генерировать модифицирующие запросы, в которых участвуют не все поля записи, а только те, значения которых реально были изменены, что позволяет снизить сетевой траффик приложения.

* Аккуратная поддержка auto-increment полей, не требующая переоткрытия запроса после вставки новой записи, чтобы получить значения полей, измененных триггерами.

* Возможность централизованной обработки ошибок и исключений при помощи компонента TpFIBErrorHandler.

* Уникальная возможность создания цепочек модифицирующих запросов при помощи компонента TpFIBUpdateObject. Компонент позволяет реализовывать без ручного кодирования выполнение нескольких автоматических модифицирующих действий. Причем, эти модифицирующие запросы автоматически получают параметры от TpFIBDataSet и могут работать в рамках разных транзакций и даже разных подключений к базам данных. Управляя только свойствами TpFIBUpdateObject, разработчик может активировать или деактивировать нужные ему цепочки запросов. Все это превращает TpFEBUpdateObject в некое подобие триггера, реализованного в клиентской части приложения.

Илон Маск рекомендует:  Что такое код get_defined_functions
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL