EMBARCADERO TECHNOLOGIESEMBARCADERO TECHNOLOGIESВсеволод ЛеоновEmbarcadero TechnologiesFireDAC //Универсальная БиблиотекаД...
EMBARCADERO TECHNOLOGIESКороткий план• Почему появился FireDAC (требования, история)• Обзор архитектуры (введение)• Основн...
EMBARCADERO TECHNOLOGIESПочему FireDAC ?Клиент с 10**6 строками кода, использующими BDE,искал продукт для миграции с BDE. ...
EMBARCADERO TECHNOLOGIESВехи AnyDAC / FireDAC• Февраль, 2003 – DENT v 0.1 с Oracle, MySQL и dbExpressдрайверами• Декабрь, ...
EMBARCADERO TECHNOLOGIESАрхитектура Embarcadero FireDAC
EMBARCADERO TECHNOLOGIESОсновные компоненты FireDAC• TADConnection – управляет соединением с БД.• TADTransaction – управля...
EMBARCADERO TECHNOLOGIESGUIx компоненты FireDAC• Диалог обработки ошибок БД• Диалог регистрации• Курсор ожидания и т.д.• 3...
EMBARCADERO TECHNOLOGIESОсновные драйвера FireDAC• Advantage Database• Sybase SQL Anywhere• IBM DB2• Interbase• Firebird• ...
EMBARCADERO TECHNOLOGIESСервисные компоненты FireDAC21 сервисная компонента:• TADXxxxBackup – резервное копирование БД• TA...
EMBARCADERO TECHNOLOGIESДополнительные драйвера FireDAC• TADPhysODBCDriverLink – источники данных ODBC• TADPhysTDBXDriverL...
EMBARCADERO TECHNOLOGIESМиграция с BDE• Высокая совместимость между BDE и FireDAC:– по свойствам– по методам– по поведению...
EMBARCADERO TECHNOLOGIESОтчет об окружении FireDAC• Предоставляет детальный отчет об соединении• Может быть получен на эта...
EMBARCADERO TECHNOLOGIESОпределение соединения FireDACvaroParams: TStrings;beginoParams := TStringList.Create;oParams.Add(...
EMBARCADERO TECHNOLOGIESСистема опций FireDACСвыше 60 опций:• FetchOptions – управляют выборкой записей• FormatOptions – у...
EMBARCADERO TECHNOLOGIESМапирование типов данных в FireDACwith ADConnection1.FormatOptions do beginOwnMapRules := True;wit...
EMBARCADERO TECHNOLOGIESПакетная выборка записей в FireDAC• Выбирается несколько записей одним пакетом заодно сетевое обра...
EMBARCADERO TECHNOLOGIESПакетное исполнение SQL команд в FireDAC• SQL команды отосланные СУБД за раз,компилируются и обраб...
EMBARCADERO TECHNOLOGIESМетод NextRecordSet в FireDACADQuery1.SQL.Add(select * from [Region]);ADQuery1.SQL.Add(select * fr...
EMBARCADERO TECHNOLOGIESСвойство Data в FireDACADQuery1.SQL.Text := select * from [Region]; select * from [Territories];AD...
EMBARCADERO TECHNOLOGIESArrayDML в FireDAC• Исполняет N INSERT / UPDATE / DELETEпараметризованных команд за один вызов• Ун...
EMBARCADERO TECHNOLOGIESArrayDML пример в FireDACvari: Integer;beginADQuery1.SQL.Text := insert into {id ADQA_TransTable} ...
EMBARCADERO TECHNOLOGIESАсинхронное исполнение в FireDAC• Долго выполняемые операции можно исполнятьасинхронно или с тайма...
EMBARCADERO TECHNOLOGIESSQL препроцессор в FireDAC• Эскейп функции – одно выражение для любой СУБД:select {left({ucase(Reg...
EMBARCADERO TECHNOLOGIESПример макросов в FireDACselect *from {id Employees}{IF !FirstName !LastName !Title}where 1=1{IF !...
EMBARCADERO TECHNOLOGIESSQL скрипты в FireDACSET TERM ;SET SQL DIALECT 3;SET NAMES UTF8;SET CLIENTLIB ‘D:IBfb25binfbclient...
EMBARCADERO TECHNOLOGIESАвтоматическое редактирование в FireDAC• Не требуется указание SQL команд дляредактирования данных...
EMBARCADERO TECHNOLOGIESАвто-инкрементальные поля в FireDAC• Распознаются IDENTITY и подобные колонки• Распознаются колонк...
EMBARCADERO TECHNOLOGIESА так же …• Мощные датасеты с сортировкой, фильтрацией, поиском, агрегацией,персистентностью, кэши...
EMBARCADERO TECHNOLOGIESДорожная карта FireDAC• Улучшенная поддержка InterBase, включаяшифрование, новые сервисные компоне...
Upcoming SlideShare
Loading in …5
×

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

4,461 views

Published on

Презентация Дмитрия Арефьева, CEO DA-Soft и автора Any-DAC

Published in: Technology
  • Be the first to comment

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

  1. 1. EMBARCADERO TECHNOLOGIESEMBARCADERO TECHNOLOGIESВсеволод ЛеоновEmbarcadero TechnologiesFireDAC //Универсальная БиблиотекаДоступа к Данным
  2. 2. EMBARCADERO TECHNOLOGIESКороткий план• Почему появился FireDAC (требования, история)• Обзор архитектуры (введение)• Основные возможности FireDAC• Дорожная карта• Вопросы
  3. 3. EMBARCADERO TECHNOLOGIESПочему FireDAC ?Клиент с 10**6 строками кода, использующими BDE,искал продукт для миграции с BDE. Требования:• Надежный. Как BDE.• Быстрый. Быстрее чем BDE.• Унифицированный. Поддержка многих СУБД.• Совместимый. С BDE и возможно ADO (dbGO).• Качественная поддержка.• Все исходные тексты.
  4. 4. EMBARCADERO TECHNOLOGIESВехи AnyDAC / FireDAC• Февраль, 2003 – DENT v 0.1 с Oracle, MySQL и dbExpressдрайверами• Декабрь, 2004 – DENT v 0.6 с новыми SQL Server, DB2, SQLAnywhere, 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
  5. 5. EMBARCADERO TECHNOLOGIESАрхитектура Embarcadero FireDAC
  6. 6. EMBARCADERO TECHNOLOGIESОсновные компоненты FireDAC• TADConnection – управляет соединением с БД.• TADTransaction – управляет транзакциями в соединении.• TADMemTable – набор данных в памяти.• TADQuery – исполняет SQL команды и возвращает наборыданных.• TADStoredProc – исполняет хранимые процедуры.• TADTable – открывает данные таблицы и обеспечивает работу сними.• TADScript – выполняет SQL скрипты.• TADMetaInfoQuery – предоставляет доступ к мета данным.• TADEventAlerter – обработка событий БД на стороне клиента.• TADLocalSQL – исполняет SQL команды над наборами данных.
  7. 7. EMBARCADERO TECHNOLOGIESGUIx компоненты FireDAC• Диалог обработки ошибок БД• Диалог регистрации• Курсор ожидания и т.д.• 3 реализации – FireMonkey, VCL, консоль
  8. 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. 9. EMBARCADERO TECHNOLOGIESСервисные компоненты FireDAC21 сервисная компонента:• TADXxxxBackup – резервное копирование БД• TADXxxxRestore – восстановление резервнойкопии БД• TADXxxxValidate – проверка и исправление БД• TADXxxxSecurity - управление безопасностью БД• TADSQLiteFunction, TADSQLiteCollation – SQLiteспецифичные компоненты• и т.д.
  10. 10. EMBARCADERO TECHNOLOGIESДополнительные драйвера FireDAC• TADPhysODBCDriverLink – источники данных ODBC• TADPhysTDBXDriverLink - источники данныхdbExpress• Informix, Sybase Adaptive Server, SQLBase, и т.д.• И даже файлы данных COBOL
  11. 11. EMBARCADERO TECHNOLOGIESМиграция с BDE• Высокая совместимость между BDE и FireDAC:– по свойствам– по методам– по поведению• Полуавтоматическая, документированнаяпроцедура миграции• Приложение со 100 модулями данных может бытьпереведено на FireDAC за одну недели
  12. 12. EMBARCADERO TECHNOLOGIESОтчет об окружении FireDAC• Предоставляет детальный отчет об соединении• Может быть получен на этапе разработки в редакторе ADConnection• … исполнения: ADConnection1.GetInfoReport(Memo1.Lines, [riConnDef ..riKeepConnected]);
  13. 13. EMBARCADERO TECHNOLOGIESОпределение соединения FireDACvaroParams: TStrings;beginoParams := 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. 14. EMBARCADERO TECHNOLOGIESСистема опций FireDACСвыше 60 опций:• FetchOptions – управляют выборкой записей• FormatOptions – управляют обработкой типов данных• ResourceOptions – управляют использованиемресурсов, персистентностью и другими аспектами• UpdateOptions – управляют редактированием данныхи отправкой измененных данных в БД• Значения опций наследуются наборами данных отсоединения. Установлено у ADConnection –используются ADQuery• Значения по умолчанию подходят для большинстваслучаев
  15. 15. EMBARCADERO TECHNOLOGIESМапирование типов данных в FireDACwith ADConnection1.FormatOptions do beginOwnMapRules := True;with MapRules.Add do beginSourceDataType := dtFmtBCD;PrecMin := 10;PrecMax := 10;ScaleMin := 0;ScaleMax := 0;TargetDataType := dtInt32;end;end;• Oracle: NUMBER(10,0) -> ftFMTBcdSQL Server: INT -> ftInteger• Позволяет создать схему типов данных для:– унификации типов для разных СУБД– оптимизации использования памяти– упрощения миграции
  16. 16. EMBARCADERO TECHNOLOGIESПакетная выборка записей в FireDAC• Выбирается несколько записей одним пакетом заодно сетевое обращение• Чем медленнее сеть, тем заметнее эффект• Управляется FetchOptions.RowsetSize• 100K записей:– RowsetSize = 1 -> 7,5 сек– RowsetSize = 100 -> 0.65 сек
  17. 17. EMBARCADERO TECHNOLOGIESПакетное исполнение SQL команд в FireDAC• SQL команды отосланные СУБД за раз,компилируются и обрабатываются все вместе• Чем медленнее сеть или слабее сервер, тем заметнееэффект• ADDataSet.NextRecordSet метод для обработкирезультирующих наборов данных одного за другим• Свойство ADDataSet.Data для присвоения набораданных ADMemTable и одновременного ихиспользования• Следующие 2 слайда – оба способа …
  18. 18. EMBARCADERO TECHNOLOGIESМетод NextRecordSet в FireDACADQuery1.SQL.Add(select * from [Region]);ADQuery1.SQL.Add(select * from [Territories]);ADQuery1.Open; // Записи [Region] доступныADQuery1.NextRecordSet; // Записи [Territories] доступны• Последовательная (один за другим) обработкамножественных наборов данных
  19. 19. EMBARCADERO TECHNOLOGIESСвойство Data в FireDACADQuery1.SQL.Text := select * from [Region]; select * from [Territories];ADQuery1.Open;ADQuery1.FetchAll;// присвоить ADMemTable1 записи RegionADMemTable1.Data := ADQuery1.Data;ADQuery1.NextRecordSet;ADQuery1.FetchAll;// присвоить ADMemTable2 записи TerritoriesADMemTable2.Data := ADQuery1.Data;• Свойство Data позволяет присвоить содержимоенабора данных ADMemTable• Каждый набор данных хранится в выделенномADMemTable• Все наборы данных доступны одновременно
  20. 20. EMBARCADERO TECHNOLOGIESArrayDML в FireDAC• Исполняет N INSERT / UPDATE / DELETEпараметризованных команд за один вызов• Универсально, просто и эффективно• Каждый параметр хранит массив значений, ATimesпараметр метода Execute = размеру массива• Чем медленнее сеть или слабее сервер, тем заметнееэффект• INSERT для 10K записей:– Array DML -> 0,03 сек– Normal ExecSQL -> 5,50 сек• Следующий слайд – код …
  21. 21. EMBARCADERO TECHNOLOGIESArrayDML пример в FireDACvari: Integer;beginADQuery1.SQL.Text := insert into {id ADQA_TransTable} values (:p1, :p2);ADQuery1.Params.ArraySize := 10000;for i := 1 to 10000 do beginADQuery1.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. 22. EMBARCADERO TECHNOLOGIESАсинхронное исполнение в FireDAC• Долго выполняемые операции можно исполнятьасинхронно или с таймаутом• ResourceOptions.CmdExecMode – 4 режимаисполнения• TADGUIxAsyncExecuteDialog, CmdExecMode =amCancelDialog – диалог асинхронного исполнения• ResourceOptions.CmdExecTimeout – таймаутисполнения• ADDataSet.AbortJob – отмена исполнения
  23. 23. EMBARCADERO TECHNOLOGIESSQL препроцессор в FireDAC• Эскейп функции – одно выражение для любой СУБД:select {left({ucase(RegionDescription)}, 3)}, RegionDescriptionfrom {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. 24. EMBARCADERO TECHNOLOGIESПример макросов в FireDACselect *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. 25. EMBARCADERO TECHNOLOGIESSQL скрипты в FireDACSET TERM ;SET SQL DIALECT 3;SET NAMES UTF8;SET CLIENTLIB ‘D:IBfb25binfbclient.dll;CREATE DATABASE ‘D:IBTestDD2011.fbUSER sysdba PASSWORD masterkeyPAGE_SIZE 16384DEFAULT CHARACTER SET NONE;SET TERM ^ ;CREATE PROCEDURE MY_PROC RETURNS (aParam INTEGER) ASBEGINaParam = 10;END^• TADScript позволяет включить функционал административных утилит в приложение• Позволяет расширять пользовательскими командами набор встроенных команд• Поддерживает SQL*Plus, MS ISQL, mysqldump, IB ISQL диалекты
  26. 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. 27. EMBARCADERO TECHNOLOGIESАвто-инкрементальные поля в FireDAC• Распознаются IDENTITY и подобные колонки• Распознаются колонки заполняемые в BEFOREINSERT триггере значением из генератора вInterBase и Firebird• Датасет автоматически перечитывает значение изновой вставленной записи• Работает как для обычных, так и длякэшированных обновлений
  28. 28. EMBARCADERO TECHNOLOGIESА так же …• Мощные датасеты с сортировкой, фильтрацией, поиском, агрегацией,персистентностью, кэшированием изменений и т.д.• Связь мастер-деталь, с поддержкой каскадного обновления и кэшированныхизменений• TADTable и Live Data Window режим• ADMemTable аналогичный TClientDataSet, быстрый и гибкий• Локальный SQL, использующий датасеты как источники данных• Офлайновый и онлайновый режимы работы соединения• Автоматическое восстановление соединения• Пулинг соединений• Поддержка множественных и вложенных транзакций• Поддержка Unicode• Развитая обработка ошибок• Поддержка событий СУБД• Поддержка резервного копирования, восстановления, проверки иисправления БД• Развитое предоставление метаданных• Трассировка вызовов и ADMonitor
  29. 29. EMBARCADERO TECHNOLOGIESДорожная карта FireDAC• Улучшенная поддержка InterBase, включаяшифрование, новые сервисные компоненты и т.д.• Поддержка Android.• Полная интеграция в IDE.• Упрощение миграции с BDE и ADO.• Дальнейшее развитие DataSnap драйвера.• Новые драйвера, включая поддержку прямого“общения” через сетевой протокол СУБД.• Поддержка новых версий СУБД.

×