Pular para o conteúdo

Escalabilidade e limites

storh é um armazenamento que prioriza arquivos, não um mecanismo de consultas relacionais. Os limites práticos, com números de referência dos benchmarks (50k registros, Apple M1 Pro):

  • O acesso pontual é praticamente ilimitado quando o sistema de arquivos consegue lidar com a quantidade de arquivos e a coleção usa fragmentação pelas UUID últimas letras. Uma leitura pontual leva alguns microssegundos; as gravações duráveis de um único registro são limitadas por fsync, chegando a alguns milhares por segundo.
  • Varreduras do log segmentado, leituras por cursor e leituras por intervalo de tempo funcionam bem até cerca de 1M de registros quando os tamanhos dos segmentos são configurados para a carga de trabalho. Inserções em lote chegam a dezenas de milhares de registros por segundo; a recuperação de finais incompletos reproduz centenas de milhares de registros por segundo na reabertura.
  • As operações da fila acrescentam eventos compactos a um único log durável, então enfileirar, reivindicar, concluir, reenfileirar e limpar evitam a criação e remoção constante de arquivos por tarefa nos diretórios. Reivindicar e concluir em lote amortizam os custos de bloqueio e fsync em lotes inteiros.
  • As varreduras de campos arquivo por arquivo em DocStore ficam lentas acima de cerca de 10k registros, pois cada varredura correspondente precisa percorrer arquivos individuais. Declare índices para os campos usados nos filtros; as consultas de igualdade indexadas respondem em cerca de um milissegundo, independentemente do tamanho da coleção.
  • storh não serve para consultas relacionais ad hoc, junções, filtros intensivos em índices secundários ou varreduras analíticas em muitos campos. Envie as coleções para um espelho SQL quando precisar desses padrões de leitura; mantenha o sistema de registro em um banco de dados real quando precisar de transações com vários registros.

Use DocStore quando predominarem as leituras pontuais, SegmentedLog quando predominarem as inserções e leituras ordenadas e Queue para distribuição simples de tarefas duráveis. Consulte Como escolher um mecanismo para uma comparação lado a lado.