Pergunta

Eu tenho uma ideia para uma aplicação simples que irá monitorar um grupo de pastas, índice de quaisquer arquivos que encontrar.Gui vai permitir-me rapidamente a marca de novos arquivos e movê-los em um único banco de dados para armazenamento e também fornece um mecanismo simples para consultar o db por marca, nome, tipo de ficheiro e a data.No momento tenho cerca de mais de 100 GB de arquivos em um par de discos rígidos removíveis, o banco de dados terá que ser pelo menos tão grande.Se possível, eu gostaria de suporte de pesquisa de texto completo do binário incorporado e documentos de texto.Este será um único aplicativo de usuário.

Não tentar iniciar um DB de guerra, mas o que abrir o banco de dados de origem está indo para o trabalho o melhor para mim?Eu tenho certeza que SQLLite está fora da mesa, mas eu poderia estar errado.

Foi útil?

Solução

Eu ainda estou pesquisando esta opção para um dos meus projetos, mas O CouchDB pode valer a pena uma olhada.

Outras dicas

Por que armazenar os arquivos no banco de dados?Simplesmente armazenar seus meta-dados e um nome de arquivo.Se você precisa copiá-los para um novo local, por algum motivo, acabei de fazer isso como um ficheiro de cópia do sistema.

Uma vez que você remover o conteúdo do arquivo, em seguida, competentes da base de dados será capaz de lidar com os meta-dados por algumas centenas de milhares de arquivos.

A minha preferência seria para armazenar o documento com os metadados.Uma razão, é integridade relacional.Você não pode facilmente mover os arquivos ou modificar os arquivos sem a ação a ser negociado pela db.Estou certo de que posso lidar com esses problemas, mas não é tão limpo como eu gostaria e minha experiência tem sido que a maioria dos fornecedores pode lidar com grandes quantidades de dados binários no banco de dados nos dias de hoje.Eu acho que eu estava me perguntando se o PostgreSQL ou MySQL tem óbvias vantagens nessas áreas, eu sou principalmente familiarizado com o Oracle.De qualquer maneira, obrigado pela resposta, se o DB sabe onde o arquivo externo é também será fácil para colocar o arquivo em uma data posterior, se eu quiser.Outro aspecto da questão, no caso, um banco de dados é mais fácil de trabalhar quando usando Python.Eu estou supondo que é uma lavagem.

Eu sempre odeio a resposta "não", mas você seria melhor fora de indexação com algo como o Lucene (PyLucene).Que e armazenar os caminhos no banco de dados, ao invés de incluir o conteúdo do arquivo é quase sempre recomendado.

Para adicionar a isso, nenhum desses mecanismos de banco de dados irá armazenar LOBs em separado dataspace (eles vão ser incorporados na tabela de dados do espaço), de modo que qualquer desses mecanismos deve realizar quase igualmente bem (bem, exceto sqllite).Você precisa mover para Informix, DB2, SQLServer ou outros para obter esse tipo de objeto binário de manipulação.

Praticamente qualquer um deles iria funcionar (mesmo que SQLLite não foi feito para ser usado em simultâneo ambiente multi-utilizador, o que pode ser um problema...) desde que você não deseja indexar o conteúdo real dos arquivos.

O único fator limitante é o máximo "pacote" do tamanho do dado DB (por pacote estou me referindo a uma consulta/resposta).Normalmente, estes limites são de cerca de 2MB, o que significa que os arquivos tem que ser menor que 2MB.Claro que você pode aumentar este limite, mas todo o processo é bastante ineficiente, uma vez que, por exemplo, para inserir um arquivo, você teria que:

  • Ler o arquivo inteiro na memória
  • Transformar o arquivo em uma consulta (o que geralmente significa hex codificação - lo-assim, duplicando o tamanho desde o início)
  • Executar a consulta gerada (que significa - para o banco de dados - o que ela tem para analisá-lo)

Eu iria com um simples banco de dados e os arquivos associados armazenados usando uma convenção de nomenclatura que faz com que seja fácil encontrá-las (por exemplo, com base na chave primária).É claro que este projeto não é "puro", mas ela vai fazer muito melhor e também é mais fácil de usar.

por que você está desperdiçando tempo imita algo que o sistema de arquivos deve ser capaz de lidar?mais espaço de armazenamento + grep é a sua resposta.

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