Firebird под Linux
© 2003 Pascal Chong <chongym@cymulacrum.net>
© 2003 Тимур Бирш <birsh@mail.kz>, перевод
Оригинальная версия на http://www.ibphoenix.com
Оглавление
1. Введение
1.1. Почему я написал это?
1.2. Copyright и предупреждения
1.3. Почему я должен использовать Firebird?
2. Установка Firebird
2.1. Где я могу взять Firebird?
2.2. Какую версию я должен скачивать?
2.3. Системные требования
2.4. Установка Firebird
3. Начало работы с Firebird
3.1. Утилиты администрирования
3.1.1. Администратор безопасности gsec
3.1.2. isql - Interactive SQL
3.2. Создание вашей первой базы данных
3.3. Добавление пользователей и ролей
3.4. Тестирование базы данных
4. Дополнительные ссылки
1. Введение
В июле 2000 года Borland (потом Inprise) выпустил исходные тексты их СУБД, Interbase, под лицензией Interbase Public License. Firebird прямой Open Source потомок данной СУБД.
1.1. Почему я написал это?
Мое первое знакомство с Interbase произошло когда я работал в 1999 году в компании продававшей продукты Borland. Я проводил техническую поддержку и кое-какие курсы по Delphi и Interbase шел вместе с Delphi Client/Server. Тогда, я приобрел хорошего друга сходившего с ума по Interbase. Мне это было не совсем интересно, так как я в это время проводил поддержку IBM DB2 и участвовал в бета-тестировании Linux.
Возвращение к Interbase, и его настоящей Open Source инкарнации, Firebird, произошло только недавно. Кто-то в списке рассылке спросил о Open Source СУБД которые могут поставляться вместе с приложениями и кто-то другой подсказал что Firebird. Тогда я вспомнил своего друга и подумал что может быть бы он порадовался увидя что, пишут о его любимой СУБД, вот поэтому я и решил написать данный документ.
1.2. Copyright и предупреждения
This document is free documentation; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
1.3. Почему я должен использовать Firebird?
Open Source СУБД обычно страдают от двух распространенных недостатков: они большие, такие как PostgreSQL и MySQL или в них не достает возможностей и документации, такие как HypersonicSQL или McKoi.
Firebird имеет относительно небольшой размер, около 2,6Mb в RPM-пакете. Это делает его идеальным для роли “встроенной СУБД” (embedded database), поставляемой с сервером приложений и приложением. В Firebird есть все распространенные функции большинства сформировавшихся СУБД, такие как поддержка хранимых процедур, соответствие SQL-стандарту и др. Если вы работаете с DB2 и PostgreSQL, то их синтакс очень похож и типы данных, работа с данными видимо очень похожа, такие как обязательное включение строк в одинарные кавычки.
При разработке Firebird видимо делался акцент на маленьком размере, быстроте и минимальном администрировании. Это идеально для разработчиков которым нужна БД для хранения, но которые не хотят тратить слишком много времени на настройку БД. В большинстве ситуаций вам не нужны хранимые процедуры или не нужно делать комплексные слияния таблиц. В таких случаях Firebird идеальный компромисс между размером и функциональностью.
2. Установка Firebird
2.1. Где я могу взять Firebird?
Официальный веб-сайт Firebird http://www.firebirdsql.org.
Последние версии доступны прямо с IBPhoenix.
2.2. Какую версию я должен скачивать?
На данный момент есть две версии Firebird-сервера которые вы можете скачать:
Firebird Super Server
Firebird Classic Server
В двух словах, отличие между двумя версиями находится в подходе к проектированию. Super Server использует потоки для обслуживания разных клиентов подключающихся к нему в одно время, а Classic Server порождает отдельный процесс для каждого подключения. Статью сравнивающую эти два подхода вы можете найти на IBPhoenix1. Выбирать какую версию сервера использовать полностью за вами. Для “встроенных СУБД” с малым количеством пользователей, то нет большой разницы какую вы выберите. Теоретически, для приложений с большим количеством пользователей, Super Server должен работать лучше при уменьшении времени процесса запуска и лучшего совместного использования ресурсов. У меня не было возможности протестировать это в среде с большой нагрузкой, так что я не могу говорить ответственно на данную тему.
Данный документ описывает только Firebird Super Server.
2.3. Системные требования
БД размером 2,5Мб довольно маленькая по размеру, и я полагаю, если у вас работает Linux, то вы сможете без проблем использовать эту БД.
Требования:
ncurses4 v5.0 или выше;
glibc v2.2 или выше.
Данная конфигурация была протестирована на Probatus Spectra Linux 1.2 которая эквивалентна RedHat v7.3. Firebird должен работать на любом Linux основанном на RPM-пакетах.
2.4. Установка Firebird
После того как вы скачали RPM-пакет с веб-сайта, войдите в систему как root.
Выполните следующую команду:
# echo localhost.localdomain >>/etc/hosts.equiv
Она добавит localhost в список серверов которые она распознает. Перейдите в директорию где находится скачанный RPM-пакет и выполните следующую команду:
# rpm -ivh FirebirdSS-1.0.2.908-1.i386.rpm
Данная команда установит Firebird и создаст скрипт в директории /etc/init.d который будет запускать Firebird при загрузке системы. Если вы столкнулись с какими-то ошибками, проверьте что у вас установлены ncurses4 и правильная версия glibc.
Занимательно, вы будете извещены что Firebird создаст директорию с именем interbase в директории /opt и установит свои файлы там. Это показывает его наследственность, так как он был основан как-никак на Interbase. Нам нужно что бы бинарные файлы были доступны в масштабе всей системы и для этого мы отредактируем файл /etc/profile, вставив следующие строки:
export INTERBASE_HOME=/opt/interbase export PATH=$PATH:$INTERBASE_HOME/bin
Сохраните файл, перезапустите сервер и проверьте что Firebird запустился успешно.
3. Начало работы с Firebird
Теперь мы перейдем к работе с примером БД и ознакомлению с утилитами для работы с этой СУБД.
3.1. Утилиты администрирования
По умолчанию учетная запись администратора имеет имя SYSDBA (данное имя пользователя не чувствительно к регистру) и пароль masterkey. Для пользователей предыдущих версий Interbase (и людей которые работали над примером Fish Catalog для Delphi) это видимо очень знакомо. Вы будете использовать данную учетную запись в начале чтобы создавать других пользователей и пример БД.
Доступные утилиты администрирования:
gsec – администратор безопасности. Вы используете данную утилиту командной строки для создания, изменения и удаления пользователей БД, изменения паролей и др.;
isql – Interactive SQL, похожая на утилиты Oracle SQL*Plus и PostgreSQL psql. Вы можете использовать ее для тестирования и выполнения SQL-запросов.
3.1.1. Администратор безопасности gsec
Вам нужно запустить gsec как SYSDBA. Чтобы осуществить это, выполните следующее как root или не-root пользователь:
$ gsec -user sysdba -password masterkey
Это выведет на экран приглашение GSEC>. Вы можете вывести текущих пользователей введя на приглашение “display”:
GSEC> display
Сейчас хорошая идея поменять пароль пользователя SYSDBA, так как пароль по умолчанию знают все. Чтобы изменить его мы изменим учетную запись SYSDBA используя следующую команду:
GSEC> modify SYSDBA -pw newpassword
Хорошо, newpassword не совсем стойкий пароль. Вы должны использовать свой, который содержит как цифры так и буквы и они должны чередоваться часто. Но мы не будем здесь этого делать.
3.1.2. isql Interactive SQL
Как упоминалось выше, isql есть аналог psql от PostgreSQL и SQL*Plus от Oracle. Вы можете набрать SQL-команду и получите результат запроса из БД.
Firebird идет с примером БД EMPLOYEE и мы будем использовать ее для тестирования наших SQL-команд. Чтобы начать, выполните следующую команду:
isql /opt/interbase/examples/employee.gdb
Она подключит вас к БД EMPLOYEE и выведет приглашение SQL>. Вы можете набрать ваши SQL-команды в приглашении. Не забывайте, перед тем как нажать клавишу <ENTER> чтобы выполнить команду, набрать точку с запятой (;) в конце оператора чтобы закончить его.
Для теста, наберите следующую SQL-команду и нажмите <ENTER>
SQL> SELECT emp_no, full_name, job_code, job_country FROM employee;
Это должно вам дать:
EMP_NO FULL_NAME JOB_CODE JOB_COUNTRY
======= ===================================== ======== ===============
2 Nelson, Robert VP USA
4 Young, Bruce Eng USA
5 Lambert, Kim Eng USA
8 Johnson, Leslie Mktg USA
9 Forest, Phil Mngr USA
11 Weston, K. J. SRep USA
12 Lee, Terri Admin USA
14 Hall, Stewart Finan USA
15 Young, Katherine Mngr USA
20 Papadopoulos, Chris Mngr USA
24 Fisher, Pete Eng USA
28 Bennet, Ann Admin England
29 De Souza, Roger Eng USA
34 Baldwin, Janet Sales USAЕсли вы хотите увидеть все таблицы в БД, наберите следующее:
SQL> SHOW TABLES;
Эта команда выдаст вам список всех таблиц в базе данных:
COUNTRY CUSTOMER DEPARTMENT EMPLOYEE EMPLOYEE_PROJECT JOB PHONE_LIST PROJECT PROJ_DEPT_BUDGET SALARY_HISTORY SALES
Чтобы выйти из isql, просто введите quit; и нажмите <ENTER>.
3.2. Создание вашей первой базы данных
Пока, мы выполняли наши команды как SYSDBA и использовали примеры идущие с Firebird. Теперь, мы создадим свою БД, создадим пользователя у которого будут права на просмотр и изменение БД, а также попробуем поработать с базой данных.
Чтобы создать нашу БД, нам нужно использовать утилиту isql. Firebird сохраняет свои БД под раздельными файлами и, по соглашению, с расширением .gdb. Помните, это лишь соглашение, так что вы можете сохранить БД с любым расширением которое захотите. Чтобы продемонстрировать это, мы во-первых создадим БД используя пользователя SYSDBA и сохраним ее в директории test в директории содержащейся в переменной окружения $INTERBASE_HOME.
Первое что мы создаем это директорию testdb в /opt/interbase (проверьте, что у вас есть соответствующие права над это директорией), перейдите в нее, затем запустите isql без параметров:
$ isql
Потом мы выполняем команду CREATE DATABASE:
SQL> CREATE DATABASE 'firstdb.gdb' USER 'sysdba' PASSWORD 'masterkey';
Она создаст файл с именем firstdb.gdb в текущей директории. БД принадлежит SYSDBA. Теперь мы создадим очень простую таблицу SALES и заполним ее данными. Если вы уже знакомы с SQL, то следующие команды будут для вас легкими. Если нет, то вам возможно нужно прочесть стандарт ANSI SQL-92.
SQL> CREATE TABLE sales_catalog (
CON> item_id varchar(10) not null primary key,
CON> item_name varchar(40) not null,
CON> item_desc varchar(50)
CON> );
SQL> INSERT INTO sales_catalog
CON> VALUES('001', 'Aluminium Wok', 'Chinese wok used for stir fry dishes');
SQL> INSERT INTO sales_catalog
CON> VALUES('002', 'Chopsticks extra-long', '60-cm chopsticks');
SQL> INSERT INTO sales_catalog
CON> VALUES('003', 'Claypot', 'Pot for stews');
SQL> INSERT INTO sales_catalog
CON> VALUES('004', 'Charcoal Stove', 'For claypot dishes');
SQL> SELECT * FROM sales_catalog;
ITEM_ID ITEM_NAME ITEM_DESC
================================================================================
001 Aluminium Wok Chinese wok used for stir fry dishes
002 Chopsticks extra-long 60-cm chopsticks
003 Claypot Pot for stews
004 Charcoal Stove For claypot dishesДля выхода из isql, просто введите quit; и нажмите <ENTER>.
3.3. Добавление пользователей и ролей
Теперь у нас есть БД, но наверное это не очень хорошая идея, для создания и администрирования всех БД использовать учетную запись SYSDBA. В некоторых случаях, например, если я работаю с несколькими БД принадлежащие другим людям или группам, я возможно захочу чтобы каждому пользователю или группе принадлежала их соответствующая БД, но чтобы они не смогли иметь доступа к другим базам. Другой сценарий может быть потребует создания proxy-пользователя который будет выполнять все операции над БД, но который не будет иметь всех прав суперпользователя SYSDBA.
В данном разделе мы создадим БД пользователей и назначим учетную запись пользователя у которого будут права на просмотр и обновление.
Для этой операции мы используем утилиту gsec. И так, предполагая что мы хотим создать пользователя с именем TestAdmin с паролем testadmin (я знаю, знаю, еще один слабый пароль) и дать ему права на просмотр, модификацию и удаление записей БД firstdb.gdb, мы выполняем следующие команды. Помните, что в пароле используются только первые восемь символов.
$ gsec -user SYSDBA – password masterkey
GSEC> add TestAdmin -pw testadmin -fname FirstDB -lname Administrator
Warning – maximum 8 significant bytes of password used
Дальше, мы открываем БД, создаем роль administrator для БД, назначаем соответствующие права для этой роли, затем разрешаем использовать пользователю TestAdmin эту роль.
$ isql firstdb.gdb -user SYSDBA -password masterkey
Database: firstdb.gdb, User: SYSDBA
SQL> GRANT SELECT, UPDATE, INSERT, DELETE ON sales_catalog TO administrator;
SQL> GRANT administrator TO TestAdmin;
SQL> quit;
Теперь, мы готовы для тестирования нашей базы данных.
3.4. Тестирование базы данных
Для начала, выйдете из gsec и isql, если вы этого еще не сделали. Мы подключемся к firstdb.gdb как TestAdmin, выполним некоторые запросы, а потом отключимся. Просто чтобы протестировать БД. Команды и их результат показаны ниже:
SQL> DELETE FROM sales_catalog;
SQL> INSERT INTO sales_catalog
CON> VALUES('001', 'Aluminum Wok', 'Chinese wok');
SQL> INSERT INTO sales_catalog
CON> VALUES('002', 'Microwave Oven', '300W Microwave oven');
SQL> INSERT INTO sales_catalog
CON> VALUES('003', 'Chopsticks extra-long', '60cm chopsticks');
SQL> SELECT * FROM sales_catalog;
ITEM_ID ITEM_NAME ITEM_DESC
========== ===============================================================
001 Aluminum Wok Chinese wok
002 Microwave Oven 300W Microwave oven
003 Chopsticks extra-long 60cm chopsticksЕсли вы столкнетесь с какими-то SQL-ошибками, то вам нужно будет проверить по сслылкам в следующем разделе.
Если все работает, мои поздравления! Ваш Firebird готов к полету! Я все еще изучаю эту СУБД, так что если у вас есть любые советы, критика или что-нибудь новое чтобы вы хотели добавить в эту статью, пожалуйста пишите мне.
4. Дополнительные ссылки
В настоящее время, полные руководства по Firebird доступны только на IBPhoenix CD. Однако для дополнительной информации о его работе или SQL-командам которые он принимает, вы можете обратиться к руководствам от Interbase 6.0 которые доступны с веб-сайта IBPhoenix2. Более свежая документация доступна на IBPhoenix CD3.
API Guide;
Data Definition Guide;
Developers Guide;
Embedded SQL Guide;
Operations Guide;
Language Reference;
Getting Started.
Там в общем семь руководств и информация видимо достоверная для Firebird судя по моему опыту. Я использовал руководства Operations Guide и Language Reference для многих частей данного документа, а также для своей собственной работы.
Желающие могут скачать эту статью: в pdf (178K) или sxw (15.7K) формате.
| 2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2002 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2001 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2000 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 1999 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
- Компания по разработке программного обеспечения
- Услуги аутсорсинга в области программирования
- Как продлить срок службы картриджей
- Мошенничество во Всемирной Паутине. Осторожно: фишинг!
- Web-студия
- Как легально поднять уровень индекса цитирования.
- Мы реально сможем помочь вам в управлении предприятием
- Создание сайтов – популяризация вашего замысла
- Свой сайт. Управление ресурсом
- Семантическое ядро сайта или правила подбора ключевых фраз
- Программирование в среде Delphi 8 for .NET
- Практикум по Delphi для решения прикладных задач
- Фундаментальные алгоритмы и структуры данных в Delphi
- Delphi 6. Программирование на Object Pascal
- Delphi и технология COM
- Delphi в шутку и всерьез: что умеют хакеры
- Программирование в Delphi глазами хакера
- Delphi 2005. Секреты программирования
- Искусство создания компонентов Delphi
- Приемы программирования в Delphi на основе VCL
- Программирование баз данных в Delphi 7
- Программирование баз данных в Delphi
- Программирование в среде Delphi
- Программирование в Delphi 7
- Язык SQL в Delphi 5