Перейти к содержимому

storh

storh — автономное хранилище данных на PHP на основе файлов: документы JSONC, сегментированный журнал с добавлением в конец и очередь с добавлением в конец. Оно хранит записи с идентификаторами UUIDv7, поддерживает потоковое чтение, запросы по курсору и временному диапазону, а также использует атомарные операции файловой системы вместо сервера базы данных.

Вызывающая сторона указывает каталог. storh не ищет пути приложения, не читает глобальные константы и не требует адаптера фреймворка.

Механизмы хранения

  • DocStore хранит отдельный файл JSONC для каждой записи, распределяя пути по каталогам по последним символам UUID. Лучше всего подходит для точечного чтения по идентификатору и запросов по индексированным полям.
  • SegmentedLog добавляет записи в файлы сегментов в виде строк JSON с префиксом длины в байтах и контрольной суммы. Лучше всего подходит для потоков с частым добавлением, чтением по курсору и за временной диапазон.
  • Queue добавляет долговечные события задач и хранит состояние очереди в памяти. Лучше всего подходит для надежной передачи задач между процессами.

Не уверены, какой вариант подойдет для вашей нагрузки? Сравните их бок о бок в разделе Выбор механизма хранения.

DocStore, SegmentedLog и Queue — псевдонимы классов для классов реализации DocPerFileStore, SegmentedLogStore и LogQueue, поэтому оба имени ссылаются на один и тот же класс.

Требования

  • PHP 8.2 или новее
  • ext-json
  • локальная или смонтированная файловая система с поддержкой атомарного переименования внутри каталога

Что читать дальше