SlideShare une entreprise Scribd logo
1  sur  29
EMBARCADERO TECHNOLOGIESEMBARCADERO TECHNOLOGIES
Всеволод Леонов
Embarcadero Technologies
FireDAC //
Универсальная Библиотека
Доступа к Данным
EMBARCADERO TECHNOLOGIES
Короткий план
• Почему появился FireDAC (требования, история)
• Обзор архитектуры (введение)
• Основные возможности FireDAC
• Дорожная карта
• Вопросы
EMBARCADERO TECHNOLOGIES
Почему FireDAC ?
Клиент с 10**6 строками кода, использующими BDE,
искал продукт для миграции с BDE. Требования:
• Надежный. Как BDE.
• Быстрый. Быстрее чем BDE.
• Унифицированный. Поддержка многих СУБД.
• Совместимый. С BDE и возможно ADO (dbGO).
• Качественная поддержка.
• Все исходные тексты.
EMBARCADERO TECHNOLOGIES
Вехи AnyDAC / FireDAC
• Февраль, 2003 – DENT v 0.1 с Oracle, MySQL и dbExpress
драйверами
• Декабрь, 2004 – DENT v 0.6 с новыми SQL Server, DB2, SQL
Anywhere, MS Access и ODBC драйверами
• Апрель, 2005 – FreeDAC v 1.0 как freeware
• Ноябрь, 2008 – AnyDAC v 2.0.7 с новыми PostgreSQL и SQLite
драйверами
• Сентябрь, 2011 – AnyDAC v 5.0.3 с новым Advantage
драйвером, поддержка x64 и Mac OS X
• Август, 2012 – AnyDAC v 6.0.1 с LocalSQL
• Январь, 2013 – Embarcadero FireDAC v 7.0.1
• Май, 2013 – Embarcadero FireDAC v 8.0.1, поддержка iOS
EMBARCADERO TECHNOLOGIES
Архитектура Embarcadero FireDAC
EMBARCADERO TECHNOLOGIES
Основные компоненты FireDAC
• TADConnection – управляет соединением с БД.
• TADTransaction – управляет транзакциями в соединении.
• TADMemTable – набор данных в памяти.
• TADQuery – исполняет SQL команды и возвращает наборы
данных.
• TADStoredProc – исполняет хранимые процедуры.
• TADTable – открывает данные таблицы и обеспечивает работу с
ними.
• TADScript – выполняет SQL скрипты.
• TADMetaInfoQuery – предоставляет доступ к мета данным.
• TADEventAlerter – обработка событий БД на стороне клиента.
• TADLocalSQL – исполняет SQL команды над наборами данных.
EMBARCADERO TECHNOLOGIES
GUIx компоненты FireDAC
• Диалог обработки ошибок БД
• Диалог регистрации
• Курсор ожидания и т.д.
• 3 реализации – FireMonkey, VCL, консоль
EMBARCADERO TECHNOLOGIES
Основные драйвера FireDAC
• Advantage Database
• Sybase SQL Anywhere
• IBM DB2
• Interbase
• Firebird
• MS Access
• MS SQL Server и SQL Azure
• MySQL
• Oracle
• PostgreSQL
• SQLite and BerkeleyDB
EMBARCADERO TECHNOLOGIES
Сервисные компоненты FireDAC
21 сервисная компонента:
• TADXxxxBackup – резервное копирование БД
• TADXxxxRestore – восстановление резервной
копии БД
• TADXxxxValidate – проверка и исправление БД
• TADXxxxSecurity - управление безопасностью БД
• TADSQLiteFunction, TADSQLiteCollation – SQLite
специфичные компоненты
• и т.д.
EMBARCADERO TECHNOLOGIES
Дополнительные драйвера FireDAC
• TADPhysODBCDriverLink – источники данных ODBC
• TADPhysTDBXDriverLink - источники данных
dbExpress
• Informix, Sybase Adaptive Server, SQLBase, и т.д.
• И даже файлы данных COBOL
EMBARCADERO TECHNOLOGIES
Миграция с BDE
• Высокая совместимость между BDE и FireDAC:
– по свойствам
– по методам
– по поведению
• Полуавтоматическая, документированная
процедура миграции
• Приложение со 100 модулями данных может быть
переведено на FireDAC за одну недели
EMBARCADERO TECHNOLOGIES
Отчет об окружении FireDAC
• Предоставляет детальный отчет об соединении
• Может быть получен на этапе разработки в редакторе ADConnection
• … исполнения: ADConnection1.GetInfoReport(Memo1.Lines, [riConnDef ..
riKeepConnected]);
EMBARCADERO TECHNOLOGIES
Определение соединения FireDAC
var
oParams: TStrings;
begin
oParams := TStringList.Create;
oParams.Add('Database=ORA_920_APP');
oParams.Add('User_Name=ADDemo');
oParams.Add('Password=a');
ADManager.AddConnectionDef('Oracle_Conn', 'Ora', oParams);
.....................
ADConnection1.ConnectionDefName := 'Oracle_Conn';
ADConnection1.Connected := True;
• Набор параметров соединения. Аналог алиасов BDE и ADO UDL
• Постоянные определения – хранятся в ADConnectionDefs.ini,
управляются ADExplorer
• Приватные определения – хранятся в приложении, управляются
прикладным кодом
• Временные определения – хранятся в ADConnection.Params,
управляются редактором ADConnection
EMBARCADERO TECHNOLOGIES
Система опций FireDAC
Свыше 60 опций:
• FetchOptions – управляют выборкой записей
• FormatOptions – управляют обработкой типов данных
• ResourceOptions – управляют использованием
ресурсов, персистентностью и другими аспектами
• UpdateOptions – управляют редактированием данных
и отправкой измененных данных в БД
• Значения опций наследуются наборами данных от
соединения. Установлено у ADConnection –
используются ADQuery
• Значения по умолчанию подходят для большинства
случаев
EMBARCADERO TECHNOLOGIES
Мапирование типов данных в FireDAC
with ADConnection1.FormatOptions do begin
OwnMapRules := True;
with MapRules.Add do begin
SourceDataType := dtFmtBCD;
PrecMin := 10;
PrecMax := 10;
ScaleMin := 0;
ScaleMax := 0;
TargetDataType := dtInt32;
end;
end;
• Oracle: NUMBER(10,0) -> ftFMTBcd
SQL Server: INT -> ftInteger
• Позволяет создать схему типов данных для:
– унификации типов для разных СУБД
– оптимизации использования памяти
– упрощения миграции
EMBARCADERO TECHNOLOGIES
Пакетная выборка записей в FireDAC
• Выбирается несколько записей одним пакетом за
одно сетевое обращение
• Чем медленнее сеть, тем заметнее эффект
• Управляется FetchOptions.RowsetSize
• 100K записей:
– RowsetSize = 1 -> 7,5 сек
– RowsetSize = 100 -> 0.65 сек
EMBARCADERO TECHNOLOGIES
Пакетное исполнение SQL команд в FireDAC
• SQL команды отосланные СУБД за раз,
компилируются и обрабатываются все вместе
• Чем медленнее сеть или слабее сервер, тем заметнее
эффект
• ADDataSet.NextRecordSet метод для обработки
результирующих наборов данных одного за другим
• Свойство ADDataSet.Data для присвоения набора
данных ADMemTable и одновременного их
использования
• Следующие 2 слайда – оба способа …
EMBARCADERO TECHNOLOGIES
Метод NextRecordSet в FireDAC
ADQuery1.SQL.Add('select * from [Region]');
ADQuery1.SQL.Add('select * from [Territories]');
ADQuery1.Open; // Записи [Region] доступны
ADQuery1.NextRecordSet; // Записи [Territories] доступны
• Последовательная (один за другим) обработка
множественных наборов данных
EMBARCADERO TECHNOLOGIES
Свойство Data в FireDAC
ADQuery1.SQL.Text := 'select * from [Region]; select * from [Territories]';
ADQuery1.Open;
ADQuery1.FetchAll;
// присвоить ADMemTable1 записи Region
ADMemTable1.Data := ADQuery1.Data;
ADQuery1.NextRecordSet;
ADQuery1.FetchAll;
// присвоить ADMemTable2 записи Territories
ADMemTable2.Data := ADQuery1.Data;
• Свойство Data позволяет присвоить содержимое
набора данных ADMemTable
• Каждый набор данных хранится в выделенном
ADMemTable
• Все наборы данных доступны одновременно
EMBARCADERO TECHNOLOGIES
ArrayDML в FireDAC
• Исполняет N INSERT / UPDATE / DELETE
параметризованных команд за один вызов
• Универсально, просто и эффективно
• Каждый параметр хранит массив значений, ATimes
параметр метода Execute = размеру массива
• Чем медленнее сеть или слабее сервер, тем заметнее
эффект
• INSERT для 10K записей:
– Array DML -> 0,03 сек
– Normal ExecSQL -> 5,50 сек
• Следующий слайд – код …
EMBARCADERO TECHNOLOGIES
ArrayDML пример в FireDAC
var
i: Integer;
begin
ADQuery1.SQL.Text := 'insert into {id ADQA_TransTable} values (:p1, :p2)';
ADQuery1.Params.ArraySize := 10000;
for i := 1 to 10000 do begin
ADQuery1.Params[0].AsIntegers[i - 1] := i;
ADQuery1.Params[1].AsStrings[i - 1] := 'Str' + IntToStr(i);
end;
ADQuery1.Execute(10000, 0);
end;
• TADParam имеет свойства AsXxxx[Aindex]
• Params.ArraySize задает размер массива
• TADQuery.Execute(ATimes, AOffset) выполняет массив
EMBARCADERO TECHNOLOGIES
Асинхронное исполнение в FireDAC
• Долго выполняемые операции можно исполнять
асинхронно или с таймаутом
• ResourceOptions.CmdExecMode – 4 режима
исполнения
• TADGUIxAsyncExecuteDialog, CmdExecMode =
amCancelDialog – диалог асинхронного исполнения
• ResourceOptions.CmdExecTimeout – таймаут
исполнения
• ADDataSet.AbortJob – отмена исполнения
EMBARCADERO TECHNOLOGIES
SQL препроцессор в FireDAC
• Эскейп функции – одно выражение для любой СУБД:
select {left({ucase(RegionDescription)}, 3)}, RegionDescription
from {id Region}
• Условные операции – позволяют писать SQL части
различно для конкретных СУБД:
{IF Oracle} SELECT * FROM “Region” {fi}
{IF MSSQL} SELECT * FROM [Territories] {fi}
• Макросы – подстановочные переменные
расширяющие применение параметров:
ADQuery1.SQL.Text := 'select * from &TabName';
ADQuery1.MacroByName('TabName').AsIdentifier := Edit1.Text;
ADQuery1.Open;
• Параметры – корректное распознавание конструкций
PostgreSQL ::, Oracle :=, метки MSSQL labels, и т.д.
EMBARCADERO TECHNOLOGIES
Пример макросов в FireDAC
select *
from {id Employees}
{IF !FirstName !LastName !Title}
where 1=1
{IF !FirstName} and ({ucase(FirstName)} like {ucase('%!FirstName%')}) {FI}
{IF !LastName} and ({ucase(LastName)} like {ucase('%!LastName%')}) {FI}
{IF !Title} and ({ucase(Title)} like {ucase('%!Title%')}) {FI}
{FI}
ADQuery1.MacroByName('FirstName').AsRaw := edtFirstName.Text;
ADQuery1.MacroByName('LastName').AsRaw := edtLastName.Text;
ADQuery1.MacroByName('Title').AsRaw := edtTitle.Text;
• Простые, структурированные и читаемые SQL
команды
• Универсальный, эффективный способ строить
динамические SQL команды
EMBARCADERO TECHNOLOGIES
SQL скрипты в FireDAC
SET TERM ;
SET SQL DIALECT 3;
SET NAMES UTF8;
SET CLIENTLIB ‘D:IBfb25binfbclient.dll';
CREATE DATABASE ‘D:IBTestDD2011.fb'
USER 'sysdba' PASSWORD 'masterkey'
PAGE_SIZE 16384
DEFAULT CHARACTER SET NONE;
SET TERM ^ ;
CREATE PROCEDURE MY_PROC RETURNS (aParam INTEGER) AS
BEGIN
aParam = 10;
END^
• TADScript позволяет включить функционал административных утилит в приложение
• Позволяет расширять пользовательскими командами набор встроенных команд
• Поддерживает SQL*Plus, MS ISQL, mysqldump, IB ISQL диалекты
EMBARCADERO TECHNOLOGIES
Автоматическое редактирование в FireDAC
• Не требуется указание SQL команд для
редактирования данных. Они генерируются
автоматически для целевой СУБД.
• Генератор SQL команд знает различные SQL диалекты
и возможности СУБД
• Есть TADUpdateSQL. Его использование опционально.
• Oracle:
INSERT INTO OracleTab (NAME, DT, IMAGE)
VALUES (:NEW_NAME, :NEW_DT, EMPTY_BLOB())
RETURNING :NEW_ID, :NEW_IMAGE
• SQL Server:
INSERT INTO SQLTab (NAME, DT, IMAGE)
VALUES (:NEW_NAME, :NEW_DT, :NEW_IMAGE);
SELECT SCOPE_IDENTITY() AS ID
EMBARCADERO TECHNOLOGIES
Авто-инкрементальные поля в FireDAC
• Распознаются IDENTITY и подобные колонки
• Распознаются колонки заполняемые в BEFORE
INSERT триггере значением из генератора в
InterBase и Firebird
• Датасет автоматически перечитывает значение из
новой вставленной записи
• Работает как для обычных, так и для
кэшированных обновлений
EMBARCADERO TECHNOLOGIES
А так же …
• Мощные датасеты с сортировкой, фильтрацией, поиском, агрегацией,
персистентностью, кэшированием изменений и т.д.
• Связь мастер-деталь, с поддержкой каскадного обновления и кэшированных
изменений
• TADTable и Live Data Window режим
• ADMemTable аналогичный TClientDataSet, быстрый и гибкий
• Локальный SQL, использующий датасеты как источники данных
• Офлайновый и онлайновый режимы работы соединения
• Автоматическое восстановление соединения
• Пулинг соединений
• Поддержка множественных и вложенных транзакций
• Поддержка Unicode
• Развитая обработка ошибок
• Поддержка событий СУБД
• Поддержка резервного копирования, восстановления, проверки и
исправления БД
• Развитое предоставление метаданных
• Трассировка вызовов и ADMonitor
EMBARCADERO TECHNOLOGIES
Дорожная карта FireDAC
• Улучшенная поддержка InterBase, включая
шифрование, новые сервисные компоненты и т.д.
• Поддержка Android.
• Полная интеграция в IDE.
• Упрощение миграции с BDE и ADO.
• Дальнейшее развитие DataSnap драйвера.
• Новые драйвера, включая поддержку прямого
“общения” через сетевой протокол СУБД.
• Поддержка новых версий СУБД.

Contenu connexe

Tendances

Что нужно знать о трёх топовых фичах MySQL
Что нужно знать  о трёх топовых фичах  MySQLЧто нужно знать  о трёх топовых фичах  MySQL
Что нужно знать о трёх топовых фичах MySQLSveta Smirnova
 
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...Anastasia Rostova
 
облачные решения компании Huawei
облачные решения компании Huaweiоблачные решения компании Huawei
облачные решения компании HuaweiZaur Abutalimov
 
Решения Dell для построения систем виртуализации 3D–приложений
Решения Dell для построения систем виртуализации 3D–приложенийРешения Dell для построения систем виртуализации 3D–приложений
Решения Dell для построения систем виртуализации 3D–приложенийDell_Russia
 
Презентация HPE
Презентация HPE Презентация HPE
Презентация HPE BairRadnaev
 

Tendances (6)

Что нужно знать о трёх топовых фичах MySQL
Что нужно знать  о трёх топовых фичах  MySQLЧто нужно знать  о трёх топовых фичах  MySQL
Что нужно знать о трёх топовых фичах MySQL
 
MySQL 8.0
MySQL 8.0MySQL 8.0
MySQL 8.0
 
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
 
облачные решения компании Huawei
облачные решения компании Huaweiоблачные решения компании Huawei
облачные решения компании Huawei
 
