
# storh

storh é um armazenamento de dados independente PHP baseado em arquivos: documentos JSONC, um log segmentado somente de acréscimo e uma fila também somente de acréscimo. Ele armazena registros com IDs UUIDv7, oferece leituras em fluxo e consultas por cursor ou intervalo de tempo e usa operações atômicas do sistema de arquivos em vez de um servidor de banco de dados.

Quem chama fornece um diretório. storh não descobre caminhos do aplicativo, não lê
constantes globais nem exige um adaptador de framework.

## Mecanismos

- `DocStore` armazena um arquivo JSONC por registro, com caminhos particionados por caracteres do grupo final do UUID. Ideal para leituras pontuais por ID e consultas por campos indexados.
- `SegmentedLog` acrescenta registros aos arquivos de segmento como linhas JSON protegidas por um prefixo de tamanho em bytes e checksum. Ideal para fluxos com muitas inserções e leituras por cursor e intervalo de tempo.
- `Queue` acrescenta eventos duráveis de tarefas e mantém o estado da fila na memória. Ideal para distribuir tarefas duráveis entre processos.

Não sabe qual deles atende à sua carga de trabalho? Consulte
[Como escolher um mecanismo](https://storh.inline0.dev/pt/docs/engines#choosing-an-engine) para uma comparação lado a lado.

`DocStore`, `SegmentedLog` e `Queue` são aliases de classe das
classes de implementação `DocPerFileStore`, `SegmentedLogStore` e `LogQueue`,
então ambos os nomes se referem à mesma classe.

## Requisitos

- PHP 8.2 ou posterior
- `ext-json`
- um sistema de arquivos local ou montado com semântica de renomeação atômica dentro de um diretório

## Próximos passos

- [Instalação](https://storh.inline0.dev/pt/docs/install)
- [Início rápido](https://storh.inline0.dev/pt/docs/quick-start)
- [Mecanismos](https://storh.inline0.dev/pt/docs/engines)
- [Escalabilidade e limites](https://storh.inline0.dev/pt/docs/scaling-limits)
