Overview
Object storage stores data as objects.
Each object contains:
- The data itself
- Metadata
- A unique identifier
Typical examples of stored objects:
- PDF files
- Binary blobs
- Text files
- Images
- Other unstructured data
Objects are treated as transactional units. Metadata can be extended
to support additional attributes or indexing.
Storage Structure
Traditional file systems use a hierarchical structure:
/root
├── folder
│ └── file.txt
└── another-folder
└── image.png
Object storage does not use nested folders. Instead, it uses a
flat address space.
object-1
object-2
object-3
Each object is accessed by a unique key.
Access Model
Object storage systems expose data through HTTP-based APIs.
Common operations:
GET Retrieve an object
PUT Upload or update an object
DELETE Remove an object
Because the interface is HTTP-based:
- Any service capable of making HTTP requests can interact with the
storage. - Access works globally over the internet.
Advantages
1. High Read Performance
Object storage is optimized for fast object retrieval.
2. Horizontal Scalability
Data is distributed across many storage nodes. This allows:
- Massive storage capacity
- High availability
- Fault tolerance
3. Ideal for Unstructured Data
Typical workloads:
- Images
- Media files
- Backups
- Static assets
- User uploads
4. Reduced Infrastructure Management
Cloud providers manage:
- Physical disks
- RAID configurations
- Hardware failures
- Storage scaling
Developers only interact with the API.
Limitations
Object storage performs poorly for workloads with frequent small
updates.
Examples:
- Databases
- Transaction-heavy systems
These workloads require low-latency random I/O, which object storage
does not optimize for.
Common Web Application Use Cases
Object storage is well suited for static and user-generated content.
Typical examples:
- CSS files
- JavaScript files
- Images
- Videos
- File uploads
Benefits:
- Changes are infrequent
- Files can be cached globally via Content Delivery Networks
(CDNs) - Files can be served directly via HTTP
This removes the need for a dedicated static file server.
Major Object Storage Providers
Common providers include:
- Amazon S3
- DigitalOcean Spaces
- Rackspace Cloud Files
Typical characteristics:
- Pay only for the storage used
- Access controlled using API keys
- Global data access via HTTP APIs
Applications authenticate using access keys to perform read and
write operations.
Simulating Directory Structures
Object storage does not support directories. However, directory-like
behavior can be simulated using object names.
Example upload path:
/foo/bar/file.txt
Stored object key:
foo/bar/file.txt
The path is part of the object name. Interfaces then interpret these
prefixes as folders.
Services like:
- Dropbox
- Google Drive
use similar techniques internally. Dropbox, for example, uses Amazon S3
as its storage backend.
Hosting Object Storage
There are two primary deployment models.
1. Managed Cloud Storage
You purchase object storage from a cloud provider.
Examples:
- Amazon S3
- DigitalOcean Spaces
- Rackspace Cloud Files
Advantages:
- No infrastructure maintenance
- Easy scaling
- Global availability
- Built-in redundancy
Developers only configure application access.
2. Self-Hosted Object Storage
You can run object storage on infrastructure you control.
Typical approach:
- Use block storage volumes
- Deploy an object storage server on top
Example solution:
- MinIO (S3-compatible open source server)
Benefits:
- Full infrastructure control
- Increased privacy
- Flexible deployment
Trade-off: you must manage hardware, scaling, and reliability.
Block Storage
Block storage uses raw disk volumes attached to a server.
The operating system divides disks into blocks (volumes).
Each volume behaves like a separate disk.
Example:
Volume 1 → Application files
Volume 2 → Database storage
Volume 3 → Logs
Each volume can be formatted with a filesystem such as:
- ext4
- XFS
- NTFS
Block Storage Capabilities
Block storage provides:
- High I/O performance
- Low latency reads and writes
- Flexible volume management
Typical operations:
- Resize volumes
- Attach volumes to different servers
- Format volumes with different file systems
Block Storage Use Cases
Block storage is required for workloads with high I/O requirements.
Typical examples:
- Databases
- Application servers
- Operating system disks
Databases in particular require fast read/write operations that object
storage cannot provide.
Object Storage vs Block Storage
Feature Object Storage Block Storage
Structure Flat namespace Filesystem-based
Access HTTP APIs Attached disk volumes
Best For Static and unstructured Databases and active
data workloads
Scalability Extremely high Limited to attached
disks
Performance Optimized for reads Optimized for
low-latency I/O
Typical Web Application Architecture
A common architecture uses both storage types.
Example:
Block Storage
├── Application code
└── Database
Object Storage
├── Static assets (CSS, JS)
└── User uploads
This combination provides:
- Fast transactional storage
- Scalable static file delivery
Member discussion: