
# storh

storh е самостоятелно хранилище за PHP, изградено около файлове: документи JSONC, сегментиран журнал само за добавяне и опашка само за добавяне. То съхранява записи с ID-та UUIDv7, поддържа поточно четене и заявки с курсор или по времеви диапазон и използва атомарни операции с файловата система вместо сървър за бази данни.

Извикващият код задава директория. storh не открива пътища на приложението, не чете глобални константи и не изисква адаптер за рамка за разработка.

## Машини

- `DocStore` съхранява по един файл JSONC за запис, като пътищата се разпределят по последните знаци на UUID. Най-подходящ за директно четене по ID и заявки по индексирани полета.
- `SegmentedLog` добавя записи към файловете на сегментите като редове JSON, защитени с префикс за дължината в байтове и контролната сума. Най-подходящ за потоци с интензивно добавяне и четене с курсор или по времеви диапазон.
- `Queue` добавя трайни събития за задачи и поддържа състоянието на опашката в паметта. Най-подходящ за надеждно разпределяне на задачи между процеси.

Не сте сигурни коя машина отговаря на натоварването ви? Вижте сравнението едно до друго в [Избор на машина](https://storh.inline0.dev/bg/docs/engines#choosing-an-engine).

`DocStore`, `SegmentedLog` и `Queue` са псевдоними на класовете за класовете, които реализират функционалността: `DocPerFileStore`, `SegmentedLogStore` и `LogQueue`; и двете имена се отнасят до един и същ клас.

## Изисквания

- PHP 8.2 или по-нова версия
- `ext-json`
- локална или монтирана файлова система със семантика на атомарно преименуване в рамките на директория

## Какво следва

- [Инсталиране](https://storh.inline0.dev/bg/docs/install)
- [Бърз старт](https://storh.inline0.dev/bg/docs/quick-start)
- [Машини](https://storh.inline0.dev/bg/docs/engines)
- [Мащабиране и ограничения](https://storh.inline0.dev/bg/docs/scaling-limits)