Решения Dell для построения систем виртуализации 3D–приложений
Решения Dell для построения систем виртуализации 3D–приложенийРешения Dell для построения систем виртуализации 3D–приложений
Решения Dell для построения систем виртуализации 3D–приложений
 
Презентация HPE
Презентация HPE Презентация HPE
Презентация HPE
 

Similaire à Fire - Dac новые возможности для работы с данными

Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data applianceCleverDATA
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийSveta Smirnova
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsqlAnatoly Popov
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
Сервисные контейнеры для OC IOS XE
Сервисные контейнеры для OC IOS XEСервисные контейнеры для OC IOS XE
Сервисные контейнеры для OC IOS XECisco Russia
 
Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013Andrey Akulov
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-AccessSerghei Urban
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Alexey Bokov
 
FlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектур
FlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектурFlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектур
FlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектурCisco Russia
 
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуреСХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуреDEPO Computers
 
Преимущества серверного оборудования DEPO Сomputers и ПО Windows Server
Преимущества серверного оборудования DEPO Сomputers и ПО Windows ServerПреимущества серверного оборудования DEPO Сomputers и ПО Windows Server
Преимущества серверного оборудования DEPO Сomputers и ПО Windows ServerDEPO Computers
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
Решения компании Cisco для обеспечения безопасности сетей операторов связи и ...
Решения компании Cisco для обеспечения безопасности сетей операторов связи и ...Решения компании Cisco для обеспечения безопасности сетей операторов связи и ...
Решения компании Cisco для обеспечения безопасности сетей операторов связи и ...Cisco Russia
 
Sql server clr integration
Sql server clr integration Sql server clr integration
Sql server clr integration Alex Tumanoff
 
Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Denis Vasilyev
 
Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Igor Brovchenko
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Olga Lavrentieva
 
Новейшие серверные решения от Fujitsu и как они позволяют экономить
Новейшие серверные решения от Fujitsu и как они позволяют экономитьНовейшие серверные решения от Fujitsu и как они позволяют экономить
Новейшие серверные решения от Fujitsu и как они позволяют экономитьFujitsu Russia
 

Similaire à Fire - Dac новые возможности для работы с данными (20)

Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data appliance
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложений
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsql
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Сервисные контейнеры для OC IOS XE
Сервисные контейнеры для OC IOS XEСервисные контейнеры для OC IOS XE
Сервисные контейнеры для OC IOS XE
 
Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014
 
FlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектур
FlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектурFlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектур
FlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектур
 
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуреСХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
 
Преимущества серверного оборудования DEPO Сomputers и ПО Windows Server
Преимущества серверного оборудования DEPO Сomputers и ПО Windows ServerПреимущества серверного оборудования DEPO Сomputers и ПО Windows Server
Преимущества серверного оборудования DEPO Сomputers и ПО Windows Server
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Решения компании Cisco для обеспечения безопасности сетей операторов связи и ...
Решения компании Cisco для обеспечения безопасности сетей операторов связи и ...Решения компании Cisco для обеспечения безопасности сетей операторов связи и ...
Решения компании Cisco для обеспечения безопасности сетей операторов связи и ...
 
