
# storh

storh è un archivio dati autonomo PHP basato su file: documenti JSONC, un log segmentato append-only e una coda append-only. Memorizza record con ID UUIDv7, supporta letture in streaming e query tramite cursore o per intervallo temporale e usa operazioni atomiche sul filesystem invece di un server di database.

I chiamanti forniscono una directory. storh non rileva i percorsi dell'applicazione, non legge costanti globali e non richiede un adapter per framework.

## Motori

- `DocStore` memorizza un file JSONC per record, con percorsi suddivisi in partizioni in base ai primi due caratteri dell’ultimo gruppo dell’UUID.
  Ideale per letture puntuali per ID e query su campi indicizzati.
- `SegmentedLog` aggiunge record ai file di segmento come righe JSON protette da un prefisso con lunghezza in byte e checksum. Ideale per flussi con molte aggiunte e letture tramite cursore o per intervallo temporale.
- `Queue` aggiunge eventi di lavoro persistenti e mantiene lo stato della coda in memoria. Ideale
  per distribuire lavoro persistente tra processi.

Non sapete quale sia adatto al vostro carico di lavoro? Consultate
[Come scegliere un motore](https://storh.inline0.dev/it/docs/engines#choosing-an-engine) per un confronto
fianco a fianco.

`DocStore`, `SegmentedLog` e `Queue` sono alias di classe delle classi di implementazione `DocPerFileStore`, `SegmentedLogStore` e `LogQueue`,
quindi entrambi i nomi fanno riferimento alla stessa classe.

## Requisiti

- PHP 8.2 o successiva
- `ext-json`
- un filesystem locale o montato con semantica di rinomina atomica all'interno di una directory

## Prossime tappe

- [Installazione](https://storh.inline0.dev/it/docs/install)
- [Avvio rapido](https://storh.inline0.dev/it/docs/quick-start)
- [Motori](https://storh.inline0.dev/it/docs/engines)
- [Scalabilità e limiti](https://storh.inline0.dev/it/docs/scaling-limits)
