DynamoDB based konserve backend.
DynamoDB based konserve backend.
(batch-get-items client table-name store-keys consistent-read?)Fetch up to 100 distinct keys, retrying partial responses with bounded backoff. Returns an aggregated BatchGetItemResponse. Exhaustion throws rather than presenting unprocessed keys as missing.
Fetch up to 100 distinct keys, retrying partial responses with bounded backoff. Returns an aggregated BatchGetItemResponse. Exhaustion throws rather than presenting unprocessed keys as missing.
(batch-write-fragments! client table items)Stage at most 25 immutable 300 KiB fragments. Even with base64 and envelope overhead this stays below BatchWriteItem's 16 MiB wire limit. Retry only UnprocessedItems; callers must not publish manifests until this succeeds.
Stage at most 25 immutable 300 KiB fragments. Even with base64 and envelope overhead this stays below BatchWriteItem's 16 MiB wire limit. Retry only UnprocessedItems; callers must not publish manifests until this succeeds.
(create-dynamodb-table client table-name {:keys [read-capacity write-capacity]})(dynamodb-client opts)Creates a new DynamoDB client using the provided options, with explicit credential handling.
Creates a new DynamoDB client using the provided options, with explicit credential handling.
(put-item-conditional client table-name item expected-meta)PutItem only if the stored Meta attribute is still expected-meta — or, when
that is ::absent, only if the item does not exist. True on success, false
when DynamoDB refuses.
DynamoDB evaluates the condition itself, atomically with the write, which is
what makes this backing's guarantee :global: it holds against every writer
anywhere, not merely those sharing a filesystem or a heap.
The condition compares the META attribute rather than a separate version column. konserve's revision lives inside the serialized metadata, so the meta bytes ARE the revision as far as this item is concerned — and comparing them needs no schema change, no second attribute to keep in step, and no migration for existing tables. Meta is small; the value is not compared and not sent.
Expression attribute NAMES for both Key and Meta: KEY is a DynamoDB
reserved word, and a literal in an expression would be rejected.
PutItem only if the stored `Meta` attribute is still `expected-meta` — or, when that is `::absent`, only if the item does not exist. True on success, false when DynamoDB refuses. DynamoDB evaluates the condition itself, atomically with the write, which is what makes this backing's guarantee `:global`: it holds against every writer anywhere, not merely those sharing a filesystem or a heap. The condition compares the META attribute rather than a separate version column. konserve's revision lives inside the serialized metadata, so the meta bytes ARE the revision as far as this item is concerned — and comparing them needs no schema change, no second attribute to keep in step, and no migration for existing tables. Meta is small; the value is not compared and not sent. Expression attribute NAMES for both `Key` and `Meta`: `KEY` is a DynamoDB reserved word, and a literal in an expression would be rejected.
(release store env)Release the store connection.
Release the store connection.
(scan-table client table-name)(scan-table client table-name start-key)(scan-table client table-name start-key consistent-read?)(transact-write-items client transact-items)Execute multiple write operations in a single, atomic transaction. Limited to 100 items per transaction by DynamoDB.
Execute multiple write operations in a single, atomic transaction. Limited to 100 items per transaction by DynamoDB.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |