вторник, 4 ноября 2008 г.

Доступ к Firebird 2.0 из Visual Studio .Net

Здравствуйте коллеги!

На днях наткнулся на интересный материал посвященный работе с Firebird 2.0 в Net.

Автор приводит примеры использования INSERT RETURNING, EXECUTE BLOCK, ROLLBACK RETAIN, ROWS. Многим будут интересны производные таблицы (Derived tables).

Статья Firebird + ADO .Net доступна в двух вариантах:

среда, 22 октября 2008 г.

Осваиваем Firebird SQL. Компоненты доступа, администрирование.

Firebird - кроссплатформенная система управления базами данных, существующая в различных вариантах под Windows, Unix, MacOs и т.Д. Начиная с версии Firebird 2, появилась возможность полноценно работать с 64-битными платформами. Выгодное отличие Firebird - это его бесплатность.

Firebird SQL Server существует в 3-х вариантах:
  • Firebird Embedded - предназначен для встраиваемых баз данных;
  • Firebird Classic Server - на каждое клиентское подключение создает отдельный серверный процесс;
  • Firebird Super Server - все клиентские коннекты обслуживаются одним серверным процессом, имеется общий клиентский кеш;
Если у вас нет достаточного опыта работы с Firebird SQL, то начинайте с Firebird Super Server

На момент написания статьи последняя версия Firebird 2.5, стабильная версия - Firebird 2.1. Скачать их можно отсюда: Firebird скачать.

Драйвер для Firebird 2.5

Помимо самого SQL сервера, вам понадобится драйвер для работы с Firebird из различных средств разработки. Я рекомендую воспользоваться IBProvider . Этот OLE DB provider, позволяет работать со всеми версиями Interbase и Firebird, включая Firebird 2.5. Технология OLE DB позволяет разрабатывать приложения под большинство известных средств разработки для Windows: Delphi, ADO, Visual Studio.Net, VBScript, VBA, C++, C#, ASP, ASP.Net и т.Д. Скачать IBProvider можно на официальном сайте: Firebird provider и Interbase driver.

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

В дистрибутив Firebird SQL Server включена утилита командной строки, позволяющая производить операции с базой данных. С её помощью вы можете создать базу, таблицы и связи, а так же выполнять различные SQL-запросы к данным.

isql не единственное средство администрирования Firebird и Interbase. Кроме него существует множество платных и беспланых графических утилит. Наиболее популярные из них: IBExpert, Flame Robin, Blaze Top, IB/FB Development Studio.

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

пятница, 22 августа 2008 г.

Firebird 2.0 - Изменение в DDL

Firebird 2.0 - CREATE SEQUENCE

CREATE SEQUENCE - синоним GENERATOR добавлен в Firebird 2.0 в соответствии со стандартом SQL-99:
/* создать последовательность */
CREATE SEQUENCE S_EMPLOYEE;
/* удалить последовательность */
DROP SEQUENCE S_EMPLOYEE;
/* установить начальное значение */
ALTER SEQUENCE S_EMPLOYEE RESTART WITH 0;
/* получить значение генератора */
GEN_ID (S_EMPLOYEE, 1)NEXT VALUE FOR S_EMPLOYEE

Firebird 2.0 - ALTER TABLE поддерживает SET/DROP DEFAULT

Данная конструкция позволяет управлять значениями по умолчанию через SQL без использования системных таблиц Firebird 2.0:
ALTER TABLE t ALTER [COLUMN] c SET DEFAULT default_value;
ALTER TABLE t ALTER [COLUMN] c DROP DEFAULT;

Firebird 2.0 - RECREATE EXCEPTION и CREATE OR ALTER EXCEPTION

Создать исключение если оно еще не создано и модифицировать если EXCEPTION уже существует.

Firebird 2.0 - SQL оператор COMMENT

Позволяет задавать описания метаданных через SQL для следующих объектов: DOMAINTABLE, VIEW, PROCEDURE, TRIGGER, EXTERNAL FUNCTION, FILTER, EXCEPTION, GENERATOR, SEQUENCE, INDEX, ROLE, CHARACTER SET, COLLATION

Firebird 2.0 - Улучшения CREATE VIEW

Операторы FIRST/SKIP и ROWS могут быть использованы при создании представлений

Firebird 2.0 - RECREATE TRIGGER

Пересоздает триггер. Поведение данной инструкции аналогично всем RECREATE модификаторам в Firebird 2.0.

четверг, 21 августа 2008 г.

Firebird 2.0 - Изменения в ODS

Изменена версия ODS файла базы данных Firebird 2.0 - ODS 11.

Список изменений файла БД:
  • Максимальный размер текста исключений exceptions = 1024 байта.
  • Возможность задавать описания генераторов.
  • Возможность задавать описания ролям пользователей.
  • Введено понятие ODS Type для различия версий ODS у Interbase и Firebird.
  • DSQL парсер пытается возвращать номер колонки и строки незавершенного SQL выражения.
  • Новая колонка RDB$STATISTICS в RDB$Index_Segments.


среда, 20 августа 2008 г.

Firebird 2.0 – Новые возможности DML (Data Model Language)

Firebird 2.0 - ROLLBACK RETAIN - Откат транзакции с сохранением состояния

ROLLBACK RETAIN – откатывает транзакцию на момент последнего вызова COMMIT RETAIN или на момент старта транзакции.

Firebird 2.0 - Инструкция EXECUTE BLOCK

EXECUTE BLOCK - позволяет выполнить блок инструкций на стороне сервера. Пример:
EXECUTE BLOCK (X INTEGER = :X)
RETURNS (Y INTEGER)      
AS                       
BEGIN                    
    Y = X * 2;           
SUSPEND;                 
END

Firebird 2.0 - INSERT RETURNING - Возврат значений после вставки.

В Firebird 2.0 появилось дополнение RETURNING к команде INSERT позволяет выполнить вставку и прочитать добавленные значения. Очень удобно получать значение ID-поля записи, для которого использовался генератор:
insert into sample (ID, data)
values(GEN_ID(sample_generator,1),:data)
RETURNING ID
RETURNING для остальных операций появился только в следующих версиях Firebird, начиная с Firebird 2.1: UPDATE … RETURNING, INSERT OR UPDATE … RETURNING, DELETE … RETURNING

Firebird 2.0 - Производные таблицы – именованные наборы данных

Производные таблицы (Derived tables) - это именованные наборы, основанные на выборке SELECT. Пример именованной выборки:
select * from
  (select EMP_NO, FIRST_NAME  ' '  LAST_NAME from employee)
      as EMPLOYEE_DERIVED_TABLE (ID, FULL_NAME)
Развитием производных таблиц Firebird 2.0 стали CTE (COMMON TABLE EXPRESSIONS) - общие табличные выраженияв Firebird 2.1 . В отличии от производных таблиц, CTE позволяют писать более сложные запросы, в том числе и рекурсивные!

Firebird 2.0 - Инструкция ROWS - Альтернатива FIRST/SKIP

ROWS - позволяет указать количество обрабатываемых записей. Может быть использовано любых подзапросах, в UNION, в командах UPDATE и DELETE. Пример постраничного вывода:
select * from customer rows 50 to 100

Firebird 2.0 - добавлено IIF - условие

Возможна более короткая запись условия в запросе:
SELECT IIF(VAL > 0, VAL, -VAL) FROM OPERATION
Взамен:
CASE
WHEN  THEN 
ELSE 
END

Firebird 2.0 - функция CAST - Приведение типов.

Позволяет сообщить серверу firebird 2.0 о типе преобразуемого параметра:
SELECT CAST(? AS INT) FROM RDB$DATABASE

Firebird 2.0 - Улучшенная функция SUBSTRING

Функция substring может принимать выражения, подзапросы, вложенные функции в качестве 2-го и третьего параметров:
x = varchar(50);
substring(x from 1 for 1);

Firebird 2.0 - Новые контекстные переменные

CURRENT_TIME and CURRENT_TIMESTAMP опциаонально позволяют получать время с секундами:

1. SELECT CURRENT_TIME FROM RDB$DATABASE;
2. SELECT CURRENT_TIME(3) FROM RDB$DATABASE;
3. SELECT CURRENT_TIMESTAMP(3) FROM RDB$DATABASE;

Firebird 2.0 - GROUP BY может быть выражением

GROUP BY
SUBSTRING(CAST((A * B) / 2 AS VARCHAR(15)) FROM 1 FOR 2)

Firebird 2.0 - Поддержка индекса колонки в ORDER BY для запроса SELECT *

SELECT * FROM … ORDER BY 9

Firebird 2.0 - оператор NEXT VALUE FOR – Синоним GEN_ID

INSERT INTO EMPLOYEE (ID, NAME)
VALUES (NEXT VALUE FOR S_EMPLOYEE, 'Vasya Pupkin');

Кроме того:

  • Улучшения при работе с NULL.
  • Поддержка CROSS JOIN.
  • Поддержка ROWS, PLAN и ORDER BY в операторах UPDATE и DELETE.
  • Функции для работы с контекстными переменными: RDB$GET_CONTEXT и RDB$SET_CONTEXT.
  • Поддержка псевдонимов колонок в условиях ORDER BY и GROUP BY.
  • Предопределенные пространства имен USER_SESSION, USER_TRANSACTION, SYSTEM.

вторник, 19 августа 2008 г.

Краткий обзор изменений в Firebird 2.0

Firebird 2.0 - Изменения в DDL

  • ALTER TABLE поддерживает SET/DROP DEFAULT
  • CREAT SEQUENCE – синоним GENERATOR
  • RECREATE EXCEPTION и CREATE OR ALTER EXCEPTION
  • SQL оператор COMMENT
  • RECREATE TRIGGER
  • Поддержка FIRST/SKIP и ROWS в CREATE VIEW

Firebird 2.0 - Изменения в DML

  • EXECUTE BLOCK – выполнение инструкций на стороне сервера
  • Производные таблицы – именованные наборы на основе SELECT позволяют составлять более сложные запросы.
  • ROLLBACK RETAIN – откат транзакции с сохранением состояния.
  • ROWS – альтернатива FIRST/SKIP.
  • Улучшенная обработка UNION (DISTINCT, использование в подзапросах ALL/IN/ANY).
  • IIF - Условная функция.
  • CAST - Приведение типа.
  • Функция substring может принимать выражения, подзапросы, вложенные функции в качестве 20го и третьего параметров
  • Улучшения при работе с NULL.
  • Поддержка CROSS JOIN.
  • Поддержка ROWS, PLAN и ORDER BY в операторах UPDATE и DELETE.
  • Поддержка индекса колонки в ORDER BY для запроса SELECT *
  • Функции для работы с контекстными переменными: RDB$GET_CONTEXT и RDB$SET_CONTEXT.
  • Предопределенные пространства имен USER_SESSION, USER_TRANSACTION, SYSTEM.
  • Поддержка псевдонимов колонок в условиях ORDER BY и GROUP BY.
  • GROUP BY может быть выражением.
  • NEXT_VALUE_FOR - cиноним GEN_ID.
  • Прочее

Firebird 2.0 – Изменения в протоколах

  • Улучшение в плане безопасности в сетевом протоколе NetBEUI (WNET)
  • Локальный протокол заменен на протокол XNET В отличие от старого протокола XNEt не использует сообщения Windows для доставки запросов на подключение,а так же реализует другую логику синхронизации. Он немного быстрее IPServer-протокола

Новая реализация операторов поиска строк

  • Корректно работают с BLOB полями любых размеров
  • Повышенная производительность
  • В Firebird 2.0 решены проблемы с LIKE и NULL, Escape символами.

Кроме того

  • Улучшенная сборка мусора
  • Именованные курсоры (Named cursors) для PSQL.
  • Версия Firebird 2.0 ODS изменена на ODS 11.
  • Реализована поддержка 64 битной платформы.
  • Размер таблиц может превышать 30 гигабайт.
  • Изменения в Windows протоколе
В следующих статьях возможности Firebird 2.0 будут рассмотрены более подробно.