Já falei sobre as novidades na linguagem, em ASP.Net e no ECO IV no Delphi 2007 para .Net e RAD Studio 2007. O próximo tópico é novidades na área de Banco de Dados.
BlackfishSQL para .Net
BlackfishSQL é um novo banco de dados, para .Net, escrito 100% em código gerenciado, sem qualquer dependência de DLLs do windows. Você já pode ter ouvido falar sobre o BlackfishSQL com os nomes NDataStore e SqlDataStore.
Ele possui um código unificado com o BlackfishSQL para Java, anteriormente JDataStore, sendo completamente compatível em protocolo e formato do arquivo de banco de dados. Na prática, ao usar BlackfishSQL, você pode ter um servidor em qualquer plataforma que possua uma VM .Net ou Java. Outro ponto importante é que, apesar de BlackfishSQL para .Net ser um novo produto, é na prática versão 8.0 (seguindo o JDataStore 7), tendo um núcleo maduro, testado e já bastante utilizado.
Um dos recursos mais interessantes do BlackfishSQL é poder escrever Stored Procedures e triggers em Delphi, dentro da IDE, como você sempre fez com suas aplicações. Isso permite também depurar as stored procedures usando o debugger do Delphi, como se você estivesse depurando sua própria aplicação. Basta colocar os breakpoints e iniciar a sessão de depuração. É sem dúvida uma forma muito mais eficiente e produtiva de colocar sua regra de negócio no banco de dados do que aprender um dialeto SQL específico dos outros bancos de dados.
Existem três drivers para o BlackfishSQL. Os dois primeiros são para aplicações .Net, sendo um Local, onde o servidor roda no próprio processo e acessa o banco de dados diretamente, e um Remoto, que utiliza TCP/IP para acessar um servidor Blackfish rodando na mesma máquina ou remotamente. É interessante notar que a distribuição de uma aplicação que utiliza um driver Ado.Net Local para Blackfish é copiar e rodar – não é necessária nenhuma configuração ou instalação.
Isso torna BlackfishSQL para .Net uma escolha bastante interessante para distribuir aplicações Asp.Net – o seu servidor de hospedagem não precisa ter um servidor de banco de dados instalado, e você não precisa pagar a mais por isso – basta copiar a versão Local do driver .Net, o arquivo de banco de dados (ou deixar sua aplicação criá-lo com os novos recursos de metadados que vou mostrar mais pra frente), e sua aplicação web está pronta pra funcionar.
O Blackfish SQL Developer Guide está disponível para download no CodeCentral – 205 páginas de documentação, exemplos e bastante informação pra quem está interessado em ver o que o BlackfishSQL oferece.
DbxClient
A terceira forma de acessar um servidor BlackfishSQL é um protocolo JSON/RPC implementado por um novo driver dbExpress, chamado DbxClient, através de aplicações VCL para Win32 ou .Net. Isso permite você acessar um servidor BlackfishSQL, com suas regras de negócio escritas em Delphi, através de clientes Win32, sem precisar depender do framework .Net em cada estação.
Isso torna BlackfishSQL o nono banco de dados que dbExpress suporta diretamente nessa nova versão, para .Net e Win32. DbxClient é mais um driver escrito em Delphi e que possui todo o código fonte incluído no produto.
Por enquanto BlackfishSQL é o unico servidor que é acessível pelo protocolo DbxClient, mas aguarde notícias sobre esse assunto – na minha opinião, é um tópico bastante promissor.
DbxReadOnlyMetadata e DbxMetadata
DBX4 continua a evoluir, e desta vez é criando uma base sólida de metadados bastante ricos, completamente escrita em Delphi e com o código fonte disponível.
DbxReadOnlyMetadata é uma extensão do dbExpress permitindo ler metadados, de uma forma fácil, prática e comum, de qualquer um dos nove banco de dados suportados. Está disponível em Win32 e .Net. Além de informações sobre a conexão (se ela diferencia maisculas e minusculas, se possui schemas, quais os caracteres de inicio e fim de aspas, etc), é possível obter as seguintes informações sobre o banco:
- Tipos de Dados
- Catalogs
- Schemas
- Tabelas
- Views
- Synonms
- Colunas (de tabelas, views, etc)
- Indices
- Campos que compõe cada indice
- Chaves Extrangeiras
- Campos que compõe cada chave extrangeira
- Stored Procedures
- Código Fonte de Stored Procedures
- Parametros de Stored Procedures
- Package Stored Procedures
- Código Fonte de Package Stored Procedures
- Parametros de Package Stored Procedures
- Usuários
- Roles
- Palavras Reservadas
Os itens em negrito são comandos novos de metadatados introduzidos nessa nova versão. Todos eles podem ser acessados utilizando uma query com o CommandType Metadata, e o resultado vem como um resultado comum de query, podem ser manipulado com os componentes que já estamos acostumados, ou exibido em grid e assim por diante.
DbxMetadata é a versão de escrita de metadados. Ela gera commandos SQL de Create, Alter e Drop de acordo com coleções que são passadas, gerando tabelas, indices, e vários outros objetos. Extremamente útil para quem quer escrever um aplicação independende de banco de dados, não precisando se preocupar com o sintaxe especifica de cada banco. Criar uma tabela é mais ou menos assim:
begin
MetaDataTable := TDBXMetaDataTable.Create;
MetaDataTable.TableName := 'TABELA';
MetaDataTable.AddColumn(TDBXInt32Column.Create(’Coluna1′));
MetaDataTable.AddColumn(TDBXDecimalColumn.Create(’Coluna2′, 10, 2));
MetaDataTable.AddColumn(TDBXUnicodeCharColumn.Create(’Coluna3′, 32));
MetaDataProvider.CreateTable(MetaDataTable);
end;
A parte de escrita de DbxMetadata só está disponível para a plataforma .Net nessa versão, mas nada impede que seja disponibilizado para Win32 no futuro.
Certified Test Suite e Geradores de Dados
Tendo como objetivo a melhor qualidade possível dos drivers dbExpress incluidos no produto e dos de terceiros, foi criada uma suite de testes automatizados de certificação para dbExpress. Completamente escrita em Delphi e com todo o código fonte disponível. Não é só quem escreve drivers que vai se interessar em aproveitar essa suite – as extensões para o DUnit e as rotinas para trabalhar com dados podem ser usadas por qualquer um que efetue testes automatizados em aplicações de bancos de dados – ou quem está pensando em começar.
Entre o conteúdo dessa suíte, vale um destaque para o TDbxDataGenerator e classes relacionadas. Ela auxilia o controle de qualidade gerando valores para popular tabelas para testes, depois que foram criadas com as rotinas de DbxMetadata mostradas acima, de acordo com o tipo de cada coluna.
AdoDbxClient
Para quem escreve aplicações Asp.Net ou ECO, está disponível o AdoDbxClient. Ele é um provider Ado.Net 2.0 nativo que permite a utilização de drivers dbExpress diretamente em Ado.Net 2.0. Não é mais necessário utilizar classes ou componentes diferentes como era com o BDP – basta programar utilizando DbConnection, DbCommand e afims, de uma forma independente de banco de dados, podendo determinar em tempo de execução se será utilizado os providers do framework .net (SqlClient, OracleClient), os do BlackfishSQL para ADO.Net (Local e Remote), ou qualquer um dos nove drivers suportados em dbExpress.
E Tudo o Mais
Além de tudo isso existem diversas pequenas melhorias e correções de problemas, parte de um processo constante de aperfeiçoamento.
Essa versão, apesar de ser um produto .Net completando o RAD Studio com o Delphi para Win32 e C++Builder já existentes, possui recursos que podem interessar a vários tipos de desenvolvedores, inclusive os que só trabalham com código nativo. Não deixe de conferir a nova versão!