Firebird (database server)

2009

1.5 (1.5.6 от октября 2009, последний релиз ветки 1.5 (End of series))

Firebird 1.5 выпущен на базе Firebird 1.0, с переводом кода с C на C++

  • Восстановлена архитектура Classic для Windows
  • создан вариант embedded
  • расширен SQL — CASE, COALESCE, NULLIF
  • изменено имя базы безопасности (security.fdb) и других модулей — клиента, файла сообщений
  • новый файл конфигурации firebird.conf, с новыми параметрами
  • передача varchar по сети в «сжатом» виде
  • триггеры мульти-действий (insert or update or delete)
  • индексы по constraint PK, FK, Unique автоматически принимают имя constraint (если задано)

индексов у таблицы может быть до 256 (раньше было не более 64)

  • улучшенная обработка ошибок. Расширенная обработка ошибок в процедурах и триггерах
  • разрешается пустой блок BEGIN/END
  • новые таблицы символов
  • расширения в ISQL
  • новые функции в ib_udf и fbudf
  • улучшения оптимизатора

Поддерживаемые версии

2.0 (последний релиз 2.0.6)

  • ускорена передача данных по сети
  • локальный протокол заменен на XNET
  • убрана трансляция прав доступа через NetBEUI
  • новая политика сборки мусора (см. firebird.conf, GCPolicy)
  • Classic поддерживает все функции Services API, идентично SuperServer
  • параметр лимита ожидания по блокировкам WAIT
  • ускоренный поиск в строках и blob
  • исправления обновляемых view
  • новые режимы shutdown БД
  • новый формат БД — теперь одна таблица может иметь размер больше 36 гигабайт
  • новый формат БД — индексируемая строка может быть 1/4 размера страницы (до 4к при размере страницы 16к)
  • значительные улучшения оптимизатора
  • расширения клиентского API
  • новые встроенные строковые функции (lower, trim)
  • инкрементальный бэкап (nbackup)

Functions

As well as the standard and
functions, provides the following user-callable utility functions:

  • firebird_fdw_version()

    Returns the version number as an integer.

  • firebird_fdw_close_connections()

    Closes all cached connections from PostgreSQL to Firebird in the current session.

  • firebird_fdw_server_options(servername TEXT)

    Returns the server-level option settings for the named server (either the options provided
    to or if not provided, the respective default values); example:

    ( 1.2.0 and later)

  • firebird_fdw_diag()

    Returns ad-hoc information about the Firebird FDW in key/value form, example:

  • firebird_version()

    Returns the Firebird version numbers for each foreign server
    defined in the current database, for example:

    Note that this function will open a connection to each Firebird server
    if no previously cached connection exists. It will return a row for each
    user mapping defined, even if those map to the same Firebird server.

    ( 1.2.0 and later)

Основные возможности СУБД

Firebird полностью поддерживает стандартны ANSI в синтаксисе языка SQL и может работать под управлением многих операционных систем — Windows, Linux, MacOS, Solaris и различных Unix-платформах. Среди достоинств этой системы использование очень развитого языка для хранимых процедур и триггеров. Предшественник Firebird, СУБД Interbase использовалась в информационных системах начиная с 1981 года.

Firebird это свободный проект, поддерживаемый многими программистами и специалистами из других областей по всему миру. Его начало было положено 25 июля 2000 года, когда корпорация Inprise Corp (ныне известная как Borland Software Corp) открыла исходные коды своей СУБД Interbase, которая использовалась в различных информационных системах начиная с 1981 года.

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

Firebird (FirebirdSQL) — компактная, кроссплатформенная, свободная система управления базами данных (СУБД), работающая на Linux, Microsoft Windows и разнообразных Unix платформах.

Firebird основан на исходном коде InterBase 6.0 который был выпущен как Open Source компанией Borland в августе 2000 года. История Interbase начинается в 1984 году, таким образом, продукт является наследником более чем 20-летнего опыта работы с реляционными базами данных

В качестве преимуществ Firebird можно отметить многоверсионную архитектуру, обеспечивающую параллельную обработку оперативных и аналитических запросов (это возможно потому, что читающие пользователи не блокируют пишущих), компактность (дистрибутив 5Mb), высокую эффективность и мощную языковую поддержку для хранимых процедур и триггеров.

Firebird используется в различных промышленных системах (складские и хозяйственные, финансовый и государственный сектора) с 2001 г. Это коммерчески независимый проект C и C++ программистов, технических советников и разработчиков мультиплатформенных систем управления базами данных, основанный на исходном коде, выпущенном корпорацией Borland 25 июля 2000 года в виде свободной версии Interbase 6.0.

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

Среди недостатков: отсутствие кэша результатов запросов, полнотекстовых индексов.

CREATE FOREIGN TABLE options

accepts the following table-level options via the
command:

  • table_name

    The Firebird table name, if different to the PostgreSQL foreign table
    name. Cannot be used together with the option.

  • quote_identifier

    Pass the table name to Firebird as a quoted identifier.
    See «» for details.
    1.2.0 and later.

  • query

    A Firebird SQL statement producing a result set which can be treated
    like a read-only view. Cannot be used together with the option.

  • updatable

    A boolean value indicating whether the table is updatable. Default is .
    Note that this overrides the server-level setting. Cannot be set for the
    option.

  • estimated_row_count

    An integer indicating the expected number of rows in the Firebird table, or
    rows which would be returned by the statement defined in . If not
    set, an attempt will be made to determine the number of rows by executing
    , which can be inefficient, particularly for queries.

The following column-level options are available:

  • column_name

    The Firebird column name, if different to the column name defined in the
    foreign table. This can also be used for foreign tables defined with the
    option.

  • quote_identifier

    Pass the column name to Firebird as a quoted identifier. See section
    See «» for details.
    1.2.0 and later.

  • implicit_bool_type

    Set this option on a column to to indicate that the
    corresponding column in the Firebird table is a integer column which
    should be treated as an implicit type.

    It is assumed that the Firebird column contains one of:

    • to indicate
    • any other value to indicate

    The implied boolean values will be transparently translated to PostgreSQL
    values. clauses with implicit boolean expressions will
    be pushed down to Firebird in the same way as normal boolean expressions.

    Note that will currently not push down a boolean scalar array
    operation expression such as . However the
    semantically equivalent will be pushed down.

    This is an experimental feature in 1.2.0 and requires
    that the server-level option is also set to
    (Firebird 3.0 and later).

    If the Firebird server is version 2.5.x, this option does not need to be
    set and will automatically assume that the Firebird column
    represents an implicit boolean. This functionality may work on earlier
    Firebird versions but has not been tested with them.

Note that while PostgreSQL allows a foreign table to be defined without
any columns, will raise an error as soon as any operations
are carried out on it.

MacOS X

Note

«lipo» builds are the 64-bit Firebird Server with client libs as fat lib (32 and 64 bits).

MacOS X 10.4+ 32-bit Classic (Intel)
Date Filename Size Description
9th Dec 2014 FirebirdCS-2.1.7-18553-i386.pkg.zip 13.0 Mb 32-bit package
MacOS X 10.4+ 32-bit Superserver (Intel)
9th Dec 2014 FirebirdSS-2.1.7-18553-i386.pkg.zip 13.0 Mb 32-bit package
MacOS X 10.5+ 64-bit Classic (Intel)
9th Dec 2014 FirebirdCS-2.1.7-18553-x86_64.pkg.zip 13.0 MB 64-bit package
9th Dec 2014 FirebirdCS-2.1.7-18553-lipo-x86_64.pkg.zip 18.0 Mb 64-bit Lipo package
MacOS X 10.5+ 64-bit Superserver (Intel)
9th Dec 2014 FirebirdSS-2.1.7-18553-x86_64.pkg.zip 13.0 Mb 64-bit package
9th Dec 2014 FirebirdSS-2.1.7-18553-lipo-x86_64.pkg.zip 13.0 Mb 64-bit Lipo package
MacOS X 32-bit Classic (PowerPC)
18th Mar 2011 FirebirdCS-2.1.4-18393-powerpc.pkg.zip 14.0 Mb 32-bit package
MacOS X 32-bit Superserver (PowerPC)
18th Mar 2011 FirebirdSS-2.1.4-18393-powerpc.pkg.zip 14.0 Mb 32-bit package
MacOS X 10.2+ Classic (PowerPC)
11th Sep 2009 FirebirdCS-2.1.3-18185-powerpc.pkg.zip 11.4 MB 64-bit package

Solaris 10

Solaris 10 Classic & Embedded (Sparc64)
Date Filename Size Description
12th Apr 2009 FirebirdCS-2.1.3.18194-0-Solaris10-sparc64.pkg.gz 6 MB Compressed package with install script
12th Apr 2009 Firebird-libgcc-Solaris10-sparc64.pkg.gz 2 Mb Libgcc installer for Solaris 10 Compatible with Firebird V2.1.3
Solaris 10 Classic & Embedded (Intel x86)
2nd Sep 2011 FirebirdCS-2.1.4.18393-0-Solaris10-i386.pkg.gz 8 MB Compressed package with install script
Solaris 10 Superserver (Intel x86)
2nd Sep 2011 FirebirdSS-2.1.4.18393-0-Solaris10-i386.pkg.gz 8 Mb Compressed package with install script
2nd Sep 2011 Firebird-libgcc-Solaris10-i386.pkg.gz 2.1 Mb Libgcc installer for Solaris 10 Compatible with Firebird V2.1.4
Solaris 10 Classic & Embedded (AMD64 and EMT64)
2nd Sep 2011 FirebirdCS-2.1.4.18393-0-Solaris10-amd64.pkg.gz 8 MB Compressed package with install script

Компонент TFDTransaction

Параметр
Назначение
Connection
Связь с компонентом FDConnection.
Options.AutoCommit
Управляет автоматическим стартом и завершением транзакции. Значение по умолчанию True.
Если значение этого свойства установлено в True, то FireDAC делает следующее:Запускается транзакция (если требуется) перед выполнением каждой SQL команды, и завершает транзакцию после выполнения SQL команды. Если команда выполнится успешно, то транзакция будет завершена как COMMIT, иначе — ROLLBACK.
Если приложение вызывает метод StartTransaction, то автоматическое управление транзакциями будет отключено, до тех пор, пока транзакция не завершится как Commit или Rollback.

В Firebird автоматическое управление транзакциями эмулируется самими компонентами FireDAC.
Options.AutoStart
Управляет автоматическим запуском транзакции. По умолчанию True.
Options.AutoStop
Управляет автоматическим завершением транзакции. По умолчанию True.
Options.DisconnectAction
Действие, которое будет выполнено при закрытии соединения, если транзакция активна. Значение по умолчанию xdCommit. Возможны следующие варианты:xdNone – ничего не будет сделано. Действие будет отдано на откуп СУБД;
xdCommit – подтверждение транзакции;
xdRollback – откат транзакции.

В других компонентах доступа значение по умолчанию для подобного свойства xdRollback. Поэтому необходимо выставлять это свойство вручную в то значение которое действительно требуется.
Options.EnableNested
Управляет вложенными транзакциями. Значение по умолчанию True.
Когда транзакция активна, то следующий вызов StartTransaction создаст вложенную транзакцию. FireDAC эмулирует вложенные транзакции, используя точки сохранения, если СУБД не поддерживает вложенные транзакции в явном виде. Чтобы отключить вложенные транзакции, установите EnableNested в False и следующий вызов StartTransaction вызовет исключение.
Firebird не поддерживает вложенные транзакции в явном виде.
Options.Isolation
Определяет уровень изолированности транзакции

Это самое важное свойство транзакции. Значение по умолчанию xiReadCommited

