FILESTREAM com SharePoint 2010
Artigo original publicado em 21 de abril de 2011, quinta-feira
Autor: Bill Baer, Gerente de Produto Técnico Sênior, Microsoft Corporation - SharePoint
FILESTREAM é um novo recurso do SQL Server 2008 que permite armazenar dados não estruturados em um sistema de arquivos NTFS. FILESTREAM (local ou remoto) é suportado no SharePoint 2010 como mecanismo para reduzir os gastos financeiros ao permitir o armazenamento de grandes quantidades de dados não estruturados binários em um repositório de conteúdo endereçável ou de mercadoria.
Dados não estruturados
Os dados não estruturados se referem às informações que não aderem a um modelo definido ou não se ajustam bem em tabelas relacionais no SharePoint. Os dados não estruturados podem se referir a formatos de arquivo de documento, vídeo, áudio e tipos de arquivos correlatos do Microsoft Office.
Dados estruturados
Os dados estruturados do SharePoint se referem aos metadados associados aos seus dados não estruturados associados ou BLOB. Os bancos de dados relacionais são os exemplos mais citados de dados estruturados.
SQL Server e repositório de dados não estruturados
Existem três abordagens ao armazenamento de dados no SQL Server, RBS, SQL BLOB e FILESTREAM:
- Remote BLOB Storage (RBS) no qual o SharePoint depende de uma nova camada do SQL Server para ler ou atualizar os dados de BLOB armazenados fora do banco de dados em um BLOB Stores separado (sistema de arquivos ou repositórios de BLOB dedicados)
- SQL BLOB, que se refere ao repositório tradicional de BLOB com SharePoint, os dados de BLOB são armazenados ao longo dos metadados estruturados no Banco de Dados de Conteúdo
- FILESTREAM
Visão geral do FILESTREAM
FILESTREAM é implementado no tipo de dados varbinary(max) que instrui o mecanismo do banco de dados a armazenar dados não estruturados no sistema de arquivos por meio de um grupo de arquivos FILESTREAM que contém diretórios de sistema de arquivos em vez dos próprios arquivos, também chamados de contêineres de dados. Estes são a interface entre o repositório do mecanismo de banco de dados e o repositório do sistema de arquivos. varbinary é a designação do tipo de dados binário para grandes objetos binários armazenados nos bancos de dados de conteúdo do SharePoint 2010 e se refere a dados binários de comprimento variável. (MAX) se refere ao valor que max indica como tamanho máximo do repositório de 2^31-1 bytes ou 2GB. O Repositório de BLOB Remoto não fornece um mecanismo para ultrapassar o limite de tamanho de arquivo de 2GB imposto pelo SharePoint.
No SharePoint 2010, os dados de BLOB remotos recebem um identificador exclusivo nos bancos de dados de conteúdo configurados para RBS (ver ilustração).
FILESTREAM oferece vários benefícios referentes ao desempenho 1) FILESTREAM utiliza o cache do sistema NT para armazenar dados de arquivo em cache, reduzindo o efeito que os dados FILESTREAM têm sobre o desempenho do Mecanismo do Banco de Dados e 2) o pool do buffer SQL Server não é usado; portanto, a memória está disponível para processamento de consultas.
FILESTREAM oferece valor ideal em cenários nos quais o SharePoint é usado para armazenar grandes quantidades de dados de BLOB, como arquivos de vídeo, que aproveitarão as vantagens dos dados FILESTREAM ou BLOB que ultrapassarem 1MB.
Considerações especiais
FILESTREAM e Business Continuity Management
O espelhamento do banco de dados não suporta FILESTREAM, já que um grupo de arquivos do FILESTREAM não pode ser criado no servidor principal e o espelhamento do banco de dados não pode ser configurado para um banco de dados que contém grupos de arquivos do FILESTREAM. Se o fornecedor do FILESTREAM for usado para armazenar dados de BLOB localmente (dentro do mesmo banco de dados de conteúdo) o banco de dados não poderá ser configurado para espelhamento.
Se o fornecedor do FILESTREAM for configurado para armazenar os dados de BLOB em um banco de dados SQL separado ou quando estiver usando um repositório de BLOB de terceiros, o banco de dados de conteúdo poderá ser espelhado; no entanto, o espelhamento só se aplicará ao banco de dados de conteúdo, e não aos dados de BLOB. Os dados de BLOB precisam ser tratados separadamente e mantidos em sincronia com os metadados associados (banco de dados de conteúdo). Para bancos de dados de BLOB do FILESTREAM, isso pode ser feito por meio de envio de log.
Para conhecer as diferenças entre FILESTREAM e Repositório de BLOB Remoto do SQL Server, consulte também https://blogs.msdn.com/b/sqlrbs/archive/2009/11/18/sql-server-remote-blob-store-and-filestream-feature-comparison.aspx.
FILESTREAM e cache do Office Web Applications
A cache do Office Web Applications é usada pelos Web Applications Word e PowerPoint para criar uma versão de um documento solicitado para exibição no navegador, melhorando o desempenho e reduzindo o consumo em servidores ao fazer versões em cache de um documento ou apresentação disponíveis em casos nos quais há várias solicitações para o mesmo documento.
O cache do Office Web Applications ocorre em duas camadas distintas, no sistema de arquivos do servidor e dentro de um conjunto de sites "especializado" hospedado com base no aplicativo Web. Solicitações de documentos ou apresentações feitas por meio do Office Web Applications são atendidas por ambos os caches à medida que as imagens são renderizadas para consumo do cliente. Ambos os locais de cache são usados por todos os conjuntos de sites dentro de um aplicativo Web no qual os recursos do Office Web Applications estão ativados.
Bancos de dados de conteúdo que têm FILESTREAM configurado armazenarão as versões de cache do documento ou apresentação no local do provedor configurado. Recomenda-se configurar o cache do Office Web Applications em um banco de dados que não está configurado para FILESTREAM.
Configurando FILESTREAM com o SharePoint 2010
As instruções a seguir foram criadas para ser usadas em uma implantação de um servidor para fins de demonstração e implementa o provedor FILESTREAM local.
Habilitar FILESTREAM na instância de destino do SQL Server
1. No menu Iniciar, aponte para Todos os Programas, Microsoft SQL Server 2008 (R2) , Ferramentas de Configuração e clique em SQL Server Configuration Manager.
2. Na lista de serviços, clique com o botão direito do mouse em Serviços do SQL Server e clique em Abrir.
3. No snap-in SQL Server Configuration Manager, localize a instância do SQL Server no qual deseja habilitar FILESTREAM.
4. Clique com o botão direito do mouse na instância e clique em Propriedades.
5. Na caixa de diálogo Propriedades do SQL Server, clique na guia FILESTREAM.
6. Marque a caixa de seleção Habilitar FILESTREAM para acesso do Transact-SQL.
7. Se quiser ler e gravar dados FILESTREAM do Windows, clique em Habilitar FILESTREAM para acesso de fluxo de E/S de arquivo. Digite o nome do compartilhamento do Windows na caixa Nome de compartilhamento do Windows.
8. Se os clientes remotos precisarem acessar os dados FILESTREAM armazenados nesse compartilhamento, selecione Permitir que os clientes remotos tenham acesso de fluxo aos dados de FILESTREAM.
9. Clique em Aplicar.
10. Clique em Iniciar, Todos os Programas, Microsoft SQL Server 2008 (R2) e SQL Server Management Studio.
11. No SQL Server Management Studio, clique em Nova Consulta para exibir o Editor de Consultas.
12. No Editor de Consultas, digite o seguinte código Transact-SQL:
EXEC sp_configure filestream_access_level, 2
No Editor de Consultas, digite o seguinte código Transact-SQL:
RECONFIGURE
Provisionar o Repositório de Dados RBS
1. Clique em Iniciar, Todos os Programas, Microsoft SQL Server 2008 (R2) e SQL Server Management Studio.
2. Expanda Bancos de Dados.
3. Selecione o banco de dados de conteúdo para o qual deseja criar um repositório de BLOB e clique em Nova Consulta.
4. No SQL Server Management Studio, clique em Nova Consulta para exibir o Editor de Consultas.
5. No Editor de Consultas, digite o seguinte código Transact-SQL:
use [Nome do Banco de Dados]
if not exists (select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##')create master key encryption by password = N'Admin Key Password !2#4'
No Editor de Consultas, digite o seguinte código Transact-SQL:
use [Nome do Banco de Dados]
if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider')alter database [Nome do Banco de Dados] add filegroup RBSFilestreamProvider contains filestream
No Editor de Consultas, digite o seguinte código Transact-SQL:
use [Nome do Banco de Dados]
alter database [Nome do Banco de Dados] add file (name = RBSFilestreamFile, filename = 'c:\BlobStore') to filegroup RBSFilestreamProvider
Instalar o Microsoft SQL Server 2008 R2 Remote Blob Store
Fazer download do pacote x64 para Microsoft SQL Server 2008 R2 Remote Blob Store do Microsoft SQL Server 2008 R2 Feature Pack em https://www.microsoft.com/downloads/en/details.aspx?FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52&displaylang=en.
Abra um prompt de comando com permissões de Administrador e execute o seguinte comando para instalar RBS.MSI baixado na etapa anterior:
msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="<Database Name>" DBINSTANCE="<Instance Name>" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1
OBSERVAÇÃO
Especifique o caminho completo para RBS.MSI no estado acima, ou seja C:\Users\Administrator\Desktop\RBS.MSI. Substitua os valores de DBNAME e DBINSTANCE para corresponder ao seu ambiente.
Habilitar Remote BLOB Storage
1. No menu Iniciar, clique em Todos os Programas.
2. Clique em Produtos Microsoft SharePoint 2010.
3. Clique em Shell de Gerenciamento do SharePoint 2010.
4. No SharePoint 2010 Management Shell, digite a seguinte instrução do Windows PowerShell para definir o banco de dados de conteúdo a ser configurado:
$database=Get-SPContentDatabase –Identity “Database Name”
No SharePoint 2010 Management Shell, digite a seguinte instrução do Windows PowerShell para obter o objeto que tem as configurações que determinam como o banco de dados de conteúdo utiliza o Microsoft SQL Server Remote Blob Storage:
$rbs=$database.RemoteBlobStorageSettings
No SharePoint 2010 Management Shell, digite a seguinte instrução do Windows PowerShell para determinar se o RBS foi instalado para o banco de dados de conteúdo selecionado:
$rbs.Installed()
OBSERVAÇÃO
O resultado de $rbs.Installed() deve ser True; se o resultado for False, verifique se RBS.MSI foi instalado corretamente analisando rbs_install_log.txt. Verifique se a instrução de instalação estava sendo executada no SharePoint 2010 Management Shell, digite a seguinte instrução do Windows PowerShell para habilitar o RBS para o banco de dados de conteúdo selecionado:
$rbs.Enable()
No SharePoint 2010 Management Shell, digite as seguintes instruções do Windows PowerShell para definir o RBSprovider para o banco de dados de conteúdo selecionado:
$rbs.SetActiveProviderName($rbs.GetProviderNames()[0])
$rbs
OBSERVAÇÃO
O resultado de $rbs deve ser:
Tabela 1
Apêndice para a Tabela 1
Habilitado especifica se RBS foi habilitado ou não para o banco de dados de conteúdo selecionado.
ActiveProviderName é o nome do provedor do SQL Remote Blob Storage no qual novos arquivos serão armazenados. Será nulo se novos arquivos não forem armazenados usando-se o repositório SQL Remote Blob.
MinimumBlobStorageSize refere-se ao tamanho mínimo que um BLOB deve ter para ser considerado repositório RBS relevante, os dados BLOB que excederem MinimumBlobStorageSize especificado serão armazenados no repositório de dados RBS.
Dados de desempenho de FILESTREAM mostram dados de BLOB que excedem 1MB oferecem desempenho de fluxo mais eficiente. Consulte também https://msdn.microsoft.com/en-us/library/cc949109(SQL.100).aspx.
Para configurar MinimumBlobStorageSize:
1. No menu Iniciar, clique em Todos os Programas.
2. Clique em Produtos Microsoft SharePoint 2010.
3. Clique em Shell de Gerenciamento do SharePoint 2010.
4. No SharePoint 2010 Management Shell, digite as seguintes instruções do Windows PowerShell para configurar MinimumBlobStorageSize em 1MB:
$database = Get-SPContentDatabase “Nome do Banco de Dados”
$database.RemoteBlobStorageSettings.MinimumBlobStorageSize=1048576
$database.Update()
UpgradePersistedProperties especifica o conjunto de nomes e valores de campos que foram excluídos ou alterados.
Validar Instalação
Para validar a configuração de FILESTREAM e instalação do RBS:
1. Clique em Iniciar, Todos os Programas, Microsoft SQL Server 2008 (R2) e SQL Server Management Studio.
2. Expanda Bancos de Dados.
3. Selecione o banco de dados de conteúdo para o qual deseja criar um repositório de BLOB e clique em Nova Consulta.
4. No SQL Server Management Studio, clique em Nova Consulta para exibir o Editor de Consultas.
5. No Editor de Consultas, digite o seguinte código Transact-SQL:
USE [Nome do Banco de Dados]
SELECT * FROM dbo.DatabaseInformation
Confirme que as linhas RBSCollectionId e RBSProvider estão disponíveis.
Testar o RBS Data Store
1. Selecione a Biblioteca de Documentos desejada em um site no banco de dados de conteúdo configurado.
2. Fazer upload de um arquivo maior que 1 MB.
3. No computador que contém o repositório de dados RBS, clique em Iniciar e Computador.
4. Navegue para o diretório de repositório de dados RBS.
5. Navegue para a lista de arquivos e abra a pasta com data de modificação mais recente (diferente de $FSLOG). Nessa pasta, abra o arquivo com a data de modificação mais recente. Verifique se esse arquivo temo mesmo tamanho e conteúdo que o arquivo de upload. Caso não tenha, verifique se o RBS está instalado e habilitado corretamente.
A estrutura de diretórios do repositório de dados aparecerá semelhante a do diagrama abaixo.
OBSERVAÇÃO
Caso o erro "The URL '<Document Library>/File' is invalid. It may refer to a nonexistent file or folder, or refer to a valid file or folder that is not in the current Web" seja exibido no upload de documentos maiores que o configurado em MinimumBlobStorageSize, abra o SQL Server Configuration Manager e habilite Habilitar FILESTREAM para acesso de fluxo de E/S de arquivo e reinicie o serviço SQL Server (MSSQLSERVER).
Recursos Adicionais
- Visão geral do Remote BLOB Storage (SharePoint Foundation 2010)
- Planejar o Remote BLOB Storage (RBS) (SharePoint Foundation 2010)
- FILESTREAM Visão geral
- Como: Habilitar FILESTREAM
- Instalar e configurar Remote BLOB Storage (RBS) com o provedor de FILESTREAM (SharePoint Foundation 2010)
- Instalar e configurar Remote BLOB Storage (RBS) sem o provedor de FILESTREAM (SharePoint Foundation 2010)
- Definir um banco de dados de conteúdo para usar Remote BLOB Storage (RBS) (SharePoint Foundation 2010)
- Migrar conteúdo para dentro ou para fora do Remote BLOB Storage (RBS) (SharePoint Foundation 2010)
- Desabilitar Remote BLOB Storage (RBS) em um banco de dados de conteúdo (SharePoint Foundation 2010)
- Visão geral do Remote BLOB Storage (SharePoint Server 2010)
- Planejar o Remote BLOB Storage (RBS) (SharePoint Server 2010)
- Instalar e configurar Remote BLOB Storage (RBS) com o provedor de FILESTREAM (SharePoint Server 2010)
- Instalar e configurar Remote BLOB Storage (RBS) sem o provedor de FILESTREAM (SharePoint Server 2010)
- Definir um banco de dados de conteúdo para usar Remote BLOB Storage (RBS) (SharePoint Server 2010)
- Migrar conteúdo para dentro ou para fora do Remote BLOB Storage (RBS) (SharePoint Server 2010
- Manter o Remote BLOB Storage (RBS) (SharePoint Server 2010)
- Desabilitar Remote BLOB Storage (RBS) em um banco de dados de conteúdo (SharePoint Server 2010)
- Remote BLOB Storage (White Paper do SQL Server)
- Gerenciando dado não estruturados com SQL Server 2008
Categoria: Como fizemos; SharePoint 2010
Publicado em: 22/4/2011 9:00 AM
Esta é uma postagem de blog traduzida. Leia o artigo original sobre FILESTREAM with SharePoint 2010