
# storh

storh은 파일을 기반으로 구축된 독립형 PHP 데이터 저장소입니다. JSONC 문서, 추가 전용 분할 로그 및 추가 전용 큐를 제공합니다. 레코드는 UUIDv7 ID와 함께 저장하고 스트리밍 읽기, 커서 쿼리 및 시간 범위 쿼리를 지원하며, 데이터베이스 서버 대신 파일 시스템의 원자적 작업을 사용합니다.

호출자가 디렉터리를 지정합니다. storh은 애플리케이션 경로를 검색하거나 전역 상수를 읽지 않으며 프레임워크 어댑터도 필요하지 않습니다.

## 엔진

- `DocStore`은 레코드마다 JSONC 파일 하나를 저장하며 UUID의 마지막 그룹 첫 두 문자에 따라 경로를 샤딩합니다.
  ID별 개별 조회와 인덱스 필드 쿼리에 적합합니다.
- `SegmentedLog`은 레코드를 JSON 줄로 세그먼트 파일에 추가합니다. 각 줄은 바이트 길이와 체크섬 접두부로 보호됩니다.
  커서 읽기 및 시간 범위 읽기가 필요한 추가 위주 스트림에 적합합니다.
- `Queue`는 내구성 있는 작업 이벤트를 추가하고 큐 상태를 메모리에 유지합니다.
  프로세스 간에 작업을 내구성 있게 전달하는 데 적합합니다.

어떤 엔진이 워크로드에 적합한지 잘 모르시겠나요? 나란히 비교하려면 [엔진 선택하기](https://storh.inline0.dev/ko/docs/engines#choosing-an-engine)를 참조하세요.

`DocStore`, `SegmentedLog` 및 `Queue`는 구현 클래스인 `DocPerFileStore`, `SegmentedLogStore` 및 `LogQueue`의 클래스 별칭이므로 두 이름은 같은 클래스를 가리킵니다.

## 요구 사항

- PHP 8.2 이상
- `ext-json`
- 디렉터리 내에서 원자적 이름 변경을 지원하는 로컬 또는 마운트된 파일 시스템

## 다음 단계

- [설치](https://storh.inline0.dev/ko/docs/install)
- [빠른 시작](https://storh.inline0.dev/ko/docs/quick-start)
- [엔진](https://storh.inline0.dev/ko/docs/engines)
- [확장 및 제한](https://storh.inline0.dev/ko/docs/scaling-limits)
