
# Množični podatki

Metode `*Many` sprejmejo polja in vrnejo ustvarjene zapise ali ID-je; metode `*Stream` sprejmejo poljubno iterabilno zbirko, ničesar ne hranijo v pomnilniku in vrnejo število. Za opravila uvoza uporabite pretoke, kadar je vhod večji od polja PHP, ki ga želite hraniti v pomnilniku. Množične metode zaklenejo zbirko samo enkrat, pri dnevniku in čakalni vrsti pa pred sinhronizacijo z diskom združijo več zapisov, zato so njihovi množični zapisi na zapis večkrat hitrejši od klicev za vsak posamezen zapis. Množični zapisi `DocStore` vseeno sinhronizirajo vsako datoteko zapisa; prihranijo ponavljajoče se zaklepanje, ne pa sinhronizacij z diskom.

Množični API-ji DocStore:

```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');
```

Vrstice JSONL so posamezni objekti v vsaki vrstici, bodisi `{"id": "...", "data": {...}}` bodisi goli podatkovni objekt (ob uvozu se ustvari ID). Vrstice lahko vsebujejo izrecne ID-je, zato se zbirka pri izvozu in uvozu ohrani natančno enaka.

Množični API-ji SegmentedLog:

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

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

Množični API-ji Queue:

```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));
```

Izbirne particije shranijo segmente dnevnika v imenik za posamezen dan ali mesec (`events/partitions/2026-07-05/`), zato je mogoče starejša obdobja arhivirati ali izbrisati kot celotne imenike:

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

Pravilnik hrambe izbriše zapise dnevnika, starejše od mejnega datuma, in strne sproščeni prostor; `purgeDone` iz pomnilnika odstrani dokončana opravila čakalne vrste:

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