Artigo Clube Delphi Edição 32 - dbExpress: Arquitetura Interna
Neste artigo entraremos na caixa preta do dbExpress. Estudando sua arquitetura interna, veremos como obter mais performance, e como usar essa tecnologia diretamente, sem os componentes de acesso da paleta dbExpress.
Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.
dbExpress: Arquitetura Interna
Ganhe conhecimento e performance no acesso a dados
cross-platform
O dbExpress já conquistou a maioria dos programadores – ao que parece, a Borland acertou quando o idealizou. Com algumas limitações, programaticamente remediáveis, tem se mostrado uma camada rápida, estável e de distribuição muito simples.
Neste artigo entraremos na caixa preta do dbExpress. Estudando sua arquitetura interna, veremos como obter mais performance, e como usar essa tecnologia diretamente, sem os componentes de acesso da paleta dbExpress. Conheceremos também o que acontece por trás do uso dos componentes e drivers dbExpress, analisando sua implementação, e aprenderemos como tirar proveito desse conhecimento.
Arquitetura
O dbExpress, muito inteligentemente, teve toda a sua implementação baseada em interfaces, conseguindo assim ter um conjunto de componentes independentes da implementação dos drivers de acesso. Qualquer driver escrito segundo os padrões definidos pelo dbExpress, ou seja, implementando as interfaces com seus métodos obrigatórios, poderá ser usado com os componentes de acesso a dados para esta tecnologia.
Como podemos perceber analisando o esquema da Figura 1, os componentes da paleta dbExpress independem do driver que estão usando, pois acessam uma camada intermediária padrão.
Figura 1. Arquitetura dbExpress
Neste artigo, vamos ver como pular a primeira parte dessa estrutura, trabalhando diretamente com as interfaces dbExpress. Veja a seguir uma descrição das principais interfaces da arquitetura.
ISQLDriver
A interface ISQLDriver é responsável pela inicialização das estruturas específicas de cada banco de dados. Através dela podemos obter uma referência para ISQLConnection. Todo o trabalho com as interfaces começa aqui. É esta interface a responsável pela abertura da biblioteca nativa do banco de dados (vendor lib). Vejamos uma pequena descrição de seus métodos:
· getSQLConnection(out pConn: ISQLConnection): SQLResult
Esse método coloca em pConn uma referência para uma interface ISQLConnection. Quando a solicitação é atendida com sucesso, a função retorna SQL_SUCCESS; caso contrário é retornado um código de erro específico para o problema.
· setOption(eDOption: TSQLDriverOption; PropValue: LongInt): SQLResult
Configura a propriedade do driver informada nos parâmetros.
· getOption(eDOption: TSQLDriverOption; plValue: Pointer;
iMaxLength: SmallInt; out Length SmallInt): SQLResult;
Lê a propriedade do driver informada nos parâmetros.
" [...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo