SlideShare une entreprise Scribd logo
1  sur  32
FireDAC
Guinther Pauli - MVP
Agenda
• Recursos intermediários, avançados e segredos do
FireDAC
• Recursos semelhantes do FireDAC com DBX + CDS
+ DSP (como fazer no FireDAC o que já sei fazer no
CDS)
• Recursos do FireDAC que não possuem
equivalência no DBX + CDS + DSP
• Recursos onde o FireDAC é melhor que o
DBX + CDS + DSP
Arquitetura
FireDAC
• Um conjunto de componentes universais de acesso a dados
• Desenvolvimento para qualquer banco de dados
• Delphi e C++Builder
• Alta performance, fácil de usar, conexão com bancos locais
e corporativos
• Acesso a dados universal, porém com características
específicas de cada BD
• Baseado em classes + componentes TDataSet
Recovering Connection
• Ambiente instável, rede ou DBMS pode cair
• Aplicativo precisa recuperar a conexão e continuar a
comunicação
• FireDAC pode recuperar automaticamente a conexão
• Detecta quando uma conexão foi perdida, permite dar uma
resposta
• FDConnection.ResourceOptions.AutoReconnect := true;
• Erro só ocorre ao executar um Open, ExecSQL, Ping por ex.,
então a exceção EFDDBEngineException é levantada com
tipo ekServerGone
Offlining Connection
• Lembra por que muitos usavam BDE sem Data Controls?
• Semelhante a um cliente multi-camadas (CDS,
KeepConnection etc)
• Cliente está desconectado, ativa só quando precisa trocar
dados
• Útil em ambiente instável, preservar recursos do BD
• Conexão está fechada, mas os datasets ficam abertos
• FDConnnection.Offline();
• Recuperar conexão com AutoReconnect ou OnLine();
SQL Dialect Abstraction
• Se o aplicativo precisa suportar múltiplos SGBDs, deve estar
ciente de que seus dialetos SQL podem ser diferentes
• FireDAC permite que você escreva os comandos SQL
independente de dialeto
• Semelhante a diretivas de compilação IFs do Pascal
• Mais fácil criar aplicações multi-banco, sem perder recursos
específicos de cada um (usando SQL “genérico”) ou uma API,
componente de terceiro etc.
Substitution Variables e Macros
• Qualquer coisa pode ser variável (parâmetro) no seu SQL,
estamos acostumados a usar parâmetros em where por
exemplo
• Pense em qualquer coisa como um parâmetro, de strings,
comandos a objetos, como por exemplo, o próprio nome da
tabela
• Ex.: Isso não pode ser feito com DBX “select * from :TABELA”
• No FireDAC, você pode usar variáveis de substituição
(MACROS), como um processador de templates, e depois
substituir o texto da variável, usando os caracteres “!” (string)
e “&” (SQL)
Array DML
• Permite enviar um único comando para o DBMS com um
conjunto de parâmetros (array)
• Cada parâmetro de comando tem uma matriz de valores
• Todos os parâmetros têm matrizes do mesmo comprimento
• FireDAC solicita o DBMS para executar um comando uma
vez para cada linha do array
• Reduz a quantidade de comunicação entre DBMS e cliente
• Acelera o tempo de execução
Executing SQL Scripts
• Script = conjunto de comandos SQL executados separadamente
• Manutenção, criação, versionamento, carga inicial de BD
• TFDScript vs. TFDQuery.ExecSQL
• Pode ser dividida em várias transações (lote é uma única)
• Totalmente controlado pelo cliente (lote controlado pelo BD)
• A execução do script pode ser colocada em log
• o script fornece feedback progresso execução
• FireDAC tem componente pronto para feedback
(TFDGUIxScriptDialog)
Local SQL
• Permite a execução de comandos SQL, onde os descendentes
de TDataSet são utilizadas em vez das tabelas de BD
• Usa driver do SQLite por baixo
• TFDLocalSQL contém a coleção de todos os TDataSets
• Dados de diferentes BDs usando diferentes engines (BDE, DBX,
ADO)
• Consultas heterogêneas, in-memory database, modo off-line
avançado
• Pode ser usado para migração de BD
• Pode ser usado de FireDAC para FireDAC, esqueça o “Filter”!
Conexão FireDAC
Conexão DBX
Conexão Local
Query local, trazendo dados de
“tabelas” (TDataSets) locais, fazendo
joins, filtros, order, where etc, tudo
localmente em cache, usando
*diferentes engines de acesso como se
fossem fontes de dados*
ETL – Extract, Transform, Load
• Extract – extrair dados de fontes homogêneas ou heterogêneas
• Transform – transformar os dados para armazenar em um
formato ou estrutura específica para propósitos de análise
• Load – armazenar no BD final (BD relacional, data warehouse)
• FONTE / DESTINO: TXT, DataSet (qualquer engine / BD),
FireDAC (SQL)
• Exemplos de uso: extrair dados de um BD e exportar para TXT,
ou ler de um arquivo TXT e armazenar em uma tabela do BD
(carga), transferir dados de um dataset para outro (engines
diferentes)
Extract
Load
Transform
TDataSet,
qualquer
engine e
BD
Criação direta
da tabela
(metadados +
dados) no BD
via FireDAC
Arquivo texto
Fonte
Metadata
• API comum para retornar metadados de qualquer BD, usando
mesmo código / componentes;
• TFDConnection - métodos para retornar nomes de objetos do BD:
GetCatalogNames, GetSchemaNames, GetTableNames,
GetFieldNames, GetKeyFieldNames, GetGeneratorNames,
GetPackageNames, GetStoredProcNames etc.
• TFDMetaInfoQuery (TDataSet) - propriedade MetaInfoKind
(mkCatalogs, mkSchemas, mkTables, mkTableFields, mkIndexes,
mkIndexFields, mkPrimaryKey, mkPrimaryKeyFields,
mkForeignKeys, mkForeignKeyFields, mkPackages, mkProcs,
mkProcArgs, mkGenerators, mkResultSetFields, mkTableTypeFields)
Cache e Update
• Cache Updates em memória, estilo antigo Cache Updates do
BDE e Data do ClientDataSet
• ApplyUpdates permite enviar as atualizações para o BD, em um
único lote (Delta, estilo ChangeLog do CDS)
• Cache é feita em memória, como CDS
• Componente específico separado (opcional) para geração de
comandos de atualização (update, delete, insert, lock), estilo
BDE / IBX
• Suporte a SavePoint (snapshot), UndoLastChange
• Suporte a Data e Delta (IFDDataSetReference)
Save to File e Load from File
• Persistência em disco, estilo CDS
• Suporte aos formatos XML, JSON e binário
• Necessário registrar os componentes TFDStanStorageBinLink,
TFDStanStorageXMLLink e TFDStanStorageJSONLink
• Também pode-se ler os dados de XML / JSON semelhante ao
CDS
Fetch
• Total controle sobre como os dados são obtidos do BD
• Propriedade FetchOptions.Mode e RowsetSize
• Mode = fmManual, fmOnDemand, fmAll, fmExactRecsMax
• RowsetSize = tamanho do pacote
• Semelhante ao uso de Packet Records do CDS
• Pode-se trazer os dados por demanda
• Cuidado com o cursor
http://fb.com/DelphiBrasil
http://fb.com/EmbarcaderoBR
http://www.embarcadero.com/mvp-directory
http://www.embarcaderobr.com.br/treinamentos/
guintherpauli.blogspot.com
http://www.facebook.com/guintherpauli
http://www.twitter.com/guintherpauli
http://br.linkedin.com/in/guintherpauli
http://www.gpauli.com
guintherpauli@gmail.com
guinther.pauli
Download
Code Central
http://bit.ly/fontesfiredac

Contenu connexe

Tendances

Hug Hbase Presentation.
Hug Hbase Presentation.Hug Hbase Presentation.
Hug Hbase Presentation.
Jack Levin
 
Oracle forms 6i
Oracle forms 6iOracle forms 6i
Oracle forms 6i
Ba Choi
 

Tendances (20)

Hug Hbase Presentation.
Hug Hbase Presentation.Hug Hbase Presentation.
Hug Hbase Presentation.
 
Hadoop and Spark
Hadoop and SparkHadoop and Spark
Hadoop and Spark
 
Apache Sqoop: A Data Transfer Tool for Hadoop
Apache Sqoop: A Data Transfer Tool for HadoopApache Sqoop: A Data Transfer Tool for Hadoop
Apache Sqoop: A Data Transfer Tool for Hadoop
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intents
 
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우
 
Cics program, interval and task control commands-session 5
Cics program, interval and task control commands-session 5Cics program, interval and task control commands-session 5
Cics program, interval and task control commands-session 5
 
Planning your Next-Gen Change Data Capture (CDC) Architecture in 2019 - Strea...
Planning your Next-Gen Change Data Capture (CDC) Architecture in 2019 - Strea...Planning your Next-Gen Change Data Capture (CDC) Architecture in 2019 - Strea...
Planning your Next-Gen Change Data Capture (CDC) Architecture in 2019 - Strea...
 
P3 listes et elements graphiques avancés
P3 listes et elements graphiques avancésP3 listes et elements graphiques avancés
P3 listes et elements graphiques avancés
 
As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8
 
Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hado...
Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hado...Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hado...
Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hado...
 
SQL : introduction
SQL : introductionSQL : introduction
SQL : introduction
 
MPP vs Hadoop
MPP vs HadoopMPP vs Hadoop
MPP vs Hadoop
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
MongoDB
MongoDBMongoDB
MongoDB
 
Oracle forms 6i
Oracle forms 6iOracle forms 6i
Oracle forms 6i
 
Java EE _ JSTL (1).pdf
Java EE _ JSTL (1).pdfJava EE _ JSTL (1).pdf
Java EE _ JSTL (1).pdf
 
MySQL Basics
MySQL BasicsMySQL Basics
MySQL Basics
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
 
HBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon 2015: HBase Performance Tuning @ SalesforceHBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon 2015: HBase Performance Tuning @ Salesforce
 

En vedette

Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)
Ryan Padilha
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
Ryan Padilha
 

En vedette (16)

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
 
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
 
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
 
Rad Studio 10 com Android e Unidac
Rad Studio 10 com Android e UnidacRad Studio 10 com Android e Unidac
Rad Studio 10 com Android e Unidac
 
Bate papo sobre desenvolvimento de spftware
Bate papo sobre desenvolvimento de spftwareBate papo sobre desenvolvimento de spftware
Bate papo sobre desenvolvimento de spftware
 
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
 
Hora GTI - Top 10 Tendências Mobile para 2015 e 2016
Hora GTI - Top 10 Tendências Mobile para 2015 e 2016Hora GTI - Top 10 Tendências Mobile para 2015 e 2016
Hora GTI - Top 10 Tendências Mobile para 2015 e 2016
 
Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)
 
Dados e Serviços Remotos via DataSnap
Dados e Serviços Remotos via DataSnapDados e Serviços Remotos via DataSnap
Dados e Serviços Remotos via DataSnap
 
Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
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...
 
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
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphi
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
 
CodeRage XI international Conference: Arduino + Delphi Mobile Apps
CodeRage XI international Conference: Arduino + Delphi Mobile Apps CodeRage XI international Conference: Arduino + Delphi Mobile Apps
CodeRage XI international Conference: Arduino + Delphi Mobile Apps
 

Similaire à FireDAC - Embarcadero Conference 2015

PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
Marco Pinheiro
 
ParallaDB - Framework de Persistência Android e Desktop
ParallaDB - Framework de Persistência Android e DesktopParallaDB - Framework de Persistência Android e Desktop
ParallaDB - Framework de Persistência Android e Desktop
Michel Montenegro
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
QuitriaSilva550
 

Similaire à FireDAC - Embarcadero Conference 2015 (20)

Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireport
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Introdução ao BD Postgre
Introdução ao BD PostgreIntrodução ao BD Postgre
Introdução ao BD Postgre
 
PostgreSQL Conceitos e aplicações
PostgreSQL  Conceitos e aplicaçõesPostgreSQL  Conceitos e aplicações
PostgreSQL Conceitos e aplicações
 
2006 - ADONET.ppt
2006 - ADONET.ppt2006 - ADONET.ppt
2006 - ADONET.ppt
 
Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC
 
Aula05 android persistencia
Aula05 android persistenciaAula05 android persistencia
Aula05 android persistencia
 
ParallaDB - Framework de Persistência Android e Desktop
ParallaDB - Framework de Persistência Android e DesktopParallaDB - Framework de Persistência Android e Desktop
ParallaDB - Framework de Persistência Android e Desktop
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvens
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdf
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
FireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBFireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDB
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
Ado.net
Ado.netAdo.net
Ado.net
 

FireDAC - Embarcadero Conference 2015

  • 2. Agenda • Recursos intermediários, avançados e segredos do FireDAC • Recursos semelhantes do FireDAC com DBX + CDS + DSP (como fazer no FireDAC o que já sei fazer no CDS) • Recursos do FireDAC que não possuem equivalência no DBX + CDS + DSP • Recursos onde o FireDAC é melhor que o DBX + CDS + DSP
  • 4. FireDAC • Um conjunto de componentes universais de acesso a dados • Desenvolvimento para qualquer banco de dados • Delphi e C++Builder • Alta performance, fácil de usar, conexão com bancos locais e corporativos • Acesso a dados universal, porém com características específicas de cada BD • Baseado em classes + componentes TDataSet
  • 5. Recovering Connection • Ambiente instável, rede ou DBMS pode cair • Aplicativo precisa recuperar a conexão e continuar a comunicação • FireDAC pode recuperar automaticamente a conexão • Detecta quando uma conexão foi perdida, permite dar uma resposta • FDConnection.ResourceOptions.AutoReconnect := true; • Erro só ocorre ao executar um Open, ExecSQL, Ping por ex., então a exceção EFDDBEngineException é levantada com tipo ekServerGone
  • 6.
  • 7. Offlining Connection • Lembra por que muitos usavam BDE sem Data Controls? • Semelhante a um cliente multi-camadas (CDS, KeepConnection etc) • Cliente está desconectado, ativa só quando precisa trocar dados • Útil em ambiente instável, preservar recursos do BD • Conexão está fechada, mas os datasets ficam abertos • FDConnnection.Offline(); • Recuperar conexão com AutoReconnect ou OnLine();
  • 8.
  • 9. SQL Dialect Abstraction • Se o aplicativo precisa suportar múltiplos SGBDs, deve estar ciente de que seus dialetos SQL podem ser diferentes • FireDAC permite que você escreva os comandos SQL independente de dialeto • Semelhante a diretivas de compilação IFs do Pascal • Mais fácil criar aplicações multi-banco, sem perder recursos específicos de cada um (usando SQL “genérico”) ou uma API, componente de terceiro etc.
  • 10.
  • 11. Substitution Variables e Macros • Qualquer coisa pode ser variável (parâmetro) no seu SQL, estamos acostumados a usar parâmetros em where por exemplo • Pense em qualquer coisa como um parâmetro, de strings, comandos a objetos, como por exemplo, o próprio nome da tabela • Ex.: Isso não pode ser feito com DBX “select * from :TABELA” • No FireDAC, você pode usar variáveis de substituição (MACROS), como um processador de templates, e depois substituir o texto da variável, usando os caracteres “!” (string) e “&” (SQL)
  • 12.
  • 13. Array DML • Permite enviar um único comando para o DBMS com um conjunto de parâmetros (array) • Cada parâmetro de comando tem uma matriz de valores • Todos os parâmetros têm matrizes do mesmo comprimento • FireDAC solicita o DBMS para executar um comando uma vez para cada linha do array • Reduz a quantidade de comunicação entre DBMS e cliente • Acelera o tempo de execução
  • 14.
  • 15. Executing SQL Scripts • Script = conjunto de comandos SQL executados separadamente • Manutenção, criação, versionamento, carga inicial de BD • TFDScript vs. TFDQuery.ExecSQL • Pode ser dividida em várias transações (lote é uma única) • Totalmente controlado pelo cliente (lote controlado pelo BD) • A execução do script pode ser colocada em log • o script fornece feedback progresso execução • FireDAC tem componente pronto para feedback (TFDGUIxScriptDialog)
  • 16.
  • 17.
  • 18. Local SQL • Permite a execução de comandos SQL, onde os descendentes de TDataSet são utilizadas em vez das tabelas de BD • Usa driver do SQLite por baixo • TFDLocalSQL contém a coleção de todos os TDataSets • Dados de diferentes BDs usando diferentes engines (BDE, DBX, ADO) • Consultas heterogêneas, in-memory database, modo off-line avançado • Pode ser usado para migração de BD • Pode ser usado de FireDAC para FireDAC, esqueça o “Filter”!
  • 19. Conexão FireDAC Conexão DBX Conexão Local Query local, trazendo dados de “tabelas” (TDataSets) locais, fazendo joins, filtros, order, where etc, tudo localmente em cache, usando *diferentes engines de acesso como se fossem fontes de dados*
  • 20. ETL – Extract, Transform, Load • Extract – extrair dados de fontes homogêneas ou heterogêneas • Transform – transformar os dados para armazenar em um formato ou estrutura específica para propósitos de análise • Load – armazenar no BD final (BD relacional, data warehouse) • FONTE / DESTINO: TXT, DataSet (qualquer engine / BD), FireDAC (SQL) • Exemplos de uso: extrair dados de um BD e exportar para TXT, ou ler de um arquivo TXT e armazenar em uma tabela do BD (carga), transferir dados de um dataset para outro (engines diferentes)
  • 21.
  • 22. Extract Load Transform TDataSet, qualquer engine e BD Criação direta da tabela (metadados + dados) no BD via FireDAC Arquivo texto Fonte
  • 23. Metadata • API comum para retornar metadados de qualquer BD, usando mesmo código / componentes; • TFDConnection - métodos para retornar nomes de objetos do BD: GetCatalogNames, GetSchemaNames, GetTableNames, GetFieldNames, GetKeyFieldNames, GetGeneratorNames, GetPackageNames, GetStoredProcNames etc. • TFDMetaInfoQuery (TDataSet) - propriedade MetaInfoKind (mkCatalogs, mkSchemas, mkTables, mkTableFields, mkIndexes, mkIndexFields, mkPrimaryKey, mkPrimaryKeyFields, mkForeignKeys, mkForeignKeyFields, mkPackages, mkProcs, mkProcArgs, mkGenerators, mkResultSetFields, mkTableTypeFields)
  • 24.
  • 25. Cache e Update • Cache Updates em memória, estilo antigo Cache Updates do BDE e Data do ClientDataSet • ApplyUpdates permite enviar as atualizações para o BD, em um único lote (Delta, estilo ChangeLog do CDS) • Cache é feita em memória, como CDS • Componente específico separado (opcional) para geração de comandos de atualização (update, delete, insert, lock), estilo BDE / IBX • Suporte a SavePoint (snapshot), UndoLastChange • Suporte a Data e Delta (IFDDataSetReference)
  • 26.
  • 27.
  • 28. Save to File e Load from File • Persistência em disco, estilo CDS • Suporte aos formatos XML, JSON e binário • Necessário registrar os componentes TFDStanStorageBinLink, TFDStanStorageXMLLink e TFDStanStorageJSONLink • Também pode-se ler os dados de XML / JSON semelhante ao CDS
  • 29.
  • 30. Fetch • Total controle sobre como os dados são obtidos do BD • Propriedade FetchOptions.Mode e RowsetSize • Mode = fmManual, fmOnDemand, fmAll, fmExactRecsMax • RowsetSize = tamanho do pacote • Semelhante ao uso de Packet Records do CDS • Pode-se trazer os dados por demanda • Cuidado com o cursor
  • 31.