
# storh

storhは、ファイルを基盤とする単独で使えるPHPデータストアです。JSONCドキュメント、追記専用のセグメント化ログ、追記専用キューを備えています。UUIDv7のIDを持つレコードを保存し、ストリーミング読み取り、カーソル検索、時間範囲検索に対応します。データベースサーバーの代わりに、アトミックなファイルシステム操作を使用します。

呼び出し側がディレクトリを指定します。storhはアプリケーションのパスを自動検出せず、グローバル定数を読み込まず、フレームワークアダプターも必要としません。

## エンジン

- `DocStore`はレコードごとに1つのJSONCファイルをUUID末尾でシャーディングしたパスに保存します。IDによる点読み取りや、インデックス付きフィールド検索に適しています。
- `SegmentedLog`はレコードをセグメントファイルにJSON行として追記します。各行はバイト長とチェックサムのプレフィックスで保護されます。追記の多いストリームでのカーソル検索や時間範囲検索に適しています。
- `Queue`は永続ジョブイベントを追記し、キューの状態をメモリに保持します。プロセス間で永続的に作業を振り分ける用途に適しています。

どのエンジンが用途に合うか迷っていますか？横並びの比較は[エンジンの選び方](https://storh.inline0.dev/ja/docs/engines#choosing-an-engine)をご覧ください。

`DocStore`、`SegmentedLog`、`Queue`は、実装クラス`DocPerFileStore`、`SegmentedLogStore`、`LogQueue`のクラス別名です。そのため、どちらの名前も同じクラスを指します。

## 必要条件

- PHP 8.2以降
- `ext-json`
- ディレクトリ内でアトミックな名前変更が可能なローカルまたはマウント済みのファイルシステム

## 次に読むページ

- [インストール](https://storh.inline0.dev/ja/docs/install)
- [クイックスタート](https://storh.inline0.dev/ja/docs/quick-start)
- [エンジン](https://storh.inline0.dev/ja/docs/engines)
- [スケーリングと制限](https://storh.inline0.dev/ja/docs/scaling-limits)
