Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > Информация, документация, статьи, примеры


Автор: Alex 6.11.2004, 22:59
http://www.ibase.ru/develop.htm

Автор: Alex 15.12.2004, 01:22
http://www.interbase-world.com/ru/interbase/doc/

Автор: Alex 10.2.2005, 00:45
FAQ по ресурсам посвещенным IB в hlp формате: http://files.vingrad.ru/alex/faq/IB_FAQ.rar

Автор: Akella 1.12.2008, 12:56
Русскоязычная документация по Firebird (Сайт на русском по СУБД Firebird)
http://www.firebirdsql.su/doku.php 

http://www.ibprovider.com/rus/documentation/firebird.html

http://www.infop.ru/forum/attachment.php?attachmentid=1206&d=1285306245

http://ibase.ru/unicode_faq.html

http://www.firebirdsql.org/manual/ru/

Автор: Akella 9.12.2008, 17:05
http://howtoforge.com/installing-firebird-2.0.3-database-server-on-ubuntu-7.10
Установка Firebird на Linux

Автор: Akella 10.12.2008, 12:26
Блог http://www.firebird21-database.blogspot.com/
Статьи о Firebird 2.1 на русском.

Автор: Akella 12.12.2008, 12:43
http://www.ibase.ru/devinfo/dataaccesspaths.htm
Цитата

Firebird: Методы доступа к данным
Дмитрий Еманов <[email protected]>, (с) 2005-2006, v1.0
Содержание
   1. Введение
   2. 1. Первичные методы доступа
         1. 1.1. Чтение таблицы
               1. 1.1.1. Полное сканирование
               2. 1.1.2. Доступ через идентификатор записи
               3. 1.1.3. Позиционированный доступ
         2. 1.2. Индексный доступ
               1. 1.2.1. Битовые карты
               2. 1.2.2. Сканирование диапазона
               3. 1.2.3. Навигация по индексу
         3. 1.3. Доступ посредством RDB$DB_KEY
         4. 1.4. Внешняя таблица
         5. 1.5. Процедурная выборка
   3. 2. Фильтры
         1. 2.1. Проверка предикатов
         2. 2.2. Сортировка
         3. 2.3. Агрегирование
         4. 2.4. Счетчики
         5. 2.5. Проверка сингулярности
         6. 2.6. Блокировка записи
   4. 3. Методы слияния
         1. 3.1. Соединение
               1. 3.1.1. Рекурсивный перебор
               2. 3.1.2. Однопроходное слияние
               3. 3.1.3. Хеширование
         2. 3.2. Объединение
   5. Заключение

Автор: Akella 5.1.2009, 12:15
Цитата

Утилита nbackup СУБД Firebird 

nbackup является новой утилитой резервного копирования для СУБД Firebird 2.0. Эта утилита предоставляет возможности, отсутствовшие в утилите gbak, которая была унаследована от СУБД Interbase. Однако она не заменяет полностью возможности последней. Обе программы имеют свои сильные и слабые стороны; вероятнее всего, они будут сосуществовать некоторое время. 

http://firebird.sourceforge.net/manual/ru/nbackup-ru.html

Автор: Akella 13.1.2009, 12:19
http://www.ibprovider.com/rus/news/n_090110.html
Цитата

В IBProvider v3 разработан принципиально новый механизм работы с кодовыми страницами текстовых данных Firebird и Interbase.


Изменения в IBProvider v3 [build 3.0.0.6327 RC3]
В новой версии IBProvider v3 предложена принципиально новая схема работы с кодовыми страницами текстовых данных:

    * Добавлено свойство ctype_user, позволяющее указать кодировку, в которой данные будут поступать к клиенту, независимо от того, в какой кодировке данные передаются от сервера БД.
    * Поддерживаются псевдонимов кодовых страниц Firebird и Interbase .
    * Добавлено свойство ctype_none, которое позволяет задать кодовую страницу для работы с текстовыми данными в кодировке NONE.
    * Новые алгоритмы перекодирования BLOB-полей, обеспечивают быструю работу с поточными данными, оптимизация взаимодействия с библиотекой кодировок ICU.
    * Внесены прочие важные изменения.


Добавлено через 1 минуту и 26 секунд
http://www.ibprovider.com/rus/documentation/firebird_21_adonet_rus.html

Цитата

Использование новых возможностей Firebird 2.1. в ADO .Net

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

Мы решили не отставать с реализацией новых возможностей и рады сообщить о выходе новой версий IBProvider Professional Edition с полноценной поддержкой Firebird 2.1.

Автор: Akella 20.1.2009, 00:35
http://www.ibase.ru/devinfo/udf_ok.htm

Автор: Akella 1.2.2009, 15:35
http://firebird3-sql.blogspot.com/

Автор: Akella 9.2.2009, 09:05
Соединения (join) в Firebird. http://ibase.ru/devinfo/joins.htm.

http://www.ibase.ru/devinfo/deldupes.htm
http://forum.vingrad.ru/index.php?showtopic=152804&view=findpost&p=1143544
http://forum.vingrad.ru/index.php?showtopic=127397&view=findpost&p=961325
http://sql.ru/forum/actualthread.aspx?tid=793920#9531267


http://www.ibase.ru/devinfo/updsame.htm

http://www.stunnel.org/



Немного о RDB$DB_KEY
Цитата

The RDB$DB_KEY is not a record counter.  It's a three part index,
consisting of a pointer page number, an offset on that page, and an
offset into the line index on the data page.  If you never delete
rows, then each new value will be higher than all existing values,
but the numbers won't be sequential.


Лучший "дефрагментатор" для базы данных - это backup/restore. А вообще дефрагментация базы не требуется.

Из http://www.ibase.ru/ibfaq.htm

Автор: Akella 10.2.2009, 11:39
http://www.devrace.com/ru/fibplus/articles/


Примеры работы с компонентами FibPlus
http://www.devrace.com/files/example_demo_pack.zip
Цитата

    *  Simple query sample
    * Sample with graphic blob-fields (Fish demo)
    * Handling event alerts sample
    * Local filtering sample
    * Local sorting sample
    * Local searching sample
    * Local and server-side searching sample
    * Master-detail example
    * Loading a form from DLL
    * Using FIBPlus Cache***() methods
    * FIBPlus and MIDAS example
    * FIBPlus glyphes for Delphi and C++ Builder IDE

The necessary database is included in archives.

http://www.devrace.com/ru/fibplus/download/

http://www.devrace.com/ru/fibplus/articles/1800.php

Автор: Akella 16.2.2009, 21:59
Документация по firebird на русском
http://forum.vingrad.ru/forum/topic-163121.html

Добавлено @ 22:02
Безопасность в Firebird
http://www.firebirdsql.org/manual/ru/fbmetasecur-ru.html

Автор: Akella 1.3.2009, 12:45
http://ru.wikipedia.org/wiki/Firebird
Статья в Wiki про Firebird. В конце статьи куча ссылок.

Автор: Akella 2.3.2009, 12:11
Почему нельзя использовать RAID 5 для сервера базы данных?
и
Как оптимальным образом сконфигурировать RAID контроллер для размещения базы данных сервера Firebird? 

http://gsbelarus.com/gs/wiki/index.php/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83_%D0%BD%D0%B5%D0%BB%D1%8C%D0%B7%D1%8F_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_RAID_5_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85

Автор: Akella 12.3.2009, 14:57
http://www.sql.ru/forum/actualthread.aspx?tid=574720&pg=3&#6915788

Автор: Akella 27.3.2009, 21:15
http://klog.h17.ru/interbase/chapter2/1.html
Разработка приложений баз данных InterBase на Borland Delphi/C++ Builder/Kylix

Автор: Akella 3.4.2009, 14:22
http://www.firebirdsql.org/pdfrefdocs/Firebird-2.0-LangRef-Update.pdf

Автор: Akella 8.4.2009, 23:33
http://www.ibase.ru/unicode_faq.html
http://www.ibase.ru/devinfo/ib_unicode.htm

Автор: Akella 21.4.2009, 20:22
Как сортировать текстовое BLOB поле в Firebird

Код
order by substring(text_data from 1 for 100)

http://sql.ru/forum/actualthread.aspx?tid=658000

Автор: Akella 19.5.2009, 21:16
Общий метод формирования сообщений об ошибках при работе с базами данных и его использование для БД Firebird

http://rsdn.ru/article/db/FBErrors.xml

Автор: Akella 23.5.2009, 19:23
http://www.amsoftwaredesign.com/pg_vs_fb
Не знаю, как в новых версиях PostgreSQL, а вот в Firebird 2.5 уже  в той таблице можно некоторые No заменить на Yes.

Автор: Akella 25.5.2009, 11:37
http://www.ibase.ru/ibinstall/ib7cluster.htm

Автор: Akella 31.5.2009, 10:58
http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%84%D0%BE%D1%80%D0%BC%D1%8B

Автор: former 11.6.2009, 23:39

http://www.ibphoenix.com/main.nfs?a=ibphoenix&s=1141149701:439782&page=ibp_replicator
http://www.meta.com.au/index.php?option=content&task=view&id=23&Itemid=33

Автор: Akella 12.6.2009, 10:02
http://offline.computerra.ru/2006/655/288060/

Автор: Akella 1.10.2009, 09:48
yournewhosting.com
Хостинг с Firebird 2

Автор: Deniz 12.10.2009, 05:04
FireBird http://www.ibphoenix.com/main.nfs?a=ibphoenix&s=1255119263:702879&page=ibp_download_15

Автор: Akella 27.10.2009, 13:03
http://groups.google.com/group/ru-firebird/browse_thread/thread/dcff493cf3e0b94d?hl=ru

Автор: Akella 12.11.2009, 22:00
Скрипт создания резервной копии базы данных firebird (не помню, где нашел, пока что сам не использовал)

Код

rem Cкрипт срочной архивации баз
@echo off
rem Ключ proceed нужен для предотвращения случайного запуска
if not %1==proceed goto quit

title sweep, backup and restore database
echo ***************************************************************************
echo.|date
echo.|time

rem Устанавливаем локальные переменные на уровне командного файла (для удобства)

setlocal
set path=C:\program Files\Firebird\Firebird_1_5\Bin
set backuppath="d:\backup"
set logpath="d:\backup\logs"
set IB_USER="SYSDBA"
set IB_PASS="password"

rem Gbak лежит по пути Path. Копирование выполняется без сборки мусора (-g)
rem Пишется лог в gbak_tmp_1.log, после backup файла лога переименовывает файл
rem лога в соответствии с текущими датой и временем (rendate - самописная программа)

gbak.exe -user %IB_USER% -password %IB_PASS% -b -g -v -z -y %LOGPATH%\gbak_tmp_1.log "localhost/3070:base" %BACKUPPATH%\base.fbk
rendate %LOGPATH%\gbak_tmp_1.log "_YYMMDD_HHMMSS"
echo.|date
echo.|time
:quit


Добавлено через 1 минуту и 52 секунды
Стандартный скрипт создания резервной копии базы данных firebird (использовал часто)
Код
"c:\program files\firebird\firebird_2_0\bin\gbak.exe" -b -v -user sysdba -password masterkey origina_base.fdb base.bak


Добавлено через 2 минуты и 49 секунд
учтите, что параметр -g запрещает сборку мосура при создании резервной копии

Автор: Deniz 13.11.2009, 06:39
Выложу и я свой скрипт(первоначально где-то взял, потом доработал), может кому понадобится:
Код
@echo off
set gbak="C:\Program Files\Firebird\Firebird_1_5\bin\GBAK.EXE"
set rar="d:\winrar\winRar.exe" m -m5 -md4096 -ep -cl -idp -ag_A -inul
set gfix="C:\Program Files\Firebird\Firebird_1_5\bin\GFIX.EXE"

set user=SYSDBA
set pass=masterkey

rem в первой переменной передается файл БД
set f_name1=%1

set fGDB="localhost:d:\base\%f_name1%"
set fGBK="d:\backup\%f_name1%.fbk"
set fRAR="d:\backup\%f_name1%.rar"

echo ======== %f_name1% ========
echo  %date:~0,10% %time:~0,8% backup
%gbak% -b -v -user %user% -pass %pass% %fGDB% %fGBK%

echo  %date:~0,10% %time:~0,8% archive
%rar% "%fRAR%" %fGBK% 

rem echo     gfix ...
rem %gfix% -sweep -user %user% -password %pass% %fGDB%

echo  %date:~0,10% %time:~0,8% done

Автор: Akella 9.12.2009, 12:14
Конвертировать строку в таблицу.
На входе строка '1,2,3,4', на выходе - таблица.

Код

create or alter procedure SPLIT_INTEGER (
    VALUE_ varchar(2048))
returns (
    RESULT integer)
as
declare variable TEMP_ varchar(16);
declare variable CHAR_ varchar(1);
begin
    if (value_ is null) then
       exit;
    --end if
    value_=value_||',';
    temp_='';
    while (value_<>'') do
    begin
       char_=substring(value_ from 1 for 1);
       if (char_=',') then
       begin
          if (temp_<>'') then
          begin
             result=cast(temp_ as integer);
             temp_='';
             suspend;
          end--if
       end
       else
          temp_=temp_||char_;
       --end if
       value_=substring(value_ from 2 for 2048);
    end--while
end

http://groups.google.com/group/ru-firebird/browse_thread/thread/dcff493cf3e0b94d?hl=ru

Автор: Deniz 9.12.2009, 15:06
Akella, там же потом полегче процедура (чуток подправил):
Код
create procedure UnList (
  String varchar(2048),
  Separator varchar(1)
)
returns (Row varchar(20))
as
begin
  Separator = coalesce(Separator, ';');
  if (Separator = '') then Separator = ';';
  Row = '';
  while (String != '') do
  begin
    if (substring(String from 1 for 1) != Separator) then
      Row = Row || substring(String from 1 for 1);
    else
    begin
      if (Row != '') then suspend;
      Row = '';
    end
    String = substring(String from 2);
  end
  if (Row != '') then suspend;
end
Примеры вызова:
Код
select ul.* from
rdb$database r
left join unlist(';Фамилия;Имя;;Отчество;2;3;4;5;', '') ul on 1=1
where ul.Row <> '3'
на выходе таблица. Прошу обратить внимание на возвращаемое значение varchar(...), кому надо приводите к нужному типу и размеру.

Автор: Akella 19.1.2010, 12:12
http://www.ibase.ru/devinfo/gbak.htm

Автор: Akella 29.3.2010, 12:36
http://www.sql.ru/faq/faq.aspx?id=80000

Автор: Akella 8.4.2010, 13:46
http://www.realcoding.net/articles/poleznye-zaprosy-k-sistemnym-tablitsam.html
Код

/* Неиспользумые домены */
select RF.Rdb$Field_Name
  from Rdb$Fields RF
 where RF.Rdb$Field_Name not like 'RDB$%'    /* Используются Interbase */
   and not exists (select 1
                     from Rdb$Relation_Fields
                    where RDB$FIELD_SOURCE = RF.Rdb$Field_Name);

/* Неиспользуемые исключения */
select E.Rdb$Exception_Name
  from Rdb$Exceptions E
 where E.Rdb$Exception_Name not like 'RDB$%' /* Используются Interbase */
   and not exists (select 1
                     from Rdb$Dependencies D
                    where D.Rdb$Depended_On_Name = E.Rdb$Exception_Name)


/* Неиспользуемые UDF: */
select F.Rdb$Function_Name
  from Rdb$Functions F
 where not exists (select 1
                     from Rdb$Dependencies D
                    where D.Rdb$Depended_On_Name = F.Rdb$Function_Name)

/* Неиспользуемые генераторы: */
select G.Rdb$Generator_Name
  from Rdb$Generators G
 where G.Rdb$Generator_Name not like 'RDB$%' /* Используются Interbase */
   and G.Rdb$Generator_Name not like 'SQL%'  /* Используются Interbase */
   and not exists (select 1
                     from Rdb$Dependencies D
                    where D.Rdb$Depended_On_Name = G.Rdb$Generator_Name)



Добавлено через 14 минут и 54 секунды
http://www.realcoding.net/articles/delete-mytable-commit-ili-vosstanovlenie-dannykh-v-subd-interbase.html

Автор: Akella 9.4.2010, 10:17
Удалить дубликаты записей в Firebird

Этот запрос удалит дубликаты записей по полю tel, основываясь на дополнительном условии - id_mediator is not null
Код

delete from phones
where
  (id_mediator is not null)
and 
  tel in (select p.tel from phones p
            where (p.id_mediator is not null)
            group by 1
            having count(p.tel) > 1)

