Pergunta

Estou prestes a criar um site baseado em usuários e precisarei armazenar fotos, documentos e outros dados para cada usuário.

Se eu levar um número bobo como 1 000 000 000 usuários, acredito que uma pasta com 1 000 000 000 não será a coisa mais rápida do mundo! Então eu estava pensando em criar algo como

1º nível: [AZ] 2º nível: [AZ] 3º nível: [AZ

Por isso Bobby estará em/b/o/b/por

Mas isso também significa que não será espalhado igual, porque haverá muito poucos usuários começando com AZ e muito mais com AM, S, L ...

Então, eu estava pensando em usar um ID de usuário como "000000000001", "000000000001" etc ...

1º nível: [000-999] 2º nível: [000-999] 3º nível: [000-999

Portanto, os dados do usuário 000000000001 serão armazenados em/dados/000/000/000/001, então certamente terei um máximo de 1000 pasta em cada nível.

O que vocês pensam sobre isso, o que eu devo fazer ou não?

O servidor estará executando o CentOS 5.4 com o EXT3 no RAID 1, se a E/S for muito ruim, provavelmente irei para um RAID 10.

Foi útil?

Solução

Uma função de hash fornece uma maneira de distribuir grandes quantidades de dados em uma estrutura facilmente pesquisável.

Veja esta pergunta relacionada: Por que usar hash para criar nomes de caminhos para grandes coleções de arquivos?

E também tente examinar os resultados do Google para Hash de diretório.

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