Amazon S3 erhält Put-If-Match-(Compare-and-Swap)-Funktion
(aws.amazon.com)-
Neue Funktion in Amazon S3: Bedingte Schreibvorgänge
-
Amazon S3 kann nun bedingte Schreibvorgänge ausführen, bei denen ein Update erst nach der Prüfung erfolgt, dass ein Objekt nicht verändert wurde. Das hilft dabei, gleichzeitige Schreibvorgänge auf dasselbe Objekt zu koordinieren und zu verhindern, dass mehrere gleichzeitige Writer den Inhalt eines Objekts unbeabsichtigt überschreiben, ohne dessen aktuellen Stand zu kennen.
-
Diese Funktion kann sowohl in allgemeinen S3-Buckets als auch in Directory-Buckets verwendet werden, indem die ETag des Objekts über API-Anfragen an S3 PutObject oder CompleteMultipartUpload angegeben wird.
-
Bedingte Schreibvorgänge vereinfachen die Arbeitsweise verteilter Anwendungen, in denen mehrere Clients gleichzeitig gemeinsame Datensätze aktualisieren. Ähnlich wie mit dem HTTP-Header
if-none-match, der prüft, ob ein Objekt vor seiner Erstellung bereits existiert, können Clients jetzt eine Prüfung für bedingte Schreibvorgänge durchführen, indem sie die ETag des Objekts im API-Request über den HTTP-Headerif-matchangeben. -
S3 bestätigt den Schreibvorgang erst, nachdem geprüft wurde, ob die ETag des Objekts mit dem in der API-Anfrage angegebenen Wert übereinstimmt, und verhindert so, dass Clients ein Objekt überschreiben, bevor die Bedingung erfüllt ist.
-
Dieser neue bedingte Header kann dazu beitragen, die Effizienz von großskaliger Analytik, verteiltem Machine Learning und anderen stark parallelisierten Workloads zu verbessern.
-
Diese neue Funktion für bedingte Schreibvorgänge ist in allen AWS-Regionen ohne zusätzliche Kosten verfügbar. Bedingte Schreibvorgänge können über AWS SDK, API oder CLI ausgeführt werden. Weitere Informationen zu bedingten Schreibvorgängen finden sich im S3 User Guide.
-
1 Kommentare
Hacker-News-Kommentare
Amazon S3 hat eine Funktion hinzugefügt, mit der sich bedingte Schreiboperationen erzwingen lassen
Turbopuffer.com nutzt dies bereits in seiner Datenbank, um Abhängigkeiten außerhalb des Objektspeichers zu vermeiden
Mit starker Konsistenz wurde die Hälfte der gewünschten Funktionalität erreicht
Manche tun sich schwer damit zu verstehen, warum diese Funktion wichtig ist
Dies kommt eher einem compare-and-set als einem compare-and-swap nahe
In Kombination mit garantierter Read-after-Write-Konsistenz ist das eine perfekte Grundlage, um auf Objektspeicher einen inkrementellen append-only Store aufzubauen
Azure Blob Storage unterstützt ebenfalls ETag und optimistische Kontrolle
Falls der Standard-ETag-Algorithmus von AWS lediglich ein gewöhnlicher MD5-Hash ist, stellt sich die Frage, ob Objektdaten durch MD5-Kollisionen fehlschlagen könnten
MinIO, eine Open-Source-Implementierung von Amazon S3, bietet diese Funktion schon seit fast zwei Jahren
Als Reaktion auf die IfNoneMatch-Funktion von s3fs wurde im Sommer eine neue Funktion hinzugefügt