storh
storhは、ファイルを基盤とする単独で使えるPHPデータストアです。JSONCドキュメント、追記専用のセグメント化ログ、追記専用キューを備えています。UUIDv7のIDを持つレコードを保存し、ストリーミング読み取り、カーソル検索、時間範囲検索に対応します。データベースサーバーの代わりに、アトミックなファイルシステム操作を使用します。
呼び出し側がディレクトリを指定します。storhはアプリケーションのパスを自動検出せず、グローバル定数を読み込まず、フレームワークアダプターも必要としません。
エンジン
DocStoreはレコードごとに1つのJSONCファイルをUUID末尾でシャーディングしたパスに保存します。IDによる点読み取りや、インデックス付きフィールド検索に適しています。SegmentedLogはレコードをセグメントファイルにJSON行として追記します。各行はバイト長とチェックサムのプレフィックスで保護されます。追記の多いストリームでのカーソル検索や時間範囲検索に適しています。Queueは永続ジョブイベントを追記し、キューの状態をメモリに保持します。プロセス間で永続的に作業を振り分ける用途に適しています。
どのエンジンが用途に合うか迷っていますか?横並びの比較はエンジンの選び方をご覧ください。
DocStore、SegmentedLog、Queueは、実装クラスDocPerFileStore、SegmentedLogStore、LogQueueのクラス別名です。そのため、どちらの名前も同じクラスを指します。
必要条件
- PHP 8.2以降
ext-json- ディレクトリ内でアトミックな名前変更が可能なローカルまたはマウント済みのファイルシステム