Storage Options

As part of App Builder, you have access to three storage services for persisting data dynamically from your Runtime actions: Database, Files, and State. Each service is designed for different use cases, with distinct benefits and trade-offs.

Quick comparison

The following table summarizes the key differences between the three storage services:

Feature
State
Files
Database
Best for
Fast key-value access
Large file storage
Complex queries and relationships
Max value size
1 MB
200 GB
Max document size is 16MB
Data model
Key-value pairs
Binary blobs
Document collections
Query capability
Get by key, list with glob
Get by path
Rich queries, aggregations, and indexes
TTL support
Yes (max 365 days)
No
No
Sharing
No
Yes (pre-signed URLs)
No
Provisioning
Automatic
Automatic
Manual (CLI or SDK)

Usage quotas and limits

The following quotas and limits apply while dealing with Persistent Storage associated with your App Builder application.

Quotas are shared across the organization. Workspace limits are defined at the workspace level. The Database and State services may return 429 (rate-limits) or 403 (storage limits) errors if limits are exceeded.

State storage limits

Limit
Limit Type
Default Limit
Can it be Increased?
Notes
How much data can you store in State?
Quota (increases with number of packs)
Up to 10 GB per App Builder pack
Yes, by purchasing more packs of App Builder
Storage is calculated as: (2 * total size of keys) + (total size of values).
How much State bandwidth can you utilize?
Quota (increases with number of packs)
1 TB per month per App Builder pack
Yes, by purchasing more packs of App Builder
Bandwidth is calculated as: total bytes uploaded + total bytes downloaded.
How much data can you store in State in a single App Builder workspace?
Workspace limit (fixed per workspace)
1 GB for production workspaces 200 MB for other workspaces
Yes, by raising a support ticket. You can request an increase up to 10 GB. Note: Increasing the limit beyond 10 GB in a single workspace can be supported depending on your case. Raise a support ticket to find out more.
Storage is calculated as: (2 * total size of keys) + (total size of values).
How much State burst bandwidth can you consume in a single App Builder workspace?
Workspace limit (fixed per workspace)
1 MB/s (bursts) 10 MB/min for production workspaces 2 MB/min for other workspaces
Yes, by raising a support ticket. You can request an increase up to 3 MB/s and 30 MB/min per App Builder packs purchased.
Bandwidth is calculated as: total bytes uploaded + total bytes downloaded.
How fast can you increase your bandwidth consumption in a single App Builder workspace?
Workspace limit (fixed per workspace)
100 KB/s per minute
No
-
How many keys can you store in State in a single App Builder workspace?
Workspace limit (fixed per workspace)
200K
Yes, by raising a support ticket. You can request an increase up to 500K keys.
This limit does not scale with the number of App Builder packs purchased.
How many list operations can you run per minute in a single App Builder workspace?
Workspace limit (fixed per workspace)
1K/min
Yes, by raising a support ticket. You can request an increase up to 10K/min.
This limit does not scale with the number of App Builder packs purchased.

Database storage limits

Limit
Limit Type
Default Limit
Can it be Increased?
Notes
How much data can you store in the Database Service?
Quota (increases with number of packs)
Up to 40 GB per App Builder pack
Yes, by purchasing more packs of App Builder
Includes storage used for both data and indexes.
How much Database bandwidth can you utilize?
Quota (increases with number of packs)
Up to 10 TB per month per App Builder pack
Yes, by purchasing more packs of App Builder
Includes both uploaded and downloaded traffic.
How many Database collections (tables) can you create?
Hard Limit
1,000
No
Enforced to ensure service reliability and performance.
How many Database requests can you make per minute in a single App Builder workspace?
Workspace limit (fixed per workspace)
20,000 requests/min
No
How much Database burst bandwidth can you consume per minute in a single App Builder workspace?
Workspace limit (fixed per workspace)
500 MB/min
Yes, by raising a support ticket.
How much Database burst bandwidth can you consume per second in a single App Builder workspace?
Workspace limit (fixed per workspace)
100 MB/sec
Yes, by raising a support ticket.

State

State provides a high-performance key-value store optimized for low-latency access to small pieces of data.

Benefits

Drawbacks

When to use state

Learn more about State

Files

Files provides blob storage for large binary data, built as an abstraction layer over cloud storage services.

Benefits

Drawbacks

When to use files

Learn more about Files

Database

Database Storage provides a document-style database with a MongoDB-compatible API, powered by AWS DocumentDB.

Benefits

Drawbacks

When to use database

Learn more about Database

Choosing the right storage

Use this decision guide to select the appropriate storage service:

Is your data larger than 100 KB?
├── Yes → Do you need shareable URLs?
│         ├── Yes → Use Files
│         └── No → Is it structured data needing queries?
│                  ├── Yes → Use Database
│                  └── No → Use Files
└── No → Do you need complex queries or relationships?
         ├── Yes → Use Database
         └── No → Do you need automatic expiration?
                  ├── Yes → Use State
                  └── No → Use State (simpler) or Database (more features)

Common patterns

Use Case
Recommended Storage
User session data
State
Application configuration
State
Uploaded images/documents
Files
Export files for download
Files
User profiles with queries
Database
Product catalogs
Database
Order history with analytics
Database
Temporary processing data
State (with TTL)
Cached API responses
State (with TTL)

Getting started

All three storage services integrate seamlessly with App Builder:

# State - install the library
npm install @adobe/aio-lib-state

# Files - install the library  
npm install @adobe/aio-lib-files

# Database - install the library and provision
npm install @adobe/aio-lib-db
aio app db provision

For State and Files no additional configuration is needed. These libraries automatically use your App Builder credentials for authentication and authorization.

The Database library does require some additional configuration, but does not require any special entitlements beyond App Builder itself. See the App Builder Data Services API documentation for details.