DataEngine
1.0.0Open SourceCRA-readyChangelog - DataEngine
Todas as mudanças notáveis neste projeto serão documentadas neste arquivo. O formato é baseado em Keep a Changelog, e este projeto adere ao Semantic Versioning.
[Unreleased]
Fixed
- Params leak (FireDAC, ADO, Zeos):
IDBQuery.Paramsreturned a newTParamson every read (AsParams) and nobody freed it; the core reads it for the monitor and the cache on every command, so each SQL leaked oneTParams. The query now owns oneTParams(the oneTDriverQueryalready frees) and each read refreshes it (Issue #58).
[1.0.0] - 2026-04-10
Added
- v1.0.0 Stabilization: Final architecture refactoring and structural stabilization for major release (Issue #48).
- Core Decoupling: Replaced all FireDAC dependencies in
CacheManager,SQLiteCacheProvider, andDataSetSnapshotwith engine-agnostic components (TClientDataSet) and the native SQLite3 driver, achieving a 100% decoupling of the Core from specific frameworks (Issue #45). - Horse Middleware: Implemented
Horse.DataEngine.pasintegration for Horse web framework, providing automatic transaction lifecycle management and dependency injection ofIDBConnection(Issue #50). - Schema Migrations: Implementation of an engine-agnostic schema migration framework with internal history tracking and FluentSQL bridge for DDL generation (Issue #49).
- Multi-tenant Pooling: Enhanced connection pool with multi-tenant support, allowing dynamic selection of connection profiles via callbacks or request headers (Issue #47).
- Snapshot Serialization: Migrated from FireDAC binary format to universal Midas binary format for cache snapshots, ensuring compatibility across all data drivers.
- Unified Local Cache: Refactored
TSQLiteCacheProviderto use the embedded Native SQLite3 driver instead of FireDAC providers, reducing the final binary footprint and external dependencies.
Fixed
- Driver Robustness: Standardized
IDBConnectioninternal interfaces across legacy drivers and resolved namespace collisions in test fixtures (Issue #35). - Implicit Transactions: Finalized support for implicit 'DEFAULT' transaction activation in
TFactoryConnection, ensuring compatibility for lazy-initialization drivers. - Transaction Safety: Resolved critical access violations in
InTransactionstate queries by implementing the Template Method pattern in the base class, ensuringFTransactionActivenull-checks and thread-safe locking across all drivers (Issue #43). - Test Alignment: Updated DBExpress and FireDAC test projects and modernized test constant naming conventions.
Changed
- Driver Architecture: Refactored transaction state hooks (
_InTransaction) for 17 database drivers, promoting centralized lifecycle management.
[0.17.2] - 2026-04-09
Fixed
- Transaction Consistency: Fixed regression in
TFactoryConnection.StartTransactionthat prevented legacy drivers (direct DBExpress) from initializing their 'DEFAULT' transaction lazily (Issue #35). - Graceful State Checks: Modified
InTransactionin DBExpress, FireDAC, and UniDAC drivers to returnFalseinstead of raising an exception when no transaction is active, preventing crashes inExecuteDirectcalls.
[0.17.1] - 2026-04-08
Fixed
- Observability Refinement: Isolamento preciso da métrica
FetchTimeno loop do cursorTDriverDataSet<T>mitigando falsos zeros de report em execução (Issue #46). - Concurrency Safety: Implementação do padrão Lock-on-Clone/Copy-on-Read (
ToArray) emTDriverConnection.Notifypara prevenir data races e Access Violations em eventos PPL paralelos.
[0.17.0] - 2026-04-08
Added
- Observer Management API: Exposição de
AddObserver,RemoveObservereSlowQueryThresholdemTFactoryConnectionpara configuração direta no nível de factory (Issue #47).
Changed
- Constructor Integrity: Parâmetro
ASlowQueryThresholdadicionado ao construtor deTDriverQuerypara garantir configuração no momento da criação, eliminando dependência de configuração pós-construção via factory.
[0.16.0] - 2026-04-08
Added
- Advanced Observability System: Implementação de telemetria estruturada via
IDBObservereTMetricCollector(Issue #45). - High-Precision Timing: Integração de
TStopwatchna camada de query para precisão sub-milissegundo em métricas de execução. - Structured Events: Suporte a eventos de tipo
Start,End,ErroreMetricno pipeline de monitoramento. - Slow Query Tracking: Detecção automatizada de consultas que excedem o
SlowQueryThresholdconfigurável. - Thread-Safe Telemetry: Implementação de proteção por
TCriticalSectionpara o gerenciamento de observers, garantindo segurança em ambientes multithread.
[0.15.0] - 2026-04-08
Added
- Connection Resiliency System: Evolução do padrão
TGuardConnectionpara orquestrador resiliente com suporte a retentativas automáticas (Issue #44). - Health Check Mechanism: Introdução de
IsAlivena interfaceIDBConnectionpara verificação proativa de integridade. - Resilience Policies: Implementação da interface
IDBResiliencePolicye políticaTDefaultResiliencePolicyconfigurável via Builder. - Pool Safety: Integração de health checks no
TPoolConnection, garantindo que conexões rompidas sejam descartadas antes da entrega ao consumidor. - Driver Integration: Suporte nativo a
Pingnos drivers FireDAC e UniDAC.
[0.14.0] - 2026-04-07
Added
- Async Loading Infrastructure: Implementação do motor de execução assíncrona
TDataEngineAsyncbaseado na PPL (Parallel Programming Library). - Interface Evolution: Introdução de
OpenAsync(OnComplete, OnError)na interfaceIDBDataSet. - Fetch Settings: Adicionada propriedade
FetchOptionscom suporte a modosfmAll,fmManualefmOnDemand. - UI Synchronization: Garantia de execução de callbacks na thread principal via
TThread.Queue. - Base Fallback: Implementação de suporte assíncrono básico nas classes base
TDriverQueryeTDriverDataSetBase, permitindo uso imediato em todo o ecossistema. - Native Driver Streaming: Implementação de carregamento incremental nos drivers FireDAC, UniDAC e Zeos (Issue #43).
[0.13.0] - 2026-04-07
Added
- Distributed Cache Support: Implementação do
TRedisCacheProviderpara armazenamento centralizado de snapshots. - RESP Protocol: Transporte leve e nativo (
TRedisTransport) para comunicação com servidores Redis via sockets. - Hierarchical Invalidation: Suporte a invalidação de cache por tabela usando Redis Sets, garantindo consistência em ambientes distribuídos.
- Metadata Storage: Integração de metadados no provedor Redis para compartilhamento global de esquemas.
[0.12.0] - 2026-04-07
Changed
- Standard Rule Compliance: Refatoração completa da nomenclatura de métodos protegidos e privados para aderir ao prefixo
_, conforme as diretrizes do projeto. - Core Refactoring: Padronização de hooks internos em
TDriverQueryeTDriverConnection(_TryApplyMetadataCache,_TrySaveMetadataCache,_RefreshMetadata). - Documentation Alignment: Correção dos caminhos de referência para as regras de linguagem Delphi em
.claude/references/conventions.md. - Ecosystem Synchronization: Atualização em lote de todos os 18 drivers e suas respectivas factories para garantir conformidade com as novas assinaturas da classe base.
[0.11.0] - 2026-04-07
Added
- Unified Transaction Isolation Mapping: Introdução do enum
TDBIsolationLevelemIDBTransactionpara gestão de transações agnóstica ao driver. - Provider Implementation:
FireDAC: Suporte completo a níveis de isolamento nativos (amReadCommitted,amSerializable, etc.).UniDAC: Mapeamento unificado com tratamento de colisão de tipos e suporte a logs de fallback.ZeosLib: Implementação de mapeamento de isolamento com fallback inteligente paraSnapshot(via Serializable).
- Architecture Upgrade:
TDriverTransactionagora suportaMonitorCallbackem toda a camada de drivers, permitindo rastreabilidade e logs de aviso em tempo de execução. - Compatibility Layer: Atualização de todos os 18 drivers de transação para garantir integridade arquitetural e compilação do ecossistema.
[0.10.0] - 2026-04-07
Added
- Bulk Operations Framework: Introdução da interface
IDBBulkLoaderpara inserções de alta performance em lote. - Native Driver Support:
FireDAC: Implementação via Array DML (TFDQuery), otimizando o uso de buffers nativos do engine.UniDAC: Implementação viaTUniLoadercom suporte a buffer agnóstico (push-based).ZeosLib: Implementação via loop transacional garantindo compatibilidade genérica no Core.
- Performance Benchmarking: Novo projeto de teste
Tests.BulkLoad.dpremTest Delphi/para validação de ganhos de performance. - Core Integration: Gancho
BulkLoaderadicionado aIDBConnectioneTDriverConnectionpara acesso unificado.
[0.9.0] - 2026-04-06
Added
- Core Orchestration: Implementação do padrão Template Method em
TDriverConnection.ExecuteDirectpara orquestração centralizada de SQL. - Unified Monitoring: Log de monitoramento e parâmetros agora disparados automaticamente pela classe base.
- Auto-Invalidation: Integração nativa com
TCacheManagerpara invalidação de tabelas em comandos DML.
Changed
- Driver Migration: Refatoração dos drivers
FireDAC,UniDAC,ZeosLib,DBExpresseSQLite3(Native) para utilizar os novos hooks_DoNativeExecuteDirect. - Boilerplate Reduction: Eliminação de código redundante de setup de queries temporárias nas classes descendentes.
- Reliability: Garantia de captura correta de
RowsAffectedem todos os drivers migrados.
[0.8.2] - 2026-04-06
Fixed
- Core: Fixed uninitialized
LTablevariable inTDriverQuery.TrySaveMetadataCachethat caused metadata save failures. - Drivers (SQLite3): Fixed misnamed implementation class
TDriverResultSetSQLite3to match interfaceTDriverDataSetSQLite3. - Drivers (SQLite3): Integrated
ACachedFieldDefsinto result dataset to effectively utilize metadata cache and avoid redundant engine calls.
[0.8.1] - 2026-04-06
Added
- Universal Metadata Cache Support: Extensão do sistema de cache para os drivers
ZeosLib,DBExpresseSQLite3 (Native). - Benchmark Suit: Novo projeto de teste
Tests.Benchmark.Metadata.dprpara validação de latência em cache hits.
Changed
- Core Refactoring: Centralização da lógica de hooking em
TDriverQuery(Core), eliminando duplicidade de código nos drivers. - Improved Monitoring: Padronização dos logs de monitoramento de metadados (
[METADATA HIT],[METADATA SAVED]) em todos os drivers. - Driver dogfooding: Refatoração completa de
FireDACeUniDACpara utilizarem os novos métodos base do Core.
[0.8.0] - 2026-04-05
Added
- Metadata Cache Infrastructure (Part 1): Implementação da infraestrutura base para cache de metadados.
- Nova interface
IDBMetadataCachepara gestão de metadados serializados. - Integrado suporte a
MetadataCacheemIDBConnectioneTDriverConnection. - Unidade
DataEngine.Metadata.Serializer.paspara conversão deTFieldDefs<-> JSON. - Unidade
DataEngine.Metadata.Manager.paspara orquestração automática de persistência. - Suporte a metadados no
TSQLiteCacheProviderusando prefixoMETA:. - Driver Hooks: Implementação de hooks em
TDriverQueryFireDACeTDriverQueryUniDACpara ignorar oAutoGetFieldDefsnativo quando houver cache HIT. - Projeto de teste
TestsMetadataSerializer.dprpara validação da integridade de dados.
[0.7.0] - 2026-04-04
Added
- Auto-Invalidation (DML Interception): Invalidação automática de cache via interceptação de comandos.
- Método
InvalidateByTableadicionado emIDBCacheProvider. - Extração de nomes de tabela via Regex heurístico em
TCacheManager.ExtractTables. - Hooks de interceptação automática em
TDriverConnectioneTDriverQueryparaExecuteDirect. - Mapeamento de dependências de tabela persistente em
TSQLiteCacheProvider. - Projeto de teste
TestsCacheInvalidation.dprpara cobertura de cenários DML.
[0.6.0] - 2026-04-04
Added
- Cache Persistency (SQLite/Disk): Implementação do provedor de cache em disco.
- Novo provedor
TSQLiteCacheProviderutilizando SQLite local. - Serialização binária de
IDBDataSetSnapshotvia formato FireDAC nativo. - Suporte a TTL (Time To Live) persistente gravado em banco.
- Comando
Prunepara limpeza de registros expirados no disco. - Adição de parâmetro
ATTLopcional na interfaceIDBCacheProvider.SetValue. - Projeto de teste CLI
TestsCachePersistency.dprpara validação de persistência entre sessões.
[0.5.0] - 2026-04-03
Added
- Cache Study & Prototype: Introdução da infraestrutura de cache no Core.
- Interfaces
IDBCacheProvidereIDBDataSetSnapshot. TCacheManagercom suporte a hashing MD5 de SQL + Parâmetros.TMemCacheProviderpara armazenamento LRU em memória.- Mecanismo de isolamento de cursores via
CreateViewem snapshots de dados. - Projeto de teste
TestsCacheStudy.dprpara validação de performance e hits.
[0.4.0] - 2026-04-03
Added
- Legacy & Niche Drivers: Padronização completa dos drivers legados.
- Suporte a DBExpress, AbsoluteDB, IBExpress e outros (~10+ drivers).
Changed
- Refatoração de namespaces para o padrão
DataEngine.*.
[0.3.0] - 2026-04-03
Added
- Medium Coverage Drivers: Implementação dos drivers ADO, Memory e SQLDirect seguindo o blueprint FireDAC.
[0.2.0] - 2026-04-03
Added
- Advanced Drivers: Suporte padronizado para SQLite3, Zeos e UniDAC.
[0.1.0] - 2026-04-03
Added
- Foundation: Estrutura base do framework core.
- Driver FireDAC como referência arquitetural.
- Interfaces base para conexões, transações e queries.