Quais são as consequências de ter muitos arquivos em um diretório em um sistema de arquivos ext4?

2

Minha tarefa é armazenar uma lista de JSONs no disco (sem usar qualquer banco de dados) e tenho estas opções:

  • Armazene-os em um único arquivo grande.

  • Armazene-os em arquivos separados, digitados por seus IDs.

Pessoalmente, prefiro a segunda opção, pois ela permite endereçar diretamente qualquer JSON por seu ID sem precisar tocar em nenhum outro JSON. No entanto, existem quase 0,1 a 1 milhão de entradas JSON e eu tenho medo das possíveis conseqüências negativas no sistema de arquivos subjacente (ext4 no meu caso):

  • Isso vai ultrapassar os limites do sistema de arquivos sobre o número de arquivos (em um diretório ou em um sistema de arquivos inteiro)?

  • Isso causará lentidão durante a recuperação de um ID específico?

    Para ser mais específico, acredito que a lista de arquivos em um diretório seja mantida pela estrutura de inode do diretório, mas não tenho certeza de quais estruturas de dados (lista ou mapa) ele usa para manter a lista de arquivos. Existe algum ganho de desempenho na pesquisa se eu usar uma hierarquia de diretórios? Por exemplo, coloque 0123456789.json em root/01/0123456789.json em vez de root/0123456789.json ?

por Cyker 22.11.2016 / 23:54

1 resposta

3

Ter 1 milhão de arquivos em um único diretório desaceleraria as coisas, mas também analisaria um JSON agregado com 1 milhão de entradas. Sua melhor aposta é de fato usar diretórios hashed, mas você provavelmente quer ir a dois níveis de profundidade, em vez de apenas um. Ou seja, coloque 0123456789.json em root/0/01/0123456789.json e 987654321.json em root/9/98/987654321.json .

    
por 23.11.2016 / 00:05