Sql server clr integration
Sql server clr integration Sql server clr integration
Sql server clr integration
 
Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++
 
Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)
 
Новейшие серверные решения от Fujitsu и как они позволяют экономить
Новейшие серверные решения от Fujitsu и как они позволяют экономитьНовейшие серверные решения от Fujitsu и как они позволяют экономить
Новейшие серверные решения от Fujitsu и как они позволяют экономить
 

Fire - Dac новые возможности для работы с данными

  • 1. EMBARCADERO TECHNOLOGIESEMBARCADERO TECHNOLOGIES Всеволод Леонов Embarcadero Technologies FireDAC // Универсальная Библиотека Доступа к Данным
  • 2. EMBARCADERO TECHNOLOGIES Короткий план • Почему появился FireDAC (требования, история) • Обзор архитектуры (введение) • Основные возможности FireDAC • Дорожная карта • Вопросы
  • 3. EMBARCADERO TECHNOLOGIES Почему FireDAC ? Клиент с 10**6 строками кода, использующими BDE, искал продукт для миграции с BDE. Требования: • Надежный. Как BDE. • Быстрый. Быстрее чем BDE. • Унифицированный. Поддержка многих СУБД. • Совместимый. С BDE и возможно ADO (dbGO). • Качественная поддержка. • Все исходные тексты.
  • 4. EMBARCADERO TECHNOLOGIES Вехи AnyDAC / FireDAC • Февраль, 2003 – DENT v 0.1 с Oracle, MySQL и dbExpress драйверами • Декабрь, 2004 – DENT v 0.6 с новыми SQL Server, DB2, SQL Anywhere, MS Access и ODBC драйверами • Апрель, 2005 – FreeDAC v 1.0 как freeware • Ноябрь, 2008 – AnyDAC v 2.0.7 с новыми PostgreSQL и SQLite драйверами • Сентябрь, 2011 – AnyDAC v 5.0.3 с новым Advantage драйвером, поддержка x64 и Mac OS X • Август, 2012 – AnyDAC v 6.0.1 с LocalSQL • Январь, 2013 – Embarcadero FireDAC v 7.0.1 • Май, 2013 – Embarcadero FireDAC v 8.0.1, поддержка iOS
  • 6. EMBARCADERO TECHNOLOGIES Основные компоненты FireDAC • TADConnection – управляет соединением с БД. • TADTransaction – управляет транзакциями в соединении. • TADMemTable – набор данных в памяти. • TADQuery – исполняет SQL команды и возвращает наборы данных. • TADStoredProc – исполняет хранимые процедуры. • TADTable – открывает данные таблицы и обеспечивает работу с ними. • TADScript – выполняет SQL скрипты. • TADMetaInfoQuery – предоставляет доступ к мета данным. • TADEventAlerter – обработка событий БД на стороне клиента. • TADLocalSQL – исполняет SQL команды над наборами данных.
  • 7. EMBARCADERO TECHNOLOGIES GUIx компоненты FireDAC • Диалог обработки ошибок БД • Диалог регистрации • Курсор ожидания и т.д. • 3 реализации – FireMonkey, VCL, консоль
  • 8. EMBARCADERO TECHNOLOGIES Основные драйвера FireDAC • Advantage Database • Sybase SQL Anywhere • IBM DB2 • Interbase • Firebird • MS Access • MS SQL Server и SQL Azure • MySQL • Oracle • PostgreSQL • SQLite and BerkeleyDB
  • 9. EMBARCADERO TECHNOLOGIES Сервисные компоненты FireDAC 21 сервисная компонента: • TADXxxxBackup – резервное копирование БД • TADXxxxRestore – восстановление резервной копии БД • TADXxxxValidate – проверка и исправление БД • TADXxxxSecurity - управление безопасностью БД • TADSQLiteFunction, TADSQLiteCollation – SQLite специфичные компоненты • и т.д.
  • 10. EMBARCADERO TECHNOLOGIES Дополнительные драйвера FireDAC • TADPhysODBCDriverLink – источники данных ODBC • TADPhysTDBXDriverLink - источники данных dbExpress • Informix, Sybase Adaptive Server, SQLBase, и т.д. • И даже файлы данных COBOL
  • 11. EMBARCADERO TECHNOLOGIES Миграция с BDE • Высокая совместимость между BDE и FireDAC: – по свойствам – по методам – по поведению • Полуавтоматическая, документированная процедура миграции • Приложение со 100 модулями данных может быть переведено на FireDAC за одну недели
  • 12. EMBARCADERO TECHNOLOGIES Отчет об окружении FireDAC • Предоставляет детальный отчет об соединении • Может быть получен на этапе разработки в редакторе ADConnection • … исполнения: ADConnection1.GetInfoReport(Memo1.Lines, [riConnDef .. riKeepConnected]);
  • 13. EMBARCADERO TECHNOLOGIES Определение соединения FireDAC var oParams: TStrings; begin oParams := TStringList.Create; oParams.Add('Database=ORA_920_APP'); oParams.Add('User_Name=ADDemo'); oParams.Add('Password=a'); ADManager.AddConnectionDef('Oracle_Conn', 'Ora', oParams); ..................... ADConnection1.ConnectionDefName := 'Oracle_Conn'; ADConnection1.Connected := True; • Набор параметров соединения. Аналог алиасов BDE и ADO UDL • Постоянные определения – хранятся в ADConnectionDefs.ini, управляются ADExplorer • Приватные определения – хранятся в приложении, управляются прикладным кодом • Временные определения – хранятся в ADConnection.Params, управляются редактором ADConnection
  • 14. EMBARCADERO TECHNOLOGIES Система опций FireDAC Свыше 60 опций: • FetchOptions – управляют выборкой записей • FormatOptions – управляют обработкой типов данных • ResourceOptions – управляют использованием ресурсов, персистентностью и другими аспектами • UpdateOptions – управляют редактированием данных и отправкой измененных данных в БД • Значения опций наследуются наборами данных от соединения. Установлено у ADConnection – используются ADQuery • Значения по умолчанию подходят для большинства случаев
  • 15. EMBARCADERO TECHNOLOGIES Мапирование типов данных в FireDAC with ADConnection1.FormatOptions do begin OwnMapRules := True; with MapRules.Add do begin SourceDataType := dtFmtBCD; PrecMin := 10; PrecMax := 10; ScaleMin := 0; ScaleMax := 0; TargetDataType := dtInt32; end; end; • Oracle: NUMBER(10,0) -> ftFMTBcd SQL Server: INT -> ftInteger • Позволяет создать схему типов данных для: – унификации типов для разных СУБД – оптимизации использования памяти – упрощения миграции
  • 16. EMBARCADERO TECHNOLOGIES Пакетная выборка записей в FireDAC • Выбирается несколько записей одним пакетом за одно сетевое обращение • Чем медленнее сеть, тем заметнее эффект • Управляется FetchOptions.RowsetSize • 100K записей: – RowsetSize = 1 -> 7,5 сек – RowsetSize = 100 -> 0.65 сек
  • 17. EMBARCADERO TECHNOLOGIES Пакетное исполнение SQL команд в FireDAC • SQL команды отосланные СУБД за раз, компилируются и обрабатываются все вместе • Чем медленнее сеть или слабее сервер, тем заметнее эффект • ADDataSet.NextRecordSet метод для обработки результирующих наборов данных одного за другим • Свойство ADDataSet.Data для присвоения набора данных ADMemTable и одновременного их использования • Следующие 2 слайда – оба способа …
  • 18. EMBARCADERO TECHNOLOGIES Метод NextRecordSet в FireDAC ADQuery1.SQL.Add('select * from [Region]'); ADQuery1.SQL.Add('select * from [Territories]'); ADQuery1.Open; // Записи [Region] доступны ADQuery1.NextRecordSet; // Записи [Territories] доступны • Последовательная (один за другим) обработка множественных наборов данных
  • 19. EMBARCADERO TECHNOLOGIES Свойство Data в FireDAC ADQuery1.SQL.Text := 'select * from [Region]; select * from [Territories]'; ADQuery1.Open; ADQuery1.FetchAll; // присвоить ADMemTable1 записи Region ADMemTable1.Data := ADQuery1.Data; ADQuery1.NextRecordSet; ADQuery1.FetchAll; // присвоить ADMemTable2 записи Territories ADMemTable2.Data := ADQuery1.Data; • Свойство Data позволяет присвоить содержимое набора данных ADMemTable • Каждый набор данных хранится в выделенном ADMemTable • Все наборы данных доступны одновременно
  • 20. EMBARCADERO TECHNOLOGIES ArrayDML в FireDAC • Исполняет N INSERT / UPDATE / DELETE параметризованных команд за один вызов • Универсально, просто и эффективно • Каждый параметр хранит массив значений, ATimes параметр метода Execute = размеру массива • Чем медленнее сеть или слабее сервер, тем заметнее эффект • INSERT для 10K записей: – Array DML -> 0,03 сек – Normal ExecSQL -> 5,50 сек • Следующий слайд – код …
  • 21. EMBARCADERO TECHNOLOGIES ArrayDML пример в FireDAC var i: Integer; begin ADQuery1.SQL.Text := 'insert into {id ADQA_TransTable} values (:p1, :p2)'; ADQuery1.Params.ArraySize := 10000; for i := 1 to 10000 do begin ADQuery1.Params[0].AsIntegers[i - 1] := i; ADQuery1.Params[1].AsStrings[i - 1] := 'Str' + IntToStr(i); end; ADQuery1.Execute(10000, 0); end; • TADParam имеет свойства AsXxxx[Aindex] • Params.ArraySize задает размер массива • TADQuery.Execute(ATimes, AOffset) выполняет массив
  • 22. EMBARCADERO TECHNOLOGIES Асинхронное исполнение в FireDAC • Долго выполняемые операции можно исполнять асинхронно или с таймаутом • ResourceOptions.CmdExecMode – 4 режима исполнения • TADGUIxAsyncExecuteDialog, CmdExecMode = amCancelDialog – диалог асинхронного исполнения • ResourceOptions.CmdExecTimeout – таймаут исполнения • ADDataSet.AbortJob – отмена исполнения
  • 23. EMBARCADERO TECHNOLOGIES SQL препроцессор в FireDAC • Эскейп функции – одно выражение для любой СУБД: select {left({ucase(RegionDescription)}, 3)}, RegionDescription from {id Region} • Условные операции – позволяют писать SQL части различно для конкретных СУБД: {IF Oracle} SELECT * FROM “Region” {fi} {IF MSSQL} SELECT * FROM [Territories] {fi} • Макросы – подстановочные переменные расширяющие применение параметров: ADQuery1.SQL.Text := 'select * from &TabName'; ADQuery1.MacroByName('TabName').AsIdentifier := Edit1.Text; ADQuery1.Open; • Параметры – корректное распознавание конструкций PostgreSQL ::, Oracle :=, метки MSSQL labels, и т.д.
  • 24. EMBARCADERO TECHNOLOGIES Пример макросов в FireDAC select * from {id Employees} {IF !FirstName !LastName !Title} where 1=1 {IF !FirstName} and ({ucase(FirstName)} like {ucase('%!FirstName%')}) {FI} {IF !LastName} and ({ucase(LastName)} like {ucase('%!LastName%')}) {FI} {IF !Title} and ({ucase(Title)} like {ucase('%!Title%')}) {FI} {FI} ADQuery1.MacroByName('FirstName').AsRaw := edtFirstName.Text; ADQuery1.MacroByName('LastName').AsRaw := edtLastName.Text; ADQuery1.MacroByName('Title').AsRaw := edtTitle.Text; • Простые, структурированные и читаемые SQL команды • Универсальный, эффективный способ строить динамические SQL команды
  • 25. EMBARCADERO TECHNOLOGIES SQL скрипты в FireDAC SET TERM ; SET SQL DIALECT 3; SET NAMES UTF8; SET CLIENTLIB ‘D:IBfb25binfbclient.dll'; CREATE DATABASE ‘D:IBTestDD2011.fb' USER 'sysdba' PASSWORD 'masterkey' PAGE_SIZE 16384 DEFAULT CHARACTER SET NONE; SET TERM ^ ; CREATE PROCEDURE MY_PROC RETURNS (aParam INTEGER) AS BEGIN aParam = 10; END^ • TADScript позволяет включить функционал административных утилит в приложение • Позволяет расширять пользовательскими командами набор встроенных команд • Поддерживает SQL*Plus, MS ISQL, mysqldump, IB ISQL диалекты
  • 26. EMBARCADERO TECHNOLOGIES Автоматическое редактирование в FireDAC • Не требуется указание SQL команд для редактирования данных. Они генерируются автоматически для целевой СУБД. • Генератор SQL команд знает различные SQL диалекты и возможности СУБД • Есть TADUpdateSQL. Его использование опционально. • Oracle: INSERT INTO OracleTab (NAME, DT, IMAGE) VALUES (:NEW_NAME, :NEW_DT, EMPTY_BLOB()) RETURNING :NEW_ID, :NEW_IMAGE • SQL Server: INSERT INTO SQLTab (NAME, DT, IMAGE) VALUES (:NEW_NAME, :NEW_DT, :NEW_IMAGE); SELECT SCOPE_IDENTITY() AS ID
  • 27. EMBARCADERO TECHNOLOGIES Авто-инкрементальные поля в FireDAC • Распознаются IDENTITY и подобные колонки • Распознаются колонки заполняемые в BEFORE INSERT триггере значением из генератора в InterBase и Firebird • Датасет автоматически перечитывает значение из новой вставленной записи • Работает как для обычных, так и для кэшированных обновлений
  • 28. EMBARCADERO TECHNOLOGIES А так же … • Мощные датасеты с сортировкой, фильтрацией, поиском, агрегацией, персистентностью, кэшированием изменений и т.д. • Связь мастер-деталь, с поддержкой каскадного обновления и кэшированных изменений • TADTable и Live Data Window режим • ADMemTable аналогичный TClientDataSet, быстрый и гибкий • Локальный SQL, использующий датасеты как источники данных • Офлайновый и онлайновый режимы работы соединения • Автоматическое восстановление соединения • Пулинг соединений • Поддержка множественных и вложенных транзакций • Поддержка Unicode • Развитая обработка ошибок • Поддержка событий СУБД • Поддержка резервного копирования, восстановления, проверки и исправления БД • Развитое предоставление метаданных • Трассировка вызовов и ADMonitor
  • 29. EMBARCADERO TECHNOLOGIES Дорожная карта FireDAC • Улучшенная поддержка InterBase, включая шифрование, новые сервисные компоненты и т.д. • Поддержка Android. • Полная интеграция в IDE. • Упрощение миграции с BDE и ADO. • Дальнейшее развитие DataSnap драйвера. • Новые драйвера, включая поддержку прямого “общения” через сетевой протокол СУБД. • Поддержка новых версий СУБД.