Search Shortcut cmd + k | ctrl + k
duckdb_object_storage

Store writable DuckDB databases in local or S3-compatible object storage through SlateDB

Maintainer(s): dentiny

Compatibility Matrix

This table covers all DuckDB releases that have not reached end-of-life, including LTS releases, and shows the 2 most recent patch releases of each. Older patch releases are not listed, but the extension may be available for them as well.

Platform 1.4.4 1.4.5 1.5.5 1.5.6
Linux AMD64
Linux ARM64
macOS AMD64
macOS ARM64
Windows AMD64
Windows ARM64
WebAssembly

Installing and Loading

INSTALL duckdb_object_storage FROM community;
LOAD duckdb_object_storage;

Example

INSTALL duckdb_object_storage FROM community;
LOAD duckdb_object_storage;

ATTACH 'duckdb_objfs://database.db' AS object_db;
CREATE TABLE object_db.items(i INTEGER);
INSERT INTO object_db.items VALUES (1), (2);
CHECKPOINT object_db;

SELECT * FROM object_db.items;

About duckdb_object_storage

duckdb_object_storage provides a DuckDB virtual filesystem backed by SlateDB. A native DuckDB database, including the files required for WAL recovery, can be stored through the duckdb_objfs:// URI scheme.

The default backend stores SlateDB objects on the local filesystem:

SET duckdb_objfs_root = '/var/lib/duckdb-objfs';
ATTACH 'duckdb_objfs://analytics.db' AS analytics;

An in-memory backend is available for testing:

SET duckdb_objfs_backend = 'memory';
ATTACH 'duckdb_objfs://temporary.db' AS temporary;

For S3 and S3-compatible services, credentials and endpoint options are resolved through DuckDB's Secret Manager:

INSTALL cache_httpfs FROM community;
LOAD cache_httpfs;

CREATE SECRET duckdb_objfs_s3 (
  TYPE S3,
  PROVIDER credential_chain,
  REGION 'us-east-1',
  SCOPE 's3://my-bucket/duckdb-data'
);

SET duckdb_objfs_backend = 's3';
SET duckdb_objfs_bucket = 'my-bucket';
SET duckdb_objfs_root = 'duckdb-data';
ATTACH 'duckdb_objfs://analytics.db' AS analytics;

The extension supports configurable in-memory and persistent local SST caches, cache statistics, OpenDAL I/O statistics, read-only attachments, and multiple read-only processes alongside a single writer.

Added Functions

function_name function_type description comment examples
duckdb_objfs_attach_mapped_database pragma NULL NULL  
duckdb_objfs_cache_stats table NULL NULL  
duckdb_objfs_io_stats table NULL NULL  

Overloaded Functions

This extension does not add any function overloads.

Added Types

This extension does not add any types.

Added Settings

name description input_type scope aliases
duckdb_objfs_backend Storage backend: s3, local, or memory VARCHAR GLOBAL []
duckdb_objfs_bucket S3 bucket used by the DuckDB object filesystem VARCHAR GLOBAL []
duckdb_objfs_cache_shards In-memory cache shard count; zero selects the CPU count UBIGINT GLOBAL []
duckdb_objfs_memory_cache_size Foyer data-block cache capacity in bytes UBIGINT GLOBAL []
duckdb_objfs_metadata_cache_size Foyer SST metadata cache capacity in bytes UBIGINT GLOBAL []
duckdb_objfs_persistent_cache_on_compaction Populate the persistent cache from compaction output BOOLEAN GLOBAL []
duckdb_objfs_persistent_cache_on_flush Populate the persistent cache from memtable flush output BOOLEAN GLOBAL []
duckdb_objfs_persistent_cache_part_size Persistent SST cache part size in bytes UBIGINT GLOBAL []
duckdb_objfs_persistent_cache_path Local path for the persistent SST cache; empty disables it VARCHAR GLOBAL []
duckdb_objfs_persistent_cache_size Persistent SST cache capacity in bytes UBIGINT GLOBAL []
duckdb_objfs_root Local directory or S3 object prefix used by the filesystem VARCHAR GLOBAL []