Novidades no SQL Server 2012 RC0 – FILETABLE parte 1

Olá a todos!

Na última semana estive envolvido na preparação da minha palestra sobre SQL Server 2012 no evento da Sisnema (aqui: http://bit.ly/z1TtW4), principalmente em razão das novas funcionalidades.

 

A cada nova versão (ou seria evolução?) o SQL Server deixa claramente de ser um banco de dados para aplicações departamentais e passa a ser a plataforma para todos os dados da empresa: banco de dados corporativo, data mining, ETL, relatórios, e agora facilmente estendido para a nuvem (no caso, a plataforma Azure).

 

Hoje vou falar da funcionalidade FILETABLE, que é novidade na RC0 do SQL Server 2012.

Vamos começar pelo histórico.

Um grande desafio que desenvolvedores e administradores de bancos de dados têm é o armazenamento, indexação e retorno de dados não estruturados. Por exemplo, uma tabela de fotografias deveria ter um campo do tipo IMAGE ou VARBINARY para armazenar os “bits” da foto. Para facilitar a administração, normalmente o desenvolvedor e o DBA criavam uma pasta para guardar os arquivos de imagem (as fotos) e somente mantinham uma referência no banco de dados. Aí vinham os problemas:

Fotos no Banco de Dados

  • Aumento do tamanho do banco de dados
  • Aumento no tamanho do arquivo e no tempo necessário para efetuar o backup
  • Rotinas de upload e download complexas
Fotos no Sistema de Arquivos

  • Segurança não integrada ao banco
  • Processo de carga e busca independente do banco, não transacional
  • Backup do banco não inclui os arquivos

Alguns destes problemas podiam ser contornados, armazenando os campos IMAGE e TEXT em um filegroup diferente… mas a rotina complexa de upload e download continuava a mesma.

Como a funcionalidade FileTable pode ajudar neste cenário?

FileTable é um tipo especial de tabela, construída sobre a funcionalidade FILESTREAM, que debutou no SQL Server 2008.

Basicamente, FILESTREAM serve para que dados BLOB possam ser armazenadas no sistema de arquivos (como um arquivo, para simplificar), ainda que gerenciadas pelo RDBMS.

Para quem não lembra, precisamos adicionar ao banco de dados um filegroup especial (marcado como CONTAINS FILESTREAM – associado a um caminho físico no sistema de arquivos) e criar uma tabela neste filegroup com tipo de dados VARBINARY(MAX) FILESTREAM.

O acesso aos dados binários pode ser feito via T-SQL, mas o retorno (binário) não é human-readable. É necessário criar uma aplicação que faça uso das classes do .NET Framework para ler o stream de dados e converter num formato conhecido (PDF, GIF, PDF, por exemplo).

 
Bem, depois desta explicação, vamos ver o que é e como funciona o FileTable. Como mencionado acima, FileTable é uma tabela especial, com estrutura pré-definida, que representa um a hierarquia de pastas e arquivos em um local no file system. Além disso:

  • O ponto inicial da hierarquia de uma FileTable é uma pasta no sistema de arquivos (pasta raiz da hierarquia);
  • Os dados contidos nesta tabela são visíveis através de um compartilhamento Windows
  • Cada linha em uma FileTable representa uma pasta ou arquivo;
  • Internamente, o conteúdo do compartilhamento é gerenciado pelo SQL Server;
  • Acessos de leitura e escrita ao compartilhamento são capturados pelo SQL Server, que efetua o mapeamento da solicitação para a FileTable correspondente.
  • As colunas da FileTable contém informações sobre o arquivo ou pasta; por exemplo: file_id, path_locator e parent_path_locator;
  • O conteúdo da FileTable pode ser acessado normalmente através da linguagem T-SQL.

Conclusão

Com esta arquitetura, pode-se voltar ao modelo citado anteriormente: fazer o upload da foto para uma pasta no sistema de arquivos (sob gerência do SQL Server 2012) e cadastrar os demais dados em uma tabela, referenciando o ID do arquivo na FileTable.

O resultado pode ser visto nas imagens abaixo:

No próximo post vou publicar alguns exemplos de criação e uso desta funcionalidade.

Um abraço!

Anúncios

Um pensamento sobre “Novidades no SQL Server 2012 RC0 – FILETABLE parte 1

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s