[Delphi Tokyo] Compatibilidade do FireDAC com o Firebird Nbackup Direct I/O

RAD Studio Tokyo Blogging

Boa noite, pessoal!
Vários MVPs já estão divulgando as novas funcionalidades do RAD Studio 10.2, ou Tokyo, desde a semana passada. Neste artigo, pretendo apresentar uma nova funcionalidade do componente TFDFBNBackup do FireDAC para desenvolvedores que trabalham com o banco de dados Firebird. Artigo bem rápido!

 

Operações de I/O (Input/Output) normalmente são armazenadas em cache pelo sistema operacional para aprimorar o desempenho, uma vez que o acesso à memória é mais rápido que o acesso ao disco. Entretanto, em algumas situações, este cache pode não ser tão vantajoso ou viável. Por isso, existe um recurso, conhecido como Direct I/O, que ignora o armazenamento em cache, permitindo que aplicações gravem dados diretamente no disco.
Desde a versão 2.1.4 do Firebird, o utilitário nbackup disponibiliza um parâmetro para ligar ou desligar o Direct I/O, tornando-o opcional. Porém, no RAD Studio, o componente TFDFBNBackup sempre manteve essa opção habilitada (Direct I/O On), causando algumas inconveniências para desenvolvedores que realizam backups do banco de dados utilizando este componente. Essa questão foi até levantada em um dos tópicos da EDN (Embarcadero Developer Network):

https://forums.embarcadero.com/thread.jspa?threadID=211595

 

Como solução, no Delphi Tokyo, o componente TFDFBNBackup tornou este parâmetro opcional através de uma nova propriedade chamada Direct:

Propriedade Direct do TFDFBNBackup

Ao configurar a propriedade como ndOff, conforme mencionado no tópico da EDN, o backup do banco de dados ganha performance. Para tirar a prova, tomei um banco de dados pequeno como exemplo, de apenas 20MB, somente para comparação do parâmetro de tempo. Eis o resultado com cada valor:

  • Valor ndOn:  00.710 segundos
  • Valor ndOff:  00.296 segundos

Claro, neste teste, a diferença é mínima por conta do tamanho do arquivo. Em bancos de dados volumosos – com Gigabytes de tamanho – a redução de tempo será evidentemente maior.
Vale lembrar também que o método Backup do componente TFDFBNBackup pode ser invocado em um processamento paralelo, por exemplo, com o TTask:

TTask.Create(
  procedure()
  begin
    FDFBNBackup.Backup;
    ShowMessage('Backup concluído!');
  end).Start;

 

Por hoje é só, pessoal.
Volto em breve! Abraço!


 

Compartilhe!
Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Pin on PinterestEmail this to someone

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Preencha o campo abaixo * Time limit is exhausted. Please reload CAPTCHA.