Object storage uses inexpensive commodity hardware to provide petabytes of resilient space.
To understand object storage, we first need to understand how it differs from traditional block and file storage.
Block storage is the base for all storage.
This storage can be a single disk, found in a laptop, a RAID array in a database server, or an iSCSI volume stored on a central SAN. Block storage devices are accessed by the operating system itself and allow granular data control through a filesystem at the byte level.
Your database server utilizes block storage to allow it to make small but rapid changes to large files each time data is inserted into your database.
File storage builds on block storage by exposing data to network computers.
Multiple computers can read and write files to a common location. NFS and CIFS are the widely used standards for this type of storage. Both allow for file locking and access control lists.
In both block and file storage, your operating system (Windows, Mac OS X, Linux) handles interfacing with the storage. Applications and other software do not need any special modifications and can access the storage transparently. This allows you to create directories and to arrange your data in a hierarchical fashion.
Object storage abstracts away the building blocks of storage.
When you send an object to an object store, a number of differences between block/file storage and object storage are highlighted:
- Object storage use a globally unique identifier for each object, rather than a filesystem path. This allows for access to the data without knowing which server the object is on, or even which data center the server is in.
- Metadata for the object can be stored. Since this metadata is arbitrary, it can be used to store access control lists, tags for pictures, or any other text used to define the object.
Access to object storage is done at the application level through APIs. These APIs allow a specific program to interact with an object storage platform through creating and deleting an object (file), updating the object with a new copy, and accessing the file (downloading it).
A major draw to object storage is durability. Data ingested by an object store is typically replicated across multiple physical disks, servers, and even data centers. This allows for huge resiliency in the face of drive failures and server failures because your data exists in multiple physical locations.
In addition to durability, object storage enables easy storage pool growth as your needs change. You simply add more disks and servers to the pools. This is unlike traditional filesystems within a single namespace, which can prove more difficult to scale under similar situations.
Object storage is ideal for unstructured data. Typical use cases include:
- Log files
- Media (pictures, music, videos)
- Static web content
Block storage is better suited to structured data. Typical use cases include:
- Files requiring frequent small, random changes
File storage is best for locally shared files. Typical use cases include:
- Content repositories
While file and block storage are best for performance, meticulous metadata and limitless scalability make object storage useful all on its own.
Feel free to email firstname.lastname@example.org if you have questions.