GCS allows object to be replaced conditionally with `x-goog-if-generation-match` header, which sometimes can be quite useful.
GCS allows object to be replaced conditionally with `x-goog-if-generation-match` header, which sometimes can be quite useful.
BTW, DynamoDB supports conditional PUTs if your data can fit under 400 KiB.
To implement serialisation, (as opposed to using Conditional PUTs) one could implement a ledger on top of versioned buckets with LegalHolds: Basically, the object versions part of the main chain are LegalHolded whilst other versions are reconcilled (rebased) onto main and later deleted. Tricky to implement, for sure, compared to say, maintaining a journal in DynamoDB to track PUTs to maintain serial integrity.
Can cover some of the use cases
for example imagine that you have N writers and you want only the first of them to write something in a n object.
each writer writes their content into "_foo" and each tries to copy that to "foo", with "x-amz-copy-source-if-match". Only one of them will succeed and "foo" will have one consistent value, which all observers (including other writers) can agree who has won.