O local de armazenamento, SQL Server ou sistema de arquivos, resultaria em melhor desempenho em salvar imagens TIFF?

StackOverflow https://stackoverflow.com/questions/1234551

Pergunta

Nosso sistema precisa armazenar imagens TIFF de ~ 3k de tamanho. Recebemos ~ 300 imagens em um determinado momento e necessidade de rapidamente processá-los. Uma vez ~ 100.000 imagens são recebidas, as imagens são transferidos para fora do nosso sistema para outro sistema de arquivo ou purgado.

Eu estou olhando para um melhor desempenho em relação ao inicial poupar dos arquivos de imagem. A tarefa de transferir as imagens para o arquivo é menor desempenho crítico.

O local de armazenamento, SQL Server ou sistema de arquivos, resultaria em melhor desempenho em salvar imagens TIFF?

Existem outras considerações ou armadilhas para estar ciente de?

Foi útil?

Solução

armazenar as imagens no sistema de arquivos lhe dará um melhor desempenho. Você só precisa colocar uma entrada em uma tabela de banco de dados relevantes para os anexos de imagem tiff - e usar isso para obter o caminho da imagem no sistema de arquivos.

Você pode querer ainda mais o desempenho impulso hospedando as imagens no servidor web - IIS (se relevante) e ter seus aplicativos cliente (novamente se relevante) recuperá-los diretamente frmo lá em vez

.

Outras dicas

Na minha experiência, SQL Server tem sido decente com armazenar blobs no banco de dados. Enquanto eu seguir as melhores práticas relacionadas com consultas, normalização, etc. Eu descobri-los a trabalhar bem.

Por alguma razão, eu pessoalmente não deseja armazenar enorme PDF e DOC e arquivos JPG no meu banco de dados, mas, em seguida, que é exatamente o Microsoft SharePoint faz, e faz bem.

Eu definitivamente ponderar a possibilidade de bolhas no meu db.

A versão SQL Server 2008 tem um novo recurso chamado FILESTREAM. Parte de sua documentação também tem uma seção sobre melhores práticas , em que o estado de MS pessoas que FILESTREAM deve entrar em jogo se os objetos BLOB são tipicamente maiores 1 MB.

Essa página estados MSDN:

Quando usar FILESTREAM Se o seguintes condições forem verdadeiras, você deve considerar o uso FILESTREAM: - Objetos que estão sendo armazenados são, em média, maior do que 1 MB. Para objectos mais pequenos, armazenamento varbinary (max) na base de dados BLOBs muitas vezes proporciona uma melhor transmissão desempenho.

Então eu acho que com um 3 KB TIFF, você poderia armazenar esse bem dentro de um campo de VARBINARY (MAX) em sua tabela de SQL Server 2005. Uma vez que é ainda menor do que o tamanho 8k página para SQL Server, que vai encaixar muito bem!

Você também pode querer considerar colocar os seus BLOBs em sua própria mesa e referenciar a sua linha de dados "base" de lá. Dessa forma, se você só precisa consultar os dados de base (seus ints, VARCHAR etc.), sua consulta não será atolados por BLOBs sendo armazenados misturado com outras coisas.

Marc

O sistema de catálogo por satélite do INPE / Brasil armazena uma referência de imagens TIFF armazenados no sistema de arquivos. Mas as imagens são um pouco maiores - +/- 100 MB. Se o arquivo deve ser exibido no navegador, o código PHP lê o conteúdo tiff em disco e desenhá-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top