
# storh

storh je samostojna shramba PHP, zasnovana na datotekah: dokumenti JSONC, segmentiran dnevnik, v katerega se samo dodaja, in čakalna vrsta, v katero se samo dodaja. Zapise hrani z ID-ji UUIDv7, podpira pretočno branje ter poizvedbe s kazalcem ali časovnim razponom in uporablja atomske operacije datotečnega sistema namesto strežnika podatkovne baze.

Klicatelji podajo imenik. storh sam ne poišče poti aplikacije, ne bere globalnih konstant in ne zahteva prilagodilnika za ogrodje.

## Mehanizmi

- `DocStore` shrani eno datoteko JSONC za vsak zapis na poti, razdeljeni po zadnjih znakih UUID.
  Najprimernejši je za branje po posameznih ID-jih in poizvedbe po indeksiranih poljih.
- `SegmentedLog` dodaja zapise v datoteke segmentov kot vrstice JSON, zaščitene s predpono z dolžino v bajtih in kontrolno vsoto. Najprimernejši je za pretoke z veliko dodajanji ter branje s kazalcem in po časovnem razponu.
- `Queue` dodaja trajne dogodke opravil in hrani stanje čakalne vrste v pomnilniku. Najprimernejši je za trajno razpošiljanje opravil med procesi.

Niste prepričani, kateri ustreza vaši delovni obremenitvi? Oglejte si [Izbira mehanizma](https://storh.inline0.dev/sl/docs/engines#choosing-an-engine) za vzporedno primerjavo.

`DocStore`, `SegmentedLog` in `Queue` so vzdevki razredov za izvedbene razrede `DocPerFileStore`, `SegmentedLogStore` in `LogQueue`, zato se obe imeni nanašata na isti razred.

## Zahteve

- PHP 8.2 ali novejši
- `ext-json`
- lokalni ali priklopljeni datotečni sistem s semantiko atomskega preimenovanja znotraj imenika

## Kam naprej

- [Namestitev](https://storh.inline0.dev/sl/docs/install)
- [Hitri začetek](https://storh.inline0.dev/sl/docs/quick-start)
- [Mehanizmi](https://storh.inline0.dev/sl/docs/engines)
- [Prilagajanje obsegu in omejitve](https://storh.inline0.dev/sl/docs/scaling-limits)
