Search code examples
ibm-cloudobject-storageibm-cloud-storage

IBM Cloud Object Storage - what is the data consistency / visibility model?


What guarantee does IBM's Cloud Object Storage provide regarding data consistency / visibility? AWS's is basically read-after-write for new objects, and eventual consistency for updates/deletes. So, what is the data consistency model for IBM's COS? And, I doubt that object locking is supported, but would like to verify that it is indeed not possible (would be great if it were!).

For reference, AWS states their data consistency model here:

Amazon S3 provides read-after-write consistency for PUTS of new objects in your S3 bucket in all regions with one caveat. The caveat is that if you make a HEAD or GET request to the key name (to find if the object exists) before creating the object, Amazon S3 provides eventual consistency for read-after-write.

Amazon S3 offers eventual consistency for overwrite PUTS and DELETES in all regions.

Updates to a single key are atomic. For example, if you PUT to an existing key, a subsequent read might return the old data or the updated data, but it will never write corrupted or partial data.

and with respect to object locking:

Amazon S3 does not currently support object locking. If two PUT requests are simultaneously made to the same key, the request with the latest time stamp wins. If this is an issue, you will need to build an object-locking mechanism into your application.

Updates are key-based; there is no way to make atomic updates across keys. For example, you cannot make the update of one key dependent on the update of another key unless you design this functionality into your application.


Solution

  • IBM COS is immediately consistent for all operations, but like AWS doesn't support object locking at this time.

    I'm working on a writeup that we'll fold into our docs about our consistency model and why it works the way it does, stay tuned!