You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Abstract supertype for all blobstore implementations.
5
+
6
+
# Usage
7
+
8
+
Subtypes of `AbstractBlobstore{T}` must implement the required interface for blob storage and retrieval, such as:
9
+
10
+
- `add!(store, blobId, blob)`: Add a new blob to the store.
11
+
- `get(store, blobId)`: Retrieve a blob by its ID.
12
+
- `list(store)`: List all blob IDs in the store.
13
+
14
+
The parameter `T` represents the type of blobs stored (e.g., `Vector{UInt8}` or a custom `Blob` type).
15
+
16
+
See concrete implementations for details.
17
+
18
+
Design Notes
19
+
- `blobId` is not considered unique across blobstores with different labels only within a single blobstore.
20
+
- We cannot guarantee that `blobId` is unique across different blobstores with the same label and this is up to the end user.
21
+
- Within a single blobstore `addBlob!` will fail if there is a UUID collision.
22
+
- TODO: We should consider using uuid7 for `blobId`s (requires jl v1.12).
23
+
- `Blobstrores`are identified by a `label::Symbol`, which allows for multiple blobstores to coexist in the same system.
24
+
25
+
TODO: If we want to make the `blobId`=>Blob pair immutable:
26
+
- We can use the tombstone pattern to mark a blob as deleted. See FolderStore in PR#TODO.
27
+
28
+
Design goal: all `Blobstore`s with the same `label` can contain the same `blobId`=>`Blob` pair and the blobs should be identical since they are immutable.
0 commit comments