
# Hulgiandmed

`*Many` meetodid võtavad massiive ja tagastavad loodud kirjed või ID-d; meetodid `*Stream` võtavad mis tahes itereeritava objekti, ei hoia midagi mälus ja tagastavad arvu. Kasutage vooge sisestustööde puhul, mille sisend on suurem, kui soovite hoida ühe PHP massiivina. Hulgimeetodid lukustavad kogu korra ning logi ja järjekorra puhul puhverdatakse ühe fsync-i kohta mitu kirjet, mistõttu on hulgikirjutused kirje kohta mitu korda kiiremad kui ühekaupa tehtavad kutsed. `DocStore` hulgikirjutused sünkroonivad siiski iga kirjefaili eraldi; need vähendavad luku korduvat kasutamist, mitte fsync-ide arvu.

DocStore'i hulgiliidesed:

```php
$records = $docs->putMany([
    ['slug' => 'home', 'kind' => 'page'],
    ['slug' => 'about', 'kind' => 'page'],
]);

$count = $docs->putStream($largeIterable);

$docs->exportJsonl(__DIR__ . '/pages.jsonl');
$docs->importJsonl(__DIR__ . '/pages.jsonl');
```

JSONL read on üks objekt rea kohta, kas `{"id": "...", "data": {...}}` kujul või
lihtsalt andmeobjektina (importimisel luuakse ID). Ridadel võivad olla selgesõnalised
ID-d, nii et eksport ja import taastavad kogu täpselt.

SegmentedLogi hulgiliidesed:

```php
$log->appendMany([
    ['type' => 'page.saved'],
    ['type' => 'page.rendered'],
]);

$log->appendStream($largeIterable);
```

Queue'i hulgiliidesed:

```php
$queue->enqueueMany([
    ['task' => 'render', 'pageId' => $home->id()],
    ['task' => 'notify', 'pageId' => $home->id()],
]);

$jobs = $queue->claimMany(100);
$queue->completeMany(array_map(fn ($job) => $job->id(), $jobs));
```

Valikulised partitsioonid paigutavad logi segmendid päeva- või kuupõhisesse kataloogi
(`events/partitions/2026-07-05/`), et vanemaid perioode saaks arhiveerida
või tervete kataloogidena kustutada:

```php
$daily = new Storh\SegmentedLog($root, 'events', partition: 'daily');
$monthly = new Storh\SegmentedLog($root, 'events', partition: 'monthly');
```

Säilitustähtaeg kustutab lõppkuupäevast vanemad logikirjed ja tihendab vabastatud
ruumi; `purgeDone` eemaldab lõpetatud järjekorratööd mälust:

```php
$deleted = $log->retain()->olderThanDays(90)->compact();
$queue->purgeDone(olderThanSeconds: 86400);
```
