Por que usar arquivos binários para empilhar versões diferentes em DMSs?

5

Eu usei Liferay e Alfresco tentando usá-los como o Sistema de Gerenciamento de Documentos para uma intranet.

Eu notei o seguinte:

  • Eles usam o sistema de arquivos e o banco de dados para armazenar arquivos
  • Eles usam um GUID para nomear o arquivo no sistema de arquivos e esse GUID é usado como um Id no banco de dados.
  • O arquivo com o nome GUID é um arquivo binário
  • O arquivo binário chamado GUID armazena todas as versões de um determinado arquivo
  • O caminho para o arquivo no DMS não corresponde ao do arquivo sistema
  • O URL faz referência ao GUID quando um determinado arquivo é solicitado

O que eu quero saber é por que isso é e qual seria a melhor maneira de fazer isso. Tipo, como você criaria o arquivo binário (zip?), E quais partes você manteria no arquivo binário e que partes você armazenaria no banco de dados (meta-dados, caminho?).

Estou assumindo alguns dos benefícios de fazer isso assim. Como tendo o mesmo URL para um arquivo, independentemente do caminho atual do documento. E ter apenas um arquivo, mesmo que o arquivo tenha mudado de nome ao longo do tempo.

    
por edgarator 12.07.2012 / 09:40
fonte

1 resposta

2

Armazenar blocos binários grandes como arquivos é normalmente mais eficiente, em seguida, armazenar BLOBs grandes em um banco de dados. Depende.

Os GUIDs têm a vantagem de você poder criar um aleatoriamente e usá-lo sem depender de algum provedor de identidade. Usar uma ID baseada em sementes gerada em um DBMS exigiria que você primeiro acessasse o banco de dados antes de gravar um arquivo em disco, com um GUID a ordem não importava.

As revisões do documento podem se encaixar perfeitamente em um modelo de acréscimo. Ele pode continuar adicionando revisões ao arquivo sem causar muita reescrita. Ele também permite armazenamento inteligente e apenas o armazenamento de deltas que vão de revisão para revisão, semelhante ao que um repositório de controle de versão faria. Caso contrário, usar a compactação também pode fazer uma diferença significativa em comparação ao armazenamento das revisões em seu próprio arquivo.

Também pode fazer isso para evitar a criação de muitos arquivos no disco, o que, por sua vez, pode ter um impacto negativo no desempenho. Copiar em torno de diretórios ou fazer backups de diretórios com uma quantidade enorme de arquivos pequenos pode ser problemático e lento.

Talvez você não deva olhar os arquivos como "arquivos", são apenas dados. O GUID permite a recuperação. Colocá-lo no nome do arquivo permite que o sistema de arquivos ajude a pegá-lo.

Você poderia fazer sem um banco de dados, você pode importar algum trabalho que um DB já faz por você. Em uma abordagem híbrida, normalmente colocaria coisas no banco de dados em que eu consultaria (por exemplo, "Quais documentos estão no caminho X?"). Isso evitaria ter que criar meus próprios índices e tal em torno do repositório baseado em arquivos.

    
por 08.08.2012 / 19:48
fonte