2 Punkte von GN⁺ 2024-03-11 | 1 Kommentare | Auf WhatsApp teilen

S3 ist eine Datei, aber kein Dateisystem

  • Amazon S3 ist die ursprüngliche Cloud-Technologie, die 2006 eingeführt wurde. Sie wird als „Objektspeicher“ bezeichnet, ist in der Praxis aber für Dateien gedacht.
  • Die Vorstellung, S3 sei ein „Amazon Cloud Filesystem“, ist ein nützlicher Glaube, um Menschen zur Einführung von S3 zu bewegen, aber in Wirklichkeit ist S3 kein Dateisystem.

Was ist ein Dateisystem, und was bedeutet modulare „Tiefe“?

  • Die Unix-Datei-API besteht aus fünf grundlegenden Funktionen, die alles bereitstellen, was zum Lesen und Schreiben von Dateien nötig ist.
  • Diese Funktionen behandeln viele Probleme wie Pufferung, Page Cache, Fragmentierung, Berechtigungen, IO-Scheduling und mehr, ohne sie dem Nutzer offenzulegen.
  • Tiefe Module haben den Vorteil, dass Nutzer Funktionen verwenden können, ohne über die Komplexität nachdenken zu müssen.

Eigenschaften von S3 (auch das ist tief)

  • S3 implementiert die Unix-Dateisystem-API nicht neu, und auch das grundlegende Aufrufmodell ist anders.
  • Die S3-API ist einfacher als die Unix-Datei-API, hat aber die Einschränkung, dass Objekte nicht teilweise überschrieben werden können.

Dateisystem-Software, insbesondere Datenbanken, lässt sich nicht auf Amazon S3 verlagern

  • Datenbanken brauchen einen Ort, an dem Daten gespeichert werden können, und das geschieht normalerweise in verschiedenen Dateien eines Dateisystems.
  • Datenbanken sind stark auf partielles Überschreiben angewiesen, was in S3 nicht möglich ist.

Was S3 gut kann und was nicht

  • Ein Vorteil von S3 ist die sehr hohe Bandbreite beim Lesen und Schreiben.
  • S3 unterstützt jedoch kein partielles Überschreiben, kein Umbenennen oder Verschieben, und auch das Auflisten von Dateien ist langsam.
  • Trotzdem erfordert S3 wenig Wartung und vereinfacht Aufgaben wie Backup-Konfiguration, Replikation und Provisionierung.

Die Bedeutung modularer Tiefe zwischen Organisationen

  • Es ist nicht überraschend, dass S3 zur ersten populären Cloud-API wurde, denn tiefe APIs helfen dabei, Komplexität zwischen Organisationen zu beherrschen.
  • Komplexe Unternehmenssoftware wie SAP zu integrieren, ist schmerzhaft, und ein Grund dafür ist, dass SAP kein tiefes Modul ist.

Weitere Informationen

  • Dieser Artikel will nicht nahelegen, dass S3 überbewertet ist, sondern erklärt das Konzept tiefer Module im Vergleich zu relativ flachen Modulen.
  • Einige Datenbanken wurden so entworfen, dass sie die S3-API als Speicher verwenden; das ist möglich, aber nicht transparent.
  • In S3 liefern viele Dateiformate eine schlechtere Performance als auf Festplatten.

Meinung von GN⁺

  • Es ist wichtig zu verstehen, dass S3 kein Ersatz für ein Dateisystem ist, sondern eine Speicherlösung, die für bestimmte Anwendungsfälle optimiert wurde. Zum Beispiel eignet es sich gut zum Speichern und Übertragen großer unveränderlicher Dateien, ist aber für Anwendungen wie Datenbanken, die häufige partielle Updates benötigen, ungeeignet.
  • Die Performance und Skalierbarkeit von S3 sind sehr hoch, aber wenn man Kosteneffizienz und die Komplexität der Verwaltung berücksichtigt, ist es nicht für jedes Projekt geeignet. Zum Beispiel kann das Open-Source-Projekt MinIO eine gute Alternative für Organisationen sein, die S3-kompatiblen Storage auf eigener Infrastruktur aufbauen möchten.
  • Beim Einsatz von S3 gibt es zusätzliche Aspekte wie Datenkonsistenz, Netzwerkkosten und Zugriffskontrolle, und diese Faktoren können das Gesamtdesign eines Systems beeinflussen.
  • Auch wenn die Einsatzmöglichkeiten von S3 begrenzt sein können, ist es für bestimmte Anwendungen wie Data Lakes oder Backup-Lösungen ein sehr leistungsfähiges Werkzeug. Die Fähigkeit, Daten sicher zu speichern und bei Bedarf schnell abzurufen, bietet vielen Unternehmen einen wichtigen Mehrwert.
  • Dieser Artikel kann helfen, technische Entscheidungen zu treffen, indem er ein tiefes Verständnis der technischen Details von S3 und seiner praktischen Anwendungsfälle vermittelt.

1 Kommentare

 
GN⁺ 2024-03-11
Hacker-News-Kommentare
  • Ich habe noch nie von Problemen mit der Haltbarkeit von S3 gehört, aber ich habe auch noch nie gesehen, dass diese Behauptungen getestet wurden. Diese Behauptungen machen mich neugierig.

    • Die Haltbarkeit von S3 ist branchenführend und mit traditionellen Dateisystemen nicht vergleichbar.
    • Die Trennung der AWS-Verfügbarkeitszonen ist besser als bei anderen Cloud-Anbietern.
    • Bei S3 gibt es große Sorge um Datenintegrität und Naturkatastrophen.
    • S3 wird in einer Größenordnung betrieben, in der sogar „Bitrot“ erkannt wird.
    • Wichtige Daten würde ich nirgendwo anders als in S3 speichern.
    • Quelle: jemand, der das S3-Batch-System geschrieben hat.
  • Das Auflisten von Dateien ist langsam. Lesen und Schreiben in S3 sind sehr schnell, aber das Auflisten von Dateien ist sehr langsam.

    • Nicht die schnellen Lese- und Schreibzugriffe von S3 sind nützlich, sondern die Funktion zum Auflisten von Dateien.
    • In nicht versionierten Buckets ist das Auflisten eines gegebenen Präfixes praktisch in konstanter Zeit möglich.
    • Man kann Daten auf verschiedene Weise partitionieren und die benötigten Bezeichner verwenden, ohne sich um die Leistung sorgen zu müssen.
  • Ich war kürzlich überrascht, wie langsam das Auflisten von Dateien ist. Während ich an einem Skript zur Verwaltung von Assets in S3 arbeitete, wurde mir klar, dass ich einen Cache für Dateilisten brauche.

    • Es gibt etwa 100.000 Verzeichnisse auf Root-Ebene, und jedes davon enthält einige Verzeichnisse mit jeweils einigen Dateien.
    • Das rekursive Auflisten der Dateien dauert 15 Minuten.
    • Ich frage mich, warum Amazon dieses Problem nicht gelöst hat.
  • Amazon S3 ist die ursprüngliche Cloud-Technologie und wurde 2006 eingeführt. „Objekte“ waren damals populär, und S3 wurde als „Object Store“ bezeichnet.

    • S3 ist kein Dateisystem, sondern ein Object Store.
    • S3 ist keine Datei und auch kein Dateisystem.
    • Was man von der Abstraktion einer Datei erwartet, ist Veränderbarkeit.
    • S3 bietet eine veränderbare Liste unveränderlicher Objekte.
    • S3 löst ein anderes Problem, und der Versuch, es wie ein Dateisystem aussehen zu lassen, beruht auf einem Missverständnis der Kunden.
  • Es gibt eine Diskussion, die die von Apache Arrow object_store und Apache OpenDAL bereitgestellten APIs vergleicht.

    • Apache OpenDAL ist eine Bibliothek, die für S3 und mehrere andere Cloud-Storage-Dienste eine FS-ähnliche API bereitstellt.
    • Einige Datenbanksysteme wie GreptimeDB und Databend verwenden OpenDAL, um auf Daten in Cloud Storage zuzugreifen.
    • Andere Lösungen wie Alluxio und JuiceFS verwalten ebenfalls eine dateisystemähnliche Schnittstelle auf S3.
  • Dateisystem-Software, insbesondere Datenbanken, kann nicht auf Amazon S3 portiert werden.

    • Doch, das kann sie.
    • Man muss nicht bei jedem INSERT/UPDATE/DELETE die gesamte DB-Datei überschreiben.
    • Im Fall von SQLite gibt es Werkzeuge wie Litestream, die Replikation nach S3 und Wiederherstellung unterstützen.
  • Ich verwende Minio als lokales „S3“, um Datensätze und Modell-Checkpoints zu speichern.

    • Minio hat viele Funktionen, die ich nicht brauche.
    • Was ist aktuell die beste selbstgehostete Single-Node-Option für ein minimales S3-ähnliches „Ding“, mit dem man CRUD auf Dateien ausführen und Listen anzeigen kann?
  • Während wir über S3 sprechen, ist es erwähnenswert, Backblaze B2 zu nennen.

    • Ich bin sehr zufrieden damit, bei einem dreimal niedrigeren Preis als S3.
  • S3 kann fälschlich als Dateisystem verwendet werden.

    • S3 will Objekte, und hier gibt es 512- oder 4096-Byte-Objekte, die Cluster genannt werden.