
# storh

storh to samodzielny magazyn danych PHP oparty na plikach: dokumenty JSONC, log segmentowany tylko do dopisywania oraz kolejka tylko do dopisywania. Przechowuje rekordy z identyfikatorami UUIDv7, obsługuje odczyt strumieniowy oraz zapytania kursorem lub według zakresu czasu, a zamiast serwera bazy danych korzysta z atomowych operacji systemu plików.

Wywołujący przekazują katalog. storh nie wykrywa ścieżek aplikacji, nie odczytuje stałych globalnych ani nie wymaga adaptera frameworka.

## Silniki

- `DocStore` przechowuje jeden plik JSONC na rekord, a ścieżki są partycjonowane według końcowych znaków UUID. Najlepiej sprawdza się przy odczytach pojedynczych rekordów według ID i zapytaniach o indeksowane pola.
- `SegmentedLog` dopisuje rekordy do plików segmentów jako wiersze JSON zabezpieczone prefiksem z długością w bajtach i sumą kontrolną. Najlepiej sprawdza się przy strumieniach intensywnie dopisywanych oraz odczytach kursorem i według zakresu czasu.
- `Queue` dopisuje trwałe zdarzenia zadań i przechowuje stan kolejki w pamięci. Najlepiej sprawdza się przy trwałym przekazywaniu pracy między procesami.

Nie wiesz, które rozwiązanie pasuje do Twojego obciążenia? Zobacz
[Wybór silnika](https://storh.inline0.dev/pl/docs/engines#choosing-an-engine), aby porównać je obok siebie.

`DocStore`, `SegmentedLog` i `Queue` to aliasy klas implementacyjnych `DocPerFileStore`, `SegmentedLogStore` i `LogQueue`, więc obie nazwy odnoszą się do tej samej klasy.

## Wymagania

- PHP 8.2 lub nowsze
- `ext-json`
- lokalny lub zamontowany system plików obsługujący semantykę atomowej zmiany nazwy w obrębie katalogu

## Co dalej

- [Instalacja](https://storh.inline0.dev/pl/docs/install)
- [Szybki start](https://storh.inline0.dev/pl/docs/quick-start)
- [Silniki](https://storh.inline0.dev/pl/docs/engines)
- [Skalowanie i limity](https://storh.inline0.dev/pl/docs/scaling-limits)
