4 Punkte von GN⁺ 2024-11-26 | 1 Kommentare | Auf WhatsApp teilen
  • 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-Header if-match angeben.

    • 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

 
GN⁺ 2024-11-26
Hacker-News-Kommentare
  • Amazon S3 hat eine Funktion hinzugefügt, mit der sich bedingte Schreiboperationen erzwingen lassen

    • Gewünscht war eine Funktion, die in S3 erzwingt, dass der Name eines Objekts mit dem Hash übereinstimmt
    • Das hilft beim Aufbau eines inhaltsadressierbaren Speichers
  • Turbopuffer.com nutzt dies bereits in seiner Datenbank, um Abhängigkeiten außerhalb des Objektspeichers zu vermeiden

    • Es freut sie, dass diese Funktion nun ein Jahr nach dem Start auf Google Cloud Storage auch in S3 verfügbar ist
  • 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

    • Das löst Probleme, wenn mehrere Writer auf das WAL zugreifen
  • Azure Blob Storage unterstützt ebenfalls ETag und optimistische Kontrolle

    • Manche fragen sich, wie sich das von der AWS-Funktion unterscheidet
  • 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

    • Gemeint ist ein Szenario, in dem angenommen wird, dass unterschiedliche vom Nutzer bereitgestellte Daten immer unterschiedliche ETags erzeugen
  • MinIO, eine Open-Source-Implementierung von Amazon S3, bietet diese Funktion schon seit fast zwei Jahren

    • Amazon zieht jetzt erst nach
  • Als Reaktion auf die IfNoneMatch-Funktion von s3fs wurde im Sommer eine neue Funktion hinzugefügt

    • Manche fragen sich, wie diese neue Funktion in einer Dateisystemabstraktion erscheinen wird