SlideShare uma empresa Scribd logo
1 de 31
Introdução FireDAC
Acesso multi-banco para Delphi e C++ Builder
Diego Campos Rosa
Créditos
“Para aprender Delphi, não basta saber como utilizar
os componentes. Deve-se entender como funcionam e,
se possível, como foram feitos.”
Gustavo Chaurais
AGENDA
Agenda
• O que é FireDAC
• Visão geral da arquitetura
• Principais características
• Pratica
• Perguntas
FIREDAC
FireDAC
• Versão Embarcadero do AnyDAC
• Conjunto realmente universal para acesso a banco de dados
– Possibilitando usar as características especificas de cada
banco de dados
• Alta performance de acesso
– Desde Live Data até Array DML
• API unificada
– Abstração de SQL
– Controle de transações e de erros unificados
• Com fácil migração do BDE
Arquitetura
PRINCIPAIS
COMPONENTES
Principais Componentes
• TADConnection - Gerencia Ligação com BD
• TADTransaction - Gerencia as transações com BD
• TADMemTable - Conjunto de dados na memória
• TADQuery – Implementação da classe DataSet, que
permite execução de SQL.
• TADTable - abre uma tabela para navegação
• TADScript - Executa scripts SQL em lote
• TADUpdateSQL – Aplica atualizações que não podem
ser feitas diretamente.
• Driver Link - Descreve como configurar o driver do BD
COMPONENTES DE UI
Componentes de UI
• TFDGUIxErrorDialog: Caixa de diálogo exibe as
exceções FireDAC
• TFDGUIxLoginDialog: Caixa de diálogo permite que
os usuários insiram suas credenciais de banco de
dados
• TFDGUIxWaitCursor: Componente permite que o
controlo do cursor de espera.
• 3 implementação - FireMonkey, VCL, console
COMPONENTES DE
SERVIÇO
Componentes de Serviço
• TADXxxxBackup - Backup do BD
• TADXxxxRestore – Restauração do BD
• TADXxxxValidate - Verificação e Correção
• TADXxxxSecurity BD - Gerencie a criptografia do BD
• TADSQLiteFunction, TADSQLiteCollation -
Componentes específicos para p SQLite
OPÇÕES DO FIREDAC
Opções do FireDAC
• FetchOptions – controla o retorno de registros
• FormatOptions - controlam como os tipos das
colunas do DB são mapeados
• ResourceOptions - opções de recursos que
controlam como os recursos do sistema são
utilizados,
• UpdateOptions - opções que controlam como
FireDAC realizara o posts para o DB.
• TxOptions - controlam como as transações são
realizadas.
TRACING
TRACING
• TADMMiniFlatfileClientLink: Arquivo Texto
• TADMMiniRemoteClientLink: ADMonitor
• Attivando Tracing
• Tracing to true
• MonytorBy = FlatFile ou Remote in connection
setting
MAPEAMENTO DE
TIPOS DE DADOS
Mapeamento de tipos de dados
• Mapeamento personalizado por conexão ou
DataSet visuais
• Ou em código
COMANDOS EM LOTE
Comandos em lote
• Lotes de comando, permite executar múltiplos comandos
de SQL num único passo e processar vários conjuntos de
resultados de uma sequência.
ADQuery1.FetchOptions.AutoClose := False;
ADQuery1.SQL.Text := 'select * from orders; select * from
customers';
ADQuery1.Open;
ADQuery1.FetchAll; // assign orders records to ADMemTable1
ADMemTable1.Data := ADQuery1.Data; ADQuery1.NextRecordSet;
ADQuery1.FetchAll; // assign customers records to ADMemTable2
ADMemTable2.Data := ADQuery1.Data;
DESEMPENHO ARRAY
DML
Desempenho Array DML
• Realizado N insert / update / instruções DELETE
parametrizado por chamada
• Flexível, fácil e eficaz
• Cada parâmetro contém uma matriz de valores,
FDQuery1.Execute(FDQuery1.Params.ArraySize);
• O servidores mais lentos ou mais fracos da rede,
criam menos pacotes TCP / IP.
• INSERT registros de 10K:
– DML array -> 0,03 seg
– Normal ExecSQL -> 5,50 seg
EXECUÇÃO
ASSÍNCRONA
Execução Assíncrona
• Transações de longa duração pode ser assíntrica ou
com um tempo limite
• ResourceOptions.CmdExecMode = amAsync ,
• ResourceOptions.CmdExecMode = amCancelDialog
– execução assíncrona do diálogo
TADGUIxAsyncExecuteDialog para cencelamento
• ResourceOptions.CmdExecTimeout
• ADDataSet.AbortJob - Execução de cancelamento
EXECUÇÃO DE SQL
ESPECÍFICOS
Execução de SQL específicos
• Função Escape - uma expressão para cada banco de
dados:
select {left({ucase(RegionDescription)}, 3)},
RegionDescription from {id Region}
• Operações condicionais - permite escrever SQL
específico para cada DB:
{IF Oracle} SELECT * FROM “Region” {fi}
{IF MSSQL} SELECT * FROM [Territories] {fi}
• Macros – permite a troca de parâmetros na aplicação:
ADQuery1.SQL.Text: = SELECT * FROM &TabName;
ADQuery1.MacroByName (‘TabName’) AsIdentifier : =
Edit1.Text; ADQuery1.Open;
MIGRANDO DE BDE
Migrando de BDE
• Alta compatibilidade entre BDE e FireDAC:
– as propriedades, métodos, sobre o comportamento
Perguntas?
• Portal de Treinamentos e Vagas – http://www.edobrasil.net/treinamentos
• Embarcadero Developer Network - http://edn.embarcadero.com
• Diretório de MVP’s - http://www.embarcadero.com.br/mvp-directory
• Documentação dos Produtos - http://docs.embarcadero.com
• CodeRage 7 - http://www.embarcadero.com/coderage
• YouTube - http://youtube.com/user/embarcaderodobrasil
• Twitter - https://twitter.com/EmbarcaderoBR http://twitter.com/EmbarcaderoTech
• Blogs: http://blogs.embarcadero.com
• Facebook:
https://www.facebook.com/pages/Embarcadero-Delphi-Brasil/399151510134179
• atendimento@embarcadero.com.br
• (11) 5643-1333
Obrigado!
Diego Campos Rosa
dcampos@aquasoft.com.br
http://twitter.com/Diegocamposrosa
http://www.aquasoft.com.br

Mais conteúdo relacionado

Mais procurados

글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례if kakao
 
Fight with Metaspace OOM
Fight with Metaspace OOMFight with Metaspace OOM
Fight with Metaspace OOMLeon Chen
 
Rules Programming tutorial
Rules Programming tutorialRules Programming tutorial
Rules Programming tutorialSrinath Perera
 
Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介onozaty
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話JustSystems Corporation
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개Ian Choi
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで増田 亨
 
Delphi 言語に見る顕在化する言語のリスクとは?(2013/08/24)
Delphi 言語に見る顕在化する言語のリスクとは?(2013/08/24)Delphi 言語に見る顕在化する言語のリスクとは?(2013/08/24)
Delphi 言語に見る顕在化する言語のリスクとは?(2013/08/24)Jun Hosokawa
 
Postgres on OpenStack
Postgres on OpenStackPostgres on OpenStack
Postgres on OpenStackEDB
 
OPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみたOPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみたミソジ
 
挫折しないRedmine
挫折しないRedmine挫折しないRedmine
挫折しないRedmineGo Maeda
 
Building Responsive Applications Using XPages
Building Responsive Applications Using XPagesBuilding Responsive Applications Using XPages
Building Responsive Applications Using XPagesTeamstudio
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked ChangesJiyeon Seo
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみたy-uti
 
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話mariydi1
 
Prometheus Training
Prometheus TrainingPrometheus Training
Prometheus TrainingTim Tyler
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 

Mais procurados (20)

글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
 
Fight with Metaspace OOM
Fight with Metaspace OOMFight with Metaspace OOM
Fight with Metaspace OOM
 
Rules Programming tutorial
Rules Programming tutorialRules Programming tutorial
Rules Programming tutorial
 
Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
Delphi 言語に見る顕在化する言語のリスクとは?(2013/08/24)
Delphi 言語に見る顕在化する言語のリスクとは?(2013/08/24)Delphi 言語に見る顕在化する言語のリスクとは?(2013/08/24)
Delphi 言語に見る顕在化する言語のリスクとは?(2013/08/24)
 
Postgres on OpenStack
Postgres on OpenStackPostgres on OpenStack
Postgres on OpenStack
 
Postgre sql vs oracle
Postgre sql vs oraclePostgre sql vs oracle
Postgre sql vs oracle
 
OPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみたOPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみた
 
挫折しないRedmine
挫折しないRedmine挫折しないRedmine
挫折しないRedmine
 
Building Responsive Applications Using XPages
Building Responsive Applications Using XPagesBuilding Responsive Applications Using XPages
Building Responsive Applications Using XPages
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみた
 
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
 
Prometheus Training
Prometheus TrainingPrometheus Training
Prometheus Training
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 

Destaque

FireDAC: do básico ao avançado - Embarcadero Conference 2014
FireDAC: do básico ao avançado - Embarcadero Conference 2014FireDAC: do básico ao avançado - Embarcadero Conference 2014
FireDAC: do básico ao avançado - Embarcadero Conference 2014Alan Glei
 
Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Diego Rosa
 
Migrando 4 milhões de linhas de Delphi 7 para XE7
Migrando 4 milhões de linhas de Delphi 7 para XE7Migrando 4 milhões de linhas de Delphi 7 para XE7
Migrando 4 milhões de linhas de Delphi 7 para XE7José Araújo
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnapAndreano Lanusse
 
Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Kelver Merlotti
 
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Kelver Merlotti
 
Python + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certoPython + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certoFernando Macedo
 
Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Mario Guedes
 

Destaque (9)

FireDAC: do básico ao avançado - Embarcadero Conference 2014
FireDAC: do básico ao avançado - Embarcadero Conference 2014FireDAC: do básico ao avançado - Embarcadero Conference 2014
FireDAC: do básico ao avançado - Embarcadero Conference 2014
 
Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014
 
Migrando 4 milhões de linhas de Delphi 7 para XE7
Migrando 4 milhões de linhas de Delphi 7 para XE7Migrando 4 milhões de linhas de Delphi 7 para XE7
Migrando 4 milhões de linhas de Delphi 7 para XE7
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
 
Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015
 
RESTful com json
RESTful com jsonRESTful com json
RESTful com json
 
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
 
Python + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certoPython + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certo
 
Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática
 

Semelhante a Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder

FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015Guinther Pauli
 
Apresentação IDMS DC / DB COMPONENTS RESOURCES
Apresentação IDMS DC / DB COMPONENTS RESOURCESApresentação IDMS DC / DB COMPONENTS RESOURCES
Apresentação IDMS DC / DB COMPONENTS RESOURCESSergioBernardes11
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - IntroduçãoMarco Pinheiro
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvccLocaweb
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceTiago Peczenyj
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasLeonardo Pedroso Costa
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoelliando dias
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valorKinn Julião
 
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftPath to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftAmazon Web Services LATAM
 
MySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI TecnologiaMySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI TecnologiaMySQL Brasil
 
14-programacao-bd-Object Relational Mapper.pdf
14-programacao-bd-Object Relational Mapper.pdf14-programacao-bd-Object Relational Mapper.pdf
14-programacao-bd-Object Relational Mapper.pdfgabriel-colman
 
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Amazon Web Services LATAM
 

Semelhante a Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder (20)

FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015
 
Apresentação IDMS DC / DB COMPONENTS RESOURCES
Apresentação IDMS DC / DB COMPONENTS RESOURCESApresentação IDMS DC / DB COMPONENTS RESOURCES
Apresentação IDMS DC / DB COMPONENTS RESOURCES
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open source
 
Cache com redis novatec
Cache com redis novatecCache com redis novatec
Cache com redis novatec
 
Cache com redis novatec
Cache com redis novatecCache com redis novatec
Cache com redis novatec
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferenças
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valor
 
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftPath to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
 
SQL e Transações
SQL e TransaçõesSQL e Transações
SQL e Transações
 
MySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI TecnologiaMySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI Tecnologia
 
Automação de Data Center
Automação de Data CenterAutomação de Data Center
Automação de Data Center
 
14-programacao-bd-Object Relational Mapper.pdf
14-programacao-bd-Object Relational Mapper.pdf14-programacao-bd-Object Relational Mapper.pdf
14-programacao-bd-Object Relational Mapper.pdf
 
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
 

Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder

  • 1. Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder Diego Campos Rosa
  • 2. Créditos “Para aprender Delphi, não basta saber como utilizar os componentes. Deve-se entender como funcionam e, se possível, como foram feitos.” Gustavo Chaurais
  • 4. Agenda • O que é FireDAC • Visão geral da arquitetura • Principais características • Pratica • Perguntas
  • 6. FireDAC • Versão Embarcadero do AnyDAC • Conjunto realmente universal para acesso a banco de dados – Possibilitando usar as características especificas de cada banco de dados • Alta performance de acesso – Desde Live Data até Array DML • API unificada – Abstração de SQL – Controle de transações e de erros unificados • Com fácil migração do BDE
  • 9. Principais Componentes • TADConnection - Gerencia Ligação com BD • TADTransaction - Gerencia as transações com BD • TADMemTable - Conjunto de dados na memória • TADQuery – Implementação da classe DataSet, que permite execução de SQL. • TADTable - abre uma tabela para navegação • TADScript - Executa scripts SQL em lote • TADUpdateSQL – Aplica atualizações que não podem ser feitas diretamente. • Driver Link - Descreve como configurar o driver do BD
  • 11. Componentes de UI • TFDGUIxErrorDialog: Caixa de diálogo exibe as exceções FireDAC • TFDGUIxLoginDialog: Caixa de diálogo permite que os usuários insiram suas credenciais de banco de dados • TFDGUIxWaitCursor: Componente permite que o controlo do cursor de espera. • 3 implementação - FireMonkey, VCL, console
  • 13. Componentes de Serviço • TADXxxxBackup - Backup do BD • TADXxxxRestore – Restauração do BD • TADXxxxValidate - Verificação e Correção • TADXxxxSecurity BD - Gerencie a criptografia do BD • TADSQLiteFunction, TADSQLiteCollation - Componentes específicos para p SQLite
  • 15. Opções do FireDAC • FetchOptions – controla o retorno de registros • FormatOptions - controlam como os tipos das colunas do DB são mapeados • ResourceOptions - opções de recursos que controlam como os recursos do sistema são utilizados, • UpdateOptions - opções que controlam como FireDAC realizara o posts para o DB. • TxOptions - controlam como as transações são realizadas.
  • 17. TRACING • TADMMiniFlatfileClientLink: Arquivo Texto • TADMMiniRemoteClientLink: ADMonitor • Attivando Tracing • Tracing to true • MonytorBy = FlatFile ou Remote in connection setting
  • 19. Mapeamento de tipos de dados • Mapeamento personalizado por conexão ou DataSet visuais • Ou em código
  • 21. Comandos em lote • Lotes de comando, permite executar múltiplos comandos de SQL num único passo e processar vários conjuntos de resultados de uma sequência. ADQuery1.FetchOptions.AutoClose := False; ADQuery1.SQL.Text := 'select * from orders; select * from customers'; ADQuery1.Open; ADQuery1.FetchAll; // assign orders records to ADMemTable1 ADMemTable1.Data := ADQuery1.Data; ADQuery1.NextRecordSet; ADQuery1.FetchAll; // assign customers records to ADMemTable2 ADMemTable2.Data := ADQuery1.Data;
  • 23. Desempenho Array DML • Realizado N insert / update / instruções DELETE parametrizado por chamada • Flexível, fácil e eficaz • Cada parâmetro contém uma matriz de valores, FDQuery1.Execute(FDQuery1.Params.ArraySize); • O servidores mais lentos ou mais fracos da rede, criam menos pacotes TCP / IP. • INSERT registros de 10K: – DML array -> 0,03 seg – Normal ExecSQL -> 5,50 seg
  • 25. Execução Assíncrona • Transações de longa duração pode ser assíntrica ou com um tempo limite • ResourceOptions.CmdExecMode = amAsync , • ResourceOptions.CmdExecMode = amCancelDialog – execução assíncrona do diálogo TADGUIxAsyncExecuteDialog para cencelamento • ResourceOptions.CmdExecTimeout • ADDataSet.AbortJob - Execução de cancelamento
  • 27. Execução de SQL específicos • Função Escape - uma expressão para cada banco de dados: select {left({ucase(RegionDescription)}, 3)}, RegionDescription from {id Region} • Operações condicionais - permite escrever SQL específico para cada DB: {IF Oracle} SELECT * FROM “Region” {fi} {IF MSSQL} SELECT * FROM [Territories] {fi} • Macros – permite a troca de parâmetros na aplicação: ADQuery1.SQL.Text: = SELECT * FROM &TabName; ADQuery1.MacroByName (‘TabName’) AsIdentifier : = Edit1.Text; ADQuery1.Open;
  • 29. Migrando de BDE • Alta compatibilidade entre BDE e FireDAC: – as propriedades, métodos, sobre o comportamento
  • 30. Perguntas? • Portal de Treinamentos e Vagas – http://www.edobrasil.net/treinamentos • Embarcadero Developer Network - http://edn.embarcadero.com • Diretório de MVP’s - http://www.embarcadero.com.br/mvp-directory • Documentação dos Produtos - http://docs.embarcadero.com • CodeRage 7 - http://www.embarcadero.com/coderage • YouTube - http://youtube.com/user/embarcaderodobrasil • Twitter - https://twitter.com/EmbarcaderoBR http://twitter.com/EmbarcaderoTech • Blogs: http://blogs.embarcadero.com • Facebook: https://www.facebook.com/pages/Embarcadero-Delphi-Brasil/399151510134179 • atendimento@embarcadero.com.br • (11) 5643-1333

Notas do Editor

  1. ADQuery tem cache de apoio Use ADMenTable manter instantâneo de dados na memória, carregar múltiplas