After completing this section, you should be able to analyze and compare the common technologies for general object storage use cases.
Domain operators can advise cloud users regarding the different features of object storage APIs and back ends, which may include mixing front and back ends. A domain operator would not be required to configure these back ends, but would understand which configuration has been implemented, and what is appropriate for different application use cases.
Red Hat OpenStack Platform configures Ceph as the back end for Swift by default, however organizations with an existing investment in other technologies may choose a different configuration. This section will compare the features of three popular object storage technologies.
The choice of object storage technology can be affected by several factors, including cost, existing storage investment, and application requirements. However, the decision should also be based on an understanding of the technologies and their features as they pertain to business needs.
The following table compares a few of the features of Swift, Ceph RADOS Gateway, and Amazon Simple Storage Service (S3). Explanations and use cases are presented following the feature table.
Table 6.1. Storage Features
| Feature | Swift | Ceph RGW | Amazon S3 |
|---|---|---|---|
| Codebase | Python | Mostly C++ | Unknown |
| Consistency model | Eventual consistency | Strong consistency | Read-after-write for creates, eventually consistent for modifications and deletes |
| Access | RESTful API | RESTful API | RESTful API |
| Replication | Y | Y | Y |
| Object expiration | Y | Y | Y |
| Encryption | Y | Y | Y |
Eventual consistency offers low latency but may reply to read requests with stale data since all nodes of the database may not yet have the updated data. Eventual consistency is a theoretical guarantee that, provided no new updates to an entity are made, all reads of the entity will eventually return the last updated value. With eventual consistency, replicas are always available to read, but some replicas may be inconsistent with the latest write on the originating node, at any particular moment in time. Both Amazon S3 and Swift use an eventually consistent model, which scales well for massive quantities of data, and multiple geographic regions.
All three technologies use replication to ensure high availability of data.
Swift has no encryption facility exposed to users, however it can encrypt data on the server side before storing it. To ensure your data is protected in transit as well as at rest, you should encrypt the data before sending it to Swift.
To have objects expire at some point in the future, Swift supports setting the expiry time to a given date and time, or after a fixed number of seconds. The swift-object-expirer daemon monitors object expiry times, then deletes the objects when the limit is reached.
The maximum size of a single uploaded object in Swift is 5 GiB. Swift also supports segmentation, allowing a large object to be divided into smaller chunks, then be uploaded in parallel. Swift supports quotas by user or by container, with containers being restricted to the total size of all objects, or by the number of objects.
Further information is available in the Object Storage section of the Storage Guide for Red Hat OpenStack Platform at https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/16.0/html-single/storage_guide/index
Further information is available in the Overview section of the Architecture Guide for Red Hat Ceph Storage at https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/4/html-single/architecture_guide/index