Топ питань
Часова шкала
Чат
Перспективи

Firebird

З Вікіпедії, вільної енциклопедії

Remove ads

Firebird (також FirebirdSQL) — компактна, крос-платформова, вільна реляційна система керування базами даних, що реалізує більшість функцій стандарту SQL:2003. Вона може запускатись на більшості UNIX-подібних систем (в тому числі Linux та FreeBSD, Android), MacOS та Windows.

Коротка інформація Тип, Розробник ...
Remove ads

Основні можливості

  • Відповідність вимогам ACID: Firebird спеціально спроектовано таким чином, щоб задовільняти вимоги «атомарності, несуперечності, ізоляції та довговічності» транзакцій (англ. Atomicity, Consistency, Isolation and Durability).
  • Версійна архітектура: основна особливість Firebird — версійна архітектура, що дозволяє серверу обробляти різні версії одного запису в будь-який час таким чином, що кожна транзакція бачить свою версію даних, не заважаючи сусіднім. Таким чином, транзакції, що читають, не блокують транзакції, що пишуть і навпаки. Окрім того, це дає можливість відмовитись від журналу транзакцій і таким чином зменшити ймовірність пошкодження службової інформації бази даних.
  • Збережені процедури: за допомогою мови PSQL (процедурна SQL) можна створювати складні збережені процедури для обробки даних на боці сервера. Таким чином можна виносити на сторону сервера значну частину бізнес-логіки програмного пакету чи формувати дані для звітів.
  • Події: збережені процедури та тригери можуть генерувати події, на які, в свою чергу, може підписатися клієнтська програма і відповідним чином їх обробляти.
  • Генератори: дають можливість просто реалізовувати автоінкрементні поля; оскільки вони працюють незалежно від транзакцій, то можуть використовуватись для генерації первинних ключів чи керування тривалими запитами в інших транзакціях.
  • Бази даних в режимі «лише читання»: спрощують поширення даних наприклад на компакт-дисках, особливо в поєднанні з вбудованою (англ. embedded) версією сервера.
  • Повний контроль над транзакціями: одна клієнтська програма може одночасно виконувати декілька транзакцій, включно з різними рівнями ізоляції. Окрім того, доступні протокол двофазного підтвердження транзакцій (що забезпечує гарантовану стійкість при роботі з кількома БД), оптимістичне блокування даних (блокується не вся сторінка даних, а лише змінені записи), точки збереження транзакцій та автономні транзакції (починаючи з версії 2.5).
  • Резервне копіювання: завдяки в тому числі і версійній архітектурі немає потреби зупиняти сервер для резервування бази даних. Процес резервного копіювання зберігає стан бази даних на момент початку резервування, не шкодячи роботі інших клієнтів. Додатково існує можливість інкрементного резервування бази даних (починаючи з версії 2.0).
  • Тригери: для будь-якої таблиці можна назначити декілька тригерів, що спрацюють до чи після додавання, оновлення чи вилучення даних. У тригерах використовується мова PSQL, що дозволяє задавати початкові значення даних, перевіряти їх цілісність, збуджувати події та ін. Починаючи з версії 1.5 у Firebird з'явились універсальні тригери, що дозволяють обробляти вставку, оновлення та вилучення даних в одному місці.
  • Зовнішні функції: можна реалізувати за допомогою будь-якої мови програмування та у вигляді бібліотек користувацьких функцій (англ. User Defined Function, UDF) під'єднаних до сервера.
  • Набори символів: Firebird підтримує багато міжнародних наборів символів з багатьма варіантами сортування, зокрема типовий для українських користувачів Windows набір символів Win1251 підтримує три варіанти сортування, в тому числі win1251_ua, що дозволяє коректно сортувати отримані з бази дані з українськими символами на боці сервера. Окрім того, Firebird повністю підтримує Unicode, що дає можливість працювати з будь-якими наборами символів.
  • Firebird повністю підтримує стандарт SQL-92 та реалізує більшу частину стандартів SQL-99 i SQL-2003. Сюди входять вирази DML і DDL, об'єднання запитів, вирази UNION, DISTINCT, підзапити (IN, EXISTS), агрегатні функції (AVG, SUM, MIN, MAX, LIST (починаючи з версії 2.1)), вбудовані функції (ABS, CEIL, REPLACE, GEN_UUID тощо), обмеження цілісності (PRIMARY KEY, UNIQUE, FOREIGN KEY), та всі загальні типи даних SQL.
Remove ads

Історія розвитку

Узагальнити
Перспектива

РСКБД Firebird бере свій початок від іншої СКБД InterBase американської фірми Borland. 25 липня 2000 року ця фірма оголосила про випуск джерельних кодів СКБД Interbase 6.0 у відкритий доступ. На їх основі почало розвиватись два проекти — власне Firebird та Yaffilангл. дятел), що розроблявся російськими програмістами, та продовжилась розробка InterBase. Проект Yaffil у 2003 році приєднався до Firebird.

Більше інформації Версія, Дата ...
Remove ads

Особливості доступу та оброблення даних в Firebird

Узагальнити
Перспектива

PSQL, DSQL та ESQL

PSQL (Procedural SQL) — підмножина SQL в Firebird, за допомогою якої пишуться збережені процедури та тригери. Надає можливість програмісту обробки даних у процедурному стилі — наприклад, за допомогою циклів.

Приклад

CREATE OR ALTER PROCEDURE SOME_PROC(
    IN_ID INTEGER)
RETURNS (
    OUT_ID INTEGER)
AS
begin
   while (IN_ID < 10) do
    begin
     OUT_ID = IN_ID;
     IN_ID = IN_ID + 1;
     suspend;
    end
end

DSQL (Dynamic SQL) — підмножина SQL, за допомогою якої здійснюються запити до даних. Підтримуються неіменовані параметри. Приклад

select some_field1 from some_table where some_field2=? and some_field3 containing 'Wikipedia'

ESQL (Embedded SQL) — підмножина SQL, що використовується для написання швидкодіючих програм, де запити до даних є ключовими словами мови програмування. Після написання текст програми оброблюється спеціальним препроцесором (gpre), що входить до дистрибутиву. Застосовувався в програмах на мові С, проте в наш час[коли?] практично вийшов з ужитку.

Не слід плутати Embedded SQL з Embedded версією серверу.

Приклад

EXEC SQL
BEGIN DECLARE SECTION;
char department[26], dept_no[16];
int dept_num;
EXEC SQL
END DECLARE SECTION;
. . .
printf("Enter name of department: ");
gets(department);
printf("\nEnter department number: ");
dept_num = atoi(gets(dept_no));
EXEC SQL
INSERT INTO COUNTRIES (DEPT_NO, DEPARTMENT)
VALUES (:dept_num, :department);

Альтернативний доступ до даних

Окрім доступу через SQL, Firebird має можливість здійснювати операції з даними за допомогою GDML. Наразі цей спосіб є застарілим.

Доступ до Firebird

Доступ до баз даних Firebird може здійснюватися через розподілену бібліотеку доступу (dll або so, залежно від платформи) — такий спосіб є стандартним; сама бібліотека є в комплекті дистрибутиву. Також є можливість доступу через java і .net провайдери.

Бібліотека доступу реалізує набір функцій для маніпуляції з даними, які можуть бути експортовані і використані в будь-якій мові програмування.

Окрім того, є достатньо багато обгорток під різні мови програмування для цієї бібліотеки, що звільняють програміста від рутинної низькорівневої роботи. Так, для Delphi популярними є бібліотеки IBX, FibPlus, UIB. Для С++ — IBPP. Підтримка вбудована і в популярні скриптові мови, такі як PHP і Python.

Обмеження Firebird

Розмір бази даних — необмежено (залежить від можливостей файлової системи)

Розмір таблиці бази даних — 32 ТБ

Максимальна ширина вибірки (сумарно всі поля; не враховуючи блоби; враховується фактичний розмір рядкових даних) — 64 Кб.

Індексів на таблицю — 850

Довжина об'єкта метаданих (назва таблиці, процедури тощо) — 27 символів.

Повний список обмежень [Архівовано 15 грудня 2010 у Wayback Machine.]

Remove ads

Додаткова інформація

Узагальнити
Перспектива

Апаратно-програмні вимоги та обмеження

Firebird існує у версіях для Unix (Linux, FreeBSD, Solaris, MacOS, HP-UX) та Windows і вимоги до апаратного забезпечення залежатимуть також від типу ОС, котра обслуговує сервер. Окрім того вимоги знаходяться в прямій залежності від очікуваного завантаження сервера баз даних, обсягу оброблюваних даних та кількості одночасно працюючих користувачів і говорити про конкретні цифри непросто. Проте загалом ці вимоги доволі низькі: при незначних навантаженнях та обсягах баз даних можна очікувати пристойної роботи на сервері з центральним процесором частотою 100—200 МГц та обсягом оперативної пам'яті 96-128 МБ.

Конфігурації сервера

Серверна частина Firebird існує в чотирьох різних взаємозамінних конфігураціях, кожна з яких має свої переваги і, відповідно, недоліки:

  • Класичний сервер (classic server) — на кожне клієнтське з'єднання породжується новий процес; оптимізована для використання на багатопроцесорних комп'ютерах
  • Суперсервер — всі з'єднання працюють у одному процесі; менші вимоги до пам'яті при кращій швидкодії на однопроцесорних машинах.
  • Вбудований сервер (embedded) — весь сервер знаходиться у декількох бібліотеках (існує версія Yaffill Personal з єдиною бібліотекою); ідеально підходить для однокористувацьких систем, окрім іншого не вимагає встановлення.
  • Архітектура SuperClassic — нова архітектура, що поєднує в собі частини classic та super. Всі з’єднання працюють в одному процесі, але на кожне з’єднання створюється окремий потік. Вбудований сервер з версії 2.5 працює як SuperClassic.

Ліцензування

Firebird випускається на умовах Публічної ліцензії Interbase (англ. IPL — InterBase Public License) та Початкової розробницької публічної ліцензії (англ. IDPL — Initial Developer's Public License), умови котрих збігаються з умовами Публічної ліцензії Mozilla версії 1.1. Це означає що Firebird повністю безкоштовний для використання та поширення. Відкриття джерельних кодів продукту, що використовує Firebird, не вимагається незалежно від ліцензії, під котрою цей продукт поширюється. Але у випадку, якщо ви модифікували джерельний код сервера, ви зобов'язані опублікувати його.

Конфлікт назв з Mozilla Firefox

У квітні 2003 року Фонд Mozilla (англ. Mozilla Foundation) вирішив перейменувати свій оглядач тенет з «Фенікс» (Phoenix) на «Вогнептах» (Firebird). Це рішення викликало спротив Проекту Firebird через плутанину, що могла виникнути між користувачами, які були б введені в оману існуванням двох різних програм з однаковими назвами. Диспут продовжувався до того часу, поки розробники Mozilla не перейменували свій проект на «Mozilla Firebird». У своєму зверненні вони також вказали, що «Mozilla Firebird» — це лише кодова назва проекту. 9 лютого 2004 року Mozilla перейменувала свій оглядач на «Firefox», що й завершило конфлікт.

Поширені міфи

  • Firebird - це «безкоштовний Interbase »
Firebird перших версій базувався на кодовій базі Interbase 6.0 Open Source Edition. Проте починаючи з версій Firebird 1.5 i Interbase 7.0 ці СКБД несумісні по структурі файлу бази даних і розвиваються кожна в своєму напрямі.
  • Можна створити «невідновлювану резервну копію» бази даних
Інструмент gbak при створенні резервної копії записує спершу метадані, а потім почергово сторінки даних з робочої бази. Якщо в метаданих, наприклад, є обмеження not null для значення стовпця, котре було внесене в процесі роботи з базою вже після того, як в стовпці були значення null, то при спробі відновлення такої бази даних ми отримаємо помилку. Проте сам gbak має параметри, що дозволяють коректно обробити такі помилки. Окрім того, починаючи з версії 2.0 появився інструмент nbackup, котрий резервує бази таким чином, що подібні помилки просто не проявляються (що, проте, не означає, що вони щезають самі по собі).
  • Firebird не має логу транзакцій і тому не дає можливості (відновити базу даних, проаналізувати діяльність користувачів та інше)
На відміну від MS SQL чи Oracle, Firebird є версійною СКБД, для котрої лог транзакцій не потрібен в принципі. Щодо відновлення бази даних див. вище. Щодо реєстрації/аналізу діяльності користувачів - вона реалізується з допомогою тригерів.

Див. також «Міфи про Interbase та Firebird» [Архівовано 24 листопада 2010 у Wayback Machine.]

Remove ads

Інструменти

  • IBExpert — комерційне середовище розробки баз даних для ІБ/ФБ, проте безкоштовне для користувачів зі встановленою кодовою сторінкою Windows-1251 (ОС Windows)
  • Database Master — FireBird Management Software
  • FlameRobin — вільне кросплатформне середовище розробки баз даних для ІБ/ФБ
  • www.sqlly.com — студія розробки «Firebird» (англ. Firebird Development Studio)
  • Утиліти й засоби адміністрування баз даних Firebird
  • BlazeTop — Візуальне середовище розробника й адміністратора InterBase та Firebird
  • Jaybird — драйвер JCA-JDBC
  • IB Provider — OLEDB-драйвер для доступу до Firebird. Є безкоштовна версія, що дозволяє працювати з OLE DB, ADO і ADO.NET
  • FIBPlus — бібліотека компонентів Delphi, C++ Builder та Kylix для Firebird та InterBase
  • UIB — безкоштовна бібліотека компонентів Delphi для Firebird та InterBase
Remove ads

Ресурси тенет та документація

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads