Um Mecanismo de Cache de Dados para DataSnap

Hoje pela manhã, durante o Delphi Academy, discutimos sobre cache de dados para DataSnap. Basicamente o cenário onde você tem tabelas que sofrem nenhuma ou poucas alterações ao longo do período, as quais você não precisa refazer a consulta a todo tempo, para todos os usuários.

Estou disponibilizando o exemplo abaixo, mas em um resumo, temos o seguinte:

  • Em uma aplicação DataSnap REST, adicionar um DataModule e configurar seu LifeCycle para Server, no ServerContainer. Com isso, ele terá uma única instância durante o ciclo de vida da aplicação
  • Neste DataModule, coloque um MemTable (ou Clientdataset se preferir) para cada tabela que deseja manter em cache
  • Defina uma conexão ao banco, e métodos (ou componentes para a execução das queries) para executar as consultas e carregar as tabelas em memória
  • Adicione um TFDEventAlerter e faça as devidas configurações: http://docwiki.embarcadero.com/Libraries/Tokyo/en/FireDAC.Comp.Client.TFDEventAlerter
  • Crie triggers de INSERT/UPDATE/DELETE que fará o “POST_EVENT” com o nome do evento alertando que a tabela sofreu alguma alteração. Este mesmo mecanismo está disponível para a maioria dos banco de dados: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Database_Alerts_(FireDAC)
  • No evento do OnAlert do  TFDEventAlerter, faça o refresh das tabelas e atualização dos datasets em memória

Com isso, você tem um mecanismo seguro e prático para manter as tabelas em memória sempre atualizadas.

Screen Shot 2017-05-30 at 17.34.14Screen Shot 2017-05-30 at 17.34.21

Os exemplos atualizados estão nestes links:

 

Traga suas aplicações para o Futuro!!!

Recentemente tivemos um Webinar sobre migração de aplicações Delphi para o XE5.

Caso o tenha perdido, já é possível acessar o replay através deste link:

http://forms.embarcadero.com/LA14Q1BRBDEApplicationstotheFuture

Também estão disponíveis os exemplos apresentados aqui:

http://cc.embarcadero.com/item/29777

Abraços e até o próximo!

FireDAC: Multi-Device data access for Delphi, C++Builder and RAD Studio

Estamos muito felizes em anunciar  a disponibilidade imediata do FireDAC para Delphi, C++ Builder e RAD Studio: http://www.embarcadero.com/products/rad-studio/firedac.

Mas o que é FireDAC?

FireDAC é uma biblioteca de acesso universal de dados para o desenvolvimento de aplicativos para múltiplos dispositivos, conectados a bancos de dados corporativos. Com sua poderosa arquitetura universal, FireDAC permite o acesso de alta velocidade nativa direto do Delphi e C++ Builder a uma grande variedade de plataformas de banco de dados, incluindo Oracle, Microsoft SQL Server, IBM DB2, SAP, DataSnap, Sybase SQL Anywhere, InterBase, Advantage Database, PostgreSQL, SQLite, MySQL, Firebird e Microsoft Access.

FireDAC é poderoso e simples de usar, fornecendo todos os recursos necessários para a construção de aplicações de alta performance e disponibilidade. FireDAC oferece uma API comum para acessar banco de dados diferente back-ends, permitindo também acesso a recursos específicos do banco de dados, sem comprometer o desempenho.

As capacidades de conectividade de dados de nível empresarial do Delphi e C++ Builder foi reforçada com FireDAC, oferecendo o desempenho mais rápido disponível, uma seleção ampla de plataformas de banco de dados, maior facilidade de utilização, API universal de acesso a dados, recursos específicos de cada fornecedor de banco de dados e mais. FireDAC suporta múltiplos dispositivos, incluindo clientes Windows e Mac desktop, iOS e Android em 2013.

Principais Recursos

Acesso Nativo

Enterprise
•    Oracle Database
•    Microsoft SQL Server
•    IBM DB2 Server

Workgroup
•    InterBase
•    MySQL Server
•    PostgreSQL
•    Sybase SQL Anywhere
•    Advantage Database
•    Firebird

Cloud
•    Microsoft SQL Azure

Desktop
•    SQLite database
•    Microsoft Access database

Embedded
•    InterBase ToGo
•    SQLite database
•    MySQL Embedded
•    Firebird Embedded

Multi-Tier
•    DataSnap server

Acesso Genérico

Permite conexões de ponte para:
•    dbExpress data sources
•    ODBC data sources

Enterprise
•    Informix Dynamic Server
•    Sybase Adaptive Server Everywhere
•    SAP MaxDB
•    Teradata
•    IBM AS/400

Workgroup
•    Ingres Database
•    Nexus Database

Desktop
•    Microsoft SQL Server CE
•    Embarcadero Blackfish SQL Server
•    Microsoft Excel

Legado
•    MicroFocus Cobol
•    DBase
•    FoxPro
•    Paradox
•    Clarion

Cross Platform
•    Delphi Win32, Win64, Mac OS X x86, iOS
•    C++Builder Win32, Mac OS X    API
•    Fast and Powerful Delphi DataSets
•    ADO.NET-like data engine
•    50 Delphi VCL Components

Unificação
•    Data Types
•    SQL Dialects
•    SQL Script Dialects
•    Data Editing
•    Auto-Incrementing Fields
•    Error Reporting
•    Quoted Identifiers
•    Transaction Support
•    Login and Password Changing
•    Database Event Support
•    Data Moving, Exporting and Importing
•    Metadata Retrieval
•    Records Paging and Counting
•    Master-Detail Relationship

Performance
•    Rowset Fetching
•    Array DML Execution
•    Live Data Window
•    Command Batches
•    Asynchronous Command Execution
•    Command Execution Canceling
•    Metadata Caching
•    Update Commands Caching
•    Connection Pooling
•    DataAbstract Direct mode
•    Faster than dbGo and dbExpress

Avançado
•    Options Inheritance System
•    Automatic Connection Recovery
•    Disconnected Mode
•    Centralized Cached Updates
•    Dataset Persistence
•    International applications
•    DB services (backup, restore, etc)
•    Local SQL Engine

Outros
•    BDE Migration
•    Debugging Support
•    Design Time Support
•    Utilities

Recursos
•    100% source code
•    Help (1500+ topics)
•    FAQ (100+ answers)
•    Demos (80+ projects)