
# storh

storh ist ein eigenständiger PHP-Datenspeicher, der auf Dateien basiert: JSONC-Dokumente, ein segmentiertes Protokoll, an das nur angehängt wird, und eine ebensolche Warteschlange. Er speichert Datensätze mit UUIDv7-IDs, unterstützt Streaming-Lesevorgänge sowie Abfragen mit Cursor oder Zeitbereich und verwendet atomare Dateisystemoperationen statt eines Datenbankservers.

Aufrufende geben ein Verzeichnis vor. storh ermittelt keine Anwendungspfade, liest keine globalen Konstanten und benötigt keinen Framework-Adapter.

## Engines

- `DocStore` speichert pro Datensatz eine JSONC-Datei mit nach den letzten UUID Zeichen aufgeteilten Pfaden. Ideal für direkte Lesezugriffe per ID und Abfragen über indizierte Felder.
- `SegmentedLog` hängt Datensätze als JSON-Zeilen mit einem Präfix aus Bytelänge und Prüfsumme an Segmentdateien an. Ideal für Streams mit vielen Anhängevorgängen und Lesezugriffen per Cursor oder Zeitbereich.
- `Queue` hängt dauerhafte Auftragsereignisse an und hält den Warteschlangenzustand im Arbeitsspeicher. Ideal für die dauerhafte Aufgabenverteilung zwischen Prozessen.

Du bist unsicher, welche Engine zu deiner Arbeitslast passt? Unter [Eine Engine auswählen](https://storh.inline0.dev/de/docs/engines#choosing-an-engine) findest du einen direkten Vergleich.

`DocStore`, `SegmentedLog` und `Queue` sind Klassenaliase der Implementierungsklassen `DocPerFileStore`, `SegmentedLogStore` und `LogQueue`. Beide Namen verweisen also auf dieselbe Klasse.

## Voraussetzungen

- PHP 8.2 oder höher
- `ext-json`
- ein lokales oder eingebundenes Dateisystem mit Semantik für atomare Umbenennungen innerhalb eines Verzeichnisses

## Was kommt als Nächstes

- [Installation](https://storh.inline0.dev/de/docs/install)
- [Schnellstart](https://storh.inline0.dev/de/docs/quick-start)
- [Engines](https://storh.inline0.dev/de/docs/engines)
- [Skalierung und Grenzen](https://storh.inline0.dev/de/docs/scaling-limits)
