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

【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮Hibino Hisashi
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...Google Cloud Platform - Japan
 
Demystifying the Distributed Database Landscape (DevOps) (1).pdf
Demystifying the Distributed Database Landscape (DevOps) (1).pdfDemystifying the Distributed Database Landscape (DevOps) (1).pdf
Demystifying the Distributed Database Landscape (DevOps) (1).pdfScyllaDB
 
LineairDBの紹介
LineairDBの紹介LineairDBの紹介
LineairDBの紹介Sho Nakazono
 
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介Orb, Inc.
 
Nick Fisk - low latency Ceph
Nick Fisk - low latency CephNick Fisk - low latency Ceph
Nick Fisk - low latency CephShapeBlue
 
PowerDNS-Admin vs DNS-UI
PowerDNS-Admin vs DNS-UIPowerDNS-Admin vs DNS-UI
PowerDNS-Admin vs DNS-UIbarbarousisk
 
MongoDB Tick Data Presentation
MongoDB Tick Data PresentationMongoDB Tick Data Presentation
MongoDB Tick Data PresentationMongoDB
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...Masahiko Sawada
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
More mastering the art of indexing
More mastering the art of indexingMore mastering the art of indexing
More mastering the art of indexingYoshinori Matsunobu
 
RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門Yuki Morishita
 
Isolation Level について
Isolation Level についてIsolation Level について
Isolation Level についてTakashi Hoshino
 
AWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザAWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザNoritaka Sekiyama
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxNeoClova
 
sslcompressionの設定方法および性能測定結果
sslcompressionの設定方法および性能測定結果sslcompressionの設定方法および性能測定結果
sslcompressionの設定方法および性能測定結果kawarasho
 
How YugaByte DB Implements Distributed PostgreSQL
How YugaByte DB Implements Distributed PostgreSQLHow YugaByte DB Implements Distributed PostgreSQL
How YugaByte DB Implements Distributed PostgreSQLYugabyte
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용I Goo Lee
 

Mais procurados (20)

【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
 
Demystifying the Distributed Database Landscape (DevOps) (1).pdf
Demystifying the Distributed Database Landscape (DevOps) (1).pdfDemystifying the Distributed Database Landscape (DevOps) (1).pdf
Demystifying the Distributed Database Landscape (DevOps) (1).pdf
 
LineairDBの紹介
LineairDBの紹介LineairDBの紹介
LineairDBの紹介
 
Klee and angr
Klee and angrKlee and angr
Klee and angr
 
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介
 
Nick Fisk - low latency Ceph
Nick Fisk - low latency CephNick Fisk - low latency Ceph
Nick Fisk - low latency Ceph
 
PowerDNS-Admin vs DNS-UI
PowerDNS-Admin vs DNS-UIPowerDNS-Admin vs DNS-UI
PowerDNS-Admin vs DNS-UI
 
MongoDB Tick Data Presentation
MongoDB Tick Data PresentationMongoDB Tick Data Presentation
MongoDB Tick Data Presentation
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
More mastering the art of indexing
More mastering the art of indexingMore mastering the art of indexing
More mastering the art of indexing
 
RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門
 
Isolation Level について
Isolation Level についてIsolation Level について
Isolation Level について
 
AWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザAWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザ
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
 
sslcompressionの設定方法および性能測定結果
sslcompressionの設定方法および性能測定結果sslcompressionの設定方法および性能測定結果
sslcompressionの設定方法および性能測定結果
 
How YugaByte DB Implements Distributed PostgreSQL
How YugaByte DB Implements Distributed PostgreSQLHow YugaByte DB Implements Distributed PostgreSQL
How YugaByte DB Implements Distributed PostgreSQL
 
B-link-tree
B-link-treeB-link-tree
B-link-tree
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용
 

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