Возможны следующие варианты:xiUnspecified – используется уровень изоляции по умолчанию для вашей СУБД (в Firebird это SNAPSHOT, т.е. с параметрами read write concurrency wait);
xiDirtyRead – этого уровня изолированности в Firebird не существует поэтому вместо него будет использован READ COMMITED;
xiReadCommited – уровень изолированности READ COMMITED. В Firebird такая транзакция стартует с параметрами read write read_committed rec_version nowait;
xiRepeatableRead – этого уровня изолированности в Firebird не существует поэтому вместо него будет использован SNAPSHOT;
xiSnapshot – уровень изолированности SNAPSHOT. В Firebird такая транзакция стартует с параметрами read write concurrency wait;
xiSerializable – уровень изолированности SERIALIZABLE. На самом деле в Firebird не существует транзакции с данным уровнем изолированности, но он эмулируется запуском транзакции с параметрами read write consistency wait.

Options.Params
Специфичные для СУБД параметры транзакции. В настоящее время используется только для Firebird и Interbase. Возможные значения:read
write
read_committed
concurrency
consistency
wait
nowait
rec_version
no rec_version

Options.ReadOnly
Указывает является ли транзакция только для чтения. По умолчанию False. Если установлено в True, то любые изменения в рамках текущей транзакции невозможны, в Firebird в этом случае отсутствует значение read в параметрах транзакции.
Установка этого свойства в True позволяет СУБД оптимизировать использование ресурсов.

Замечание
Такую транзакцию нельзя использовать для отчётов (особенно если они используют несколько последовательных запросов), потому что транзакция с режимом изолированности READ COMMITED во время перечитывания данных будет видеть все новые committed-изменения.
Для отчётов рекомендуется использовать короткую транзакцию только для чтения с режимом изолированности SNAPSHOT (Options.Isolation = xiSnapshot и Options.ReadOnly= True). В данном примере работа с отчётами не рассматривается.

Зачем нужен Firebird

Рассмотрим, что это за программа, какие функциональные возможности предлагает Firebird, а также что особенного в данном ПО.

Firebird – это бесплатная система управления базами данных (СУБД) с открытым исходным кодом. Это означает, что получить доступ к исполняемому коду ПО и внести свои коррективы сможет каждый, кто захочет самостоятельно адаптировать программу под определённые задачи. Софт распространяется бесплатно, кроме того он совместим со всеми актуальными на сегодня платформами, такими как Windows, Linux, MacOS, Unix-системами и прочими.

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

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

История

Через неделю после того, как Borland выпустила исходный код InterBase 6.0 25 июля 2000 г., на SourceForge был создан проект Firebird . Firebird 1.0 был выпущен для Linux, Microsoft Windows и Mac OS X 11 марта 2002 года с портами на Solaris , , HP-UX в течение следующих двух месяцев.

Работа по переносу кодовой базы с C на C ++ началась в 2000 году. 23 февраля 2004 года была выпущена Firebird 1.5, которая стала первым стабильным выпуском новой кодовой базы. Версия 1.5 включает улучшенный оптимизатор запросов , условные выражения SQL-92 , точки сохранения SQL: 1999 и поддержку явной . Firebird 2.0 был выпущен 12 ноября 2006 года, добавив поддержку 64-битных архитектур, таблиц , вложенных в FROM положений и программируемых замков таймаутов в блокировании операций .

Предыдущим стабильным выпуском была версия 2.1.6, в которой были добавлены новые функции, включая процедурные триггеры , рекурсивные запросы и поддержку операторов MERGE SQL: 2003 .

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

Самая последняя стабильная версия — Firebird 3.0, выпущенная 19 апреля 2016 года, с упором на производительность и безопасность. Существенная реорганизация кода позволила полностью поддерживать SMP- машины при использовании версии SuperServer.

В рамках Google Summer of Code 2013 началась работа по интеграции Firebird в качестве замены HSQLDB в LibreOffice .

Конфликт имен Mozilla Firefox

В апреле 2003 г. объявила о переименовании своего веб-браузера с Phoenix в Firebird после спора о товарных знаках с Phoenix Technologies .

Это решение вызвало озабоченность в проекте базы данных Firebird из-за предположения, что пользователи и поисковые системы в Интернете будут сбиты с толку базой данных и веб-браузером, использующим имя Firebird. Разработчики Mozilla выступили с заявлением, в котором разъясняли, что их программный пакет называется «Mozilla Firebird», а не «Firebird». В заявлении также говорится, что название Mozilla Firebird было .

Спор был разрешен 9 февраля 2004 года, когда Mozilla изменила название своего браузера на Mozilla Firefox , что положило конец конфликту.

Установка и работа программы

Несмотря на то, что Firebird является мощной СУБД и может работать с достаточно большими базами данных и с сотнями пользователей, её инсталлятор весит обычно не более 7 Мб (в зависимости от версии операционной системы), программа не займёт много места на жёстком диске. Процесс инсталляции выполняется в автоматическом режиме, так что с этим трудностей не возникает. Софт не требует настройки, запускается сразу после установки и работает в автоматическом режиме без участия в процессе системных администраторов.

Как запустить приложение Firebird

Когда Firebird выполняется как приложение, в системном трее будет видна его иконка, вид которой зависит от того, запущен только сервер или он контролируется Guardian. Управление посредством службы Guardian рекомендовано при выполнении Суперсервера, в случае с Классическим сервером Guardian не требуется, её можно не ставить при инсталляции.

Запускает Firebird инсталлятор, но если сервер не был запущен или инициализирован, до установки автоматического старта запускать или инициализировать его придётся вручную. Это можно сделать через Пуск – Все программы – Firebird или с командной строки. Команда для старта Guardian fbguard.exe -a или ibguard.exe -а (для версии 1.0.x), для запуска Суперсервера напрямую следует набрать fbserver.exe -a или ibserver.exe -а (для версии 1.0.x). Для Классического сервера также можно вызвать окно командной строки, перейти в каталог in и ввести fb_inet_server.exe -a. Если при установке софта выбран режим «Use Guardian», запустить службу можно из того же каталога командой fbguard.exe -с -a.

Как пользоваться Firebird

Кроме СУБД для полноценного функционирования нужна также IBExpert, оболочка, требуемая для разработки и администрирования. Она, как и Firebird Server, идёт в связке с программой. После того, как скачали инсталлятор с официального ресурса, начинаем установку. От пользователя требуется минимальное участие, инсталляция выполнится автоматически. По умолчанию настроен автоматический запуск, который будет осуществляться при каждом старте компьютера.

Чтобы начать работу, нужно запустить IBExpert, при первом старте оболочки потребуется ответить на запрос об использовании многотипных элементов интерфейса. В случае согласия интерфейс скопирует набор инструментов DELPHI.

Выполняем следующие действия, чтобы создать первую базу:

  • В главном меню выбираем «База данных».
  • Жмём «Создать».
  • В новом окне в пункте «Сервер» выбираем «Локальный».

После этого потребуется выбрать место хранения базы данных, прочие параметры будут заполнены автоматически. Для пользователя с логином SYSDBA применяется пароль по умолчанию masterkey. Чтобы сохранить настройки, жмём «Ок».

В Firebird поддерживаются типы данных SQL, кроме того введены динамически изменяемые большие двоичные данные и многомерные однородные массивы. Доступные типы данных зависят от версии СУБД. Значения определяются для каждого столбца в таблице Firebird, они указывают на характеристики данных и определяют, какие операции могут выполняться с ними, а также какое дисковое пространство занимают элементы.

Откуда Firebird попал к вам на компьютер

Если вы не качали конкретно Firebird, софт мог установиться вместе с другой программой, использующей его для корректного функционирования. В таком случае удалять Firebird не следует, поскольку такие действия приведут к неприятным последствиям в виде отказа работы программного обеспечения, которое обращается к СУБД.

Установка Firebird

1.   Диски куда будет устанавливаться FirebirdSQL cервер Firebird и любые базы данных которые вы создаете или к которым подключаетесь должны распологаться на жестком диске, который физически подключен к хост-компьютеру. Вы не можете расположить файлы сервера или любой другой базы данных на mapped drive, filesystem share или сетевой файловой системе.
Вы можете подключиться к базе данных расположенной на CD-ROM (в режиме чтения), но вы не можете запустить с него SQL сервер Firebird и не сможете обновить данные в базе.

2. Установочный скрипт или программа
Несмотря на то, что есть возможность установить Firebird простым копированием файлов, такая как «untarring» файла билда или распаковка .zip-файла, но при первой установке очень рекомендуется использование распространяемого комплекта ПО. Исполняемый файл установки под Windows, RPM-пакет (RedHat Package Manager) под Linux и официальный файл tar.gz для других POSIX-платформ.

2.1.  Платформа Windows
На серверных версиях Windows — Windows NT, 2000, ХР и Vista сервис Firebird запустится после завершения установки. После перезагрузки вашего компьютера он запустится автоматически.

Несерверные версии Windows — Windows 95, 98 и ME, не поддерживают сервисы. SQL cервер Firebird будет работать как приложение, защищенное другим приложением известное как Guardian. Если серверное приложение по какой-то причине завершилось неправильно, то Guardian попробует перезапустить его.
Копия клиентской библиотеки — fbclient.dll или gds32.dll будет установлена в системную директорию Windows.
2.2.  POSIX-платформы
В любом случае прочитайте release notes относящиеся к той версии Firebird которую вы собираетесь устанавливать. В них могут быть значительные отличия от релиза к релизу любой POSIX-совместимой операционной системы, в особенности относящиеся к категории open source. Где возможно, инженеры создающие билды для каждой версии Firebird, документируют любую известную проблему.
Если в вашем комплекте ПО нет копии release notes, то сходите на download-страницу веб-сайта Firebirdи скачайте копию оттуда.
Проще всего осуществить установку с использованием портов. Если порт под Firebird (InterBase) отсутствует его достаточно просто скачать в Интернете и установить в систему. На примере Freebsd. Заходим в /usr/ports/databases/firebird-server-xx (где хх — версия Firebird (InterBase)) и набираем make install. Все должно установиться. После чего аналогично поступаем с /usr/ports/databases/firebird-clientr-xx. В других Unix-овых системах установка через порты примерно такая же.
Если у вас есть дистрибутив Linux поддерживающий установку из RPM-пакетов, то, если необходимо, прочитайте соответствующую документацию для инструкций по использованию RedHat Package Manager’a. В большинстве дистрибутов у вас есть выбор производить ли установку из командной строки или посредством GUI интерфейса.
Для дистрибутивов не умеющих работать с RPM-пакетами и для ряда UNIX систем, используйте комплект „tar.gz». В release notes вы найдете подробные инструкции по установке.
В комплект включены shell-скрипты. В некоторых случаях, в release notes может быть написано чтобы вы изменили эти скрипты и произвели некоторые корректировки.
Для установки из rpm пакета необходимо выполнить следующую команду:
$rpm -Uvh Firebird.x.x.x.rpm
где Firebird.x.x.x.rpm является именем скачанного инсталляционного пакета.
Для установки с использованием пакета в формате tar.gz необходимо выполнить следующее: $tar -xzf Firebird.x.x.x.tar.gz 
$cd install 
$./install.sh

Выполнение этих команд приводит к одному и тому же результату — на Linux-машине будет установлен Firebird (InterBase). Вариант с архитектурой SuperServer будет функционировать в виде демона, a Classic — в виде сервиса.
Надо заметить, что приведенный порядок установки годится практически для любой версии Firebird (InterBase). Правда, для различных дистрибутивов Linux могут существовать свои особенности и хитрости при установке, так что лучше посмотреть рекомендации по установке для вашей версии ОС Linux/Unix.

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

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

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

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

Identifier case handling

As PostgreSQL and Firebird take opposite approaches to case folding (PostgreSQL
folds identifiers to lower case by default, Firebird to upper case), it’s important
to be aware of potential issues with table and column names.

When defining foreign tables, PostgreSQL will pass any identifiers which do not
require quoting to Firebird as-is, defaulting to lower-case. Firebird will then
implictly fold these to upper case. For example, given the following table
definitions in Firebird and PostgreSQL:

and given the PostgreSQL query:

will generate the following Firebird query:

which is valid in both PostgreSQL and Firebird.

By default, PostgreSQL will pass any identifiers which do require quoting
according to PostgreSQL’s definition as quoted identifiers to Firebird. For
example, given the following table definitions in Firebird and PostgreSQL:

and given the PostgreSQL query:

will generate the following Firebird query:

which is also valid in both PostgreSQL and Firebird.

The same query will also be generated if the Firebird table and column names
are specified as options:

However PostgreSQL will not quote lower-case identifiers by default. With the
following Firebird and PostgreSQL table definitions:

any attempt to access the foreign table will result in the Firebird
error , as Firebird is receiving the unquoted PostgreSQL
table name and folding it to upper case.

To ensure the correct table or column name is included in queries sent to Firebird,
from 1.2.0 the table or column-level option can
be provided, which will force the table or column name to be passed as a quoted
identifier. The preceding foreign table should be defined like this:

and given the PostgreSQL query:

will generate the following Firebird query:

The server-level option can be set to to quote all identifiers
(table and column names) by default. This setting can be overridden for individual
table and column names by setting the respective option to .

2011

2.1 (последний релиз 2.1.4 от 15.03.2011)

Среди нововведений необходимо выделить глобальные триггеры базы данных, общие табличные выражения (CTE), временные таблицы, возможность мониторинга базы данных через SQL, отмена зависших запросов, а так же новые SQL инструкции.

2.5

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

Новые возможности SQL в Firebird 2.5

  • Управление пользователями через SQL (CREATE USER/ALTER USER/DROP USER).
  • Модификация представлений через инструкции ALTER VIEW и CREATE OR ALTER VIEW.
  • Возможность изменять вычисляемые поля ALTER COLUMN.
  • Оператор SIMILAR TO позволяет проверять регулярные выражения в условии WHERE, CHECK и в операторе * IF расширения PSQL.

Прочие изменения в Firebird 2.5

  • Поддержка автономных транзакций в PSQL (хранимые процедуры, триггеры, оператор EXECUTE BLOCK.
  • Выполнение гетерогенных запросов через EXECUTE STATEMENT
  • VIEW на основе хранимых процедур
  • Таймауты запросов
  • Улучшенный мониторинг. MON$MEMORY_USAGE и др.
  • Принудительное отключение клиента через MON$STATEMENTS.
  • Новая системная роль RDB$ADMIN позволяет передавать SYSDBA свои привилегии другому юзеру в пределах базы данных.

2.5.1 (последний релиз от 4.10.2011)

Спустя год после выхода СУБД Firebird 2.5 представлен корректирующий релиз Firebird 2.5.1 . Кроме исправления ошибок, в новой версии представлено несколько улучшений:

  • Заметно увеличена производительность восстановления БД (gbak restore) на стадии добавления данных;
  • Добавлена поддержка записи в глобальные временные таблицы для баз, находящихся в режиме только для чтения. Увеличена производительность глобальных временных таблиц и эффективность работы сборщика мусора;
  • В PSQL добавлена поддержка контекстной переменной SQLSTATE, которая может использоваться в блоках WHEN наряду с переменными GDSCODE и SQLCODE для диагностики ошибок;
  • В API добавлены функции предобразования между BLOB.

Faster — многофункциональный ускоритель работы программиста 1С и других языков программирования Промо

Программа Faster 9.4 позволяет ускорить процесс работы программиста
(работает в любом текстовом редакторе).
Подсказка при вводе текста на основе ранее введенного текста и настроенных шаблонов.
Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код.
Исправление введенных фраз двойным Shift (с помощью speller.yandex). Переводчик текста. Переворачивает текст случайно набранный на другой раскладке.
Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования.
Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода.
Настройка любых шорткатов под себя с помощью скриптов.
Никаких установок и лицензий, все бесплатно.

1 стартмани

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector