Estrutura de diretório ideal para aplicativos da web
-
27-09-2019 - |
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.
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.