Спасибо Deniz`у.

Автор: Deniz 9.4.2010, 11:37
Позволю себе некоторые комментарии:
Особенность FireBird состоит в том, что внутренний запрос (в where) выполняется для каждой удаляемой записи.
Следовательно, удалятся все дубликаты кроме последнего, т.к. для него внутренний запрос уже не отработает.
http://www.ibase.ru/ibfaq.htm#delall

Автор: Akella 5.2.2011, 11:30
Репликация Firebird
http://www.aleksandr-pro.ru/project1.php



user posted image

Автор: Akella 26.11.2011, 12:56
Хостинг с поддержкой Firebird
Есть два неплохих русскоязычных хостера, которые предоставляют хостинг с поддержкой Firebird.
1. http://sweb.ru/ (на тарифе SX-1 нет поддержки Firebird)
2. http://moshoster.ru/

И оба хостера могут предоставить доступ к Firebird извне. Это очень здорово smile

Автор: Akella 26.1.2012, 13:20
Замена IN. Конвертировать строку в таблицу. На входе строка '1,2,3,4', на выходе - таблица.


Код

CREATE OR ALTER PROCEDURE LIST_TO_ROWS(
    LST BLOB SUB_TYPE TEXT)
RETURNS (
    ID INTEGER)
AS
  declare pos_ int;
  declare offset int = 1;
  declare beg int;
  declare buf varchar(30100);
begin
  if (lst is null) then exit; -- добавлено по подсказке wm

  while (0=0) do begin
    buf = substring(lst from offset for 30100);
    pos_ = 1; beg = 1;
    while (pos_ <= char_length(buf) and pos_ <= 30000) do begin
      if (substring(buf from pos_ for 1) = ',') then begin
        if (pos_ > beg) then
          id = substring(buf from beg for pos_ - beg);
        else
          id = null;
        suspend;
        beg = pos_ + 1;
      end
      pos_ = pos_ + 1;
    end
    if (offset + pos_ - 2 = char_length(lst)) then leave;
    offset = offset + beg - 1;
    if (offset > char_length(lst)) then leave;
  end

  if (pos_ > beg) then
    id = substring(buf from beg for pos_ - beg);
  else
    id = null;
  suspend;
end



http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=607154&msg=6686267

Автор: Akella 16.4.2012, 16:51
http://www.ibase.ru/ibfaq.htm#insinf

Автор: Akella 9.7.2012, 11:13
http://www.firebirdsql.org/file/documentation/release_notes/Firebird-2.5.0-ReleaseNotes-Russian.pdf

http://www.firebirdsql.org/file/documentation/release_notes/html/ru/rlsnotes25.html

Автор: Akella 19.10.2012, 10:13
http://www.firebirdfaq.org/faq373/


Код

EXECUTE block as
BEGIN
if (not exists(
select 1 from RDB$RELATION_FIELDS rf
where rf.RDB$RELATION_NAME = 'T1' and rf.RDB$FIELD_NAME = 'C1'))
then
execute statement 'ALTER TABLE T1 ADD C1 INTEGER';
END



Код

create procedure add_column(tab_name varchar(31), col_name varchar(31),
data_type varchar(100))
BEGIN
if (not exists(
select 1 from RDB$RELATION_FIELDS rf
where rf.RDB$RELATION_NAME = :tab_name and rf.RDB$FIELD_NAME = :col_name))
then
execute statement 'ALTER TABLE "'||tab_name||'" ADD "'||:col_name||'" '||:data_type;
END



execute procedure add_column('T1', 'C1', 'INTEGER');

Автор: Akella 24.10.2012, 09:48
Видео
http://www.youtube.com/user/IBExpertise/videos?view=1

Автор: Akella 31.10.2012, 13:22
Скрипт VBS изменения пароля на сервере Firebird для главного пользователя SYSDBA на Windows
Скопируйте скрипт в папку bin, где установлен firebird. По умолчанию для Firebird 2.5: C:\Program Files\Firebird\Firebird_2_5\bin\

Автор: Akella 8.11.2012, 17:10
http://web.firebirdsql.org/pdfmanual/ru/Firebird-Generatori.pdf

Автор: Akella 15.12.2012, 17:12
http://www.sql.ru/forum/actualthread.aspx?tid=932837

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)