
# storh

storh on itsenäinen PHP-tietovarasto, joka perustuu tiedostoihin: JSONC-dokumentteihin, vain lisäystä tukevaan segmentoituun lokiin ja vain lisäystä tukevaan jonoon. Se tallentaa tietueita UUIDv7-tunnuksilla, tukee virtaavia lukuja sekä kohdistin- ja aikavälikyselyitä ja käyttää atomisia tiedostojärjestelmätoimintoja tietokantapalvelimen sijaan.

Kutsuja antaa hakemiston. storh ei etsi sovelluksen polkuja, lue globaaleja vakioita eikä vaadi kehysadapteria.

## Tallennusmoottorit

- `DocStore` tallentaa jokaiselle tietueelle oman JSONC-tiedoston ja käyttää UUID-häntään perustuvia ositettuja polkuja. Sopii parhaiten tunnuksen perusteella tehtäviin yksittäishakuihin ja indeksoitujen kenttien kyselyihin.
- `SegmentedLog` lisää tietueet segmenttitiedostoihin JSON-riveinä, joiden etuliitteen suojaavat tavupituus ja tarkistussumma. Sopii parhaiten paljon lisäyksiä sisältäviin virtoihin, joita luetaan kohdistimella tai aikavälin perusteella.
- `Queue` lisää pysyviä työtehtävätapahtumia ja pitää jonon tilan muistissa. Sopii parhaiten pysyvään töiden jakeluun prosessien välillä.

Etkö tiedä, mikä sopii työkuormaasi? Katso [Tallennusmoottorin valinta](https://storh.inline0.dev/fi/docs/engines#choosing-an-engine) rinnakkaista vertailua varten.

`DocStore`, `SegmentedLog` ja `Queue` ovat toteutusluokkien `DocPerFileStore`, `SegmentedLogStore` ja `LogQueue` luokka-aliaksia, joten molemmat nimet viittaavat samaan luokkaan.

## Vaatimukset

- PHP 8.2 tai uudempi
- `ext-json`
- paikallinen tai liitetty tiedostojärjestelmä, joka tukee atomista uudelleennimeämistä hakemiston sisällä

## Seuraavaksi

- [Asennus](https://storh.inline0.dev/fi/docs/install)
- [Pika-aloitus](https://storh.inline0.dev/fi/docs/quick-start)
- [Tallennusmoottorit](https://storh.inline0.dev/fi/docs/engines)
- [Skaalaus ja rajoitukset](https://storh.inline0.dev/fi/docs/scaling-limits)
