Wie können wir Amazon S3 als Datenbank verwenden?


Beste Antwort

Zunächst gibt es gemischte Theorien darüber, ob Amazon S3 als Datenbank verwendet werden kann. Ich persönlich glaube, dass Amazon S3 als Datenbank mit ein wenig architektonischer Transformation verwendet werden kann. Aber das ist nichts für schwache Nerven und muss mit einer Prise Salz eingenommen werden! Selbst wenn Sie in der Lage sind, das zu erreichen, wonach Sie suchen, weist es möglicherweise seine eigenen Mängel auf.

Architectural Insight: Um den Ansatz zum Drehen von S3 in einer Datenbank zu erläutern, lassen Sie uns zunächst die zugrunde liegende Architektur von S3 verstehen. Amazon S3 ist an sich ein Dateisystem und nicht nur eine Vanilla Object Storage Platform. Tatsächlich ist Amazon S3 selbst im Wesentlichen eine NoSQL-Datenbank. Es handelt sich um einen massiven Schlüsselwertspeicher, bei dem Schlüssel der Dateiname und Wert der Dateiinhalt ist.

Als S3 “ Der primäre Anwendungsfall ist das Speichern von Objekten. Die zugrunde liegende Architektur selbst ist hauptsächlich ein Dateisystem. Sie partitioniert Ihre Daten automatisch in einem Bucket und verwaltet einen Primärindex für den Schlüssel.

Ansatz: Wenn S3 als Pseudodateisystem betrachtet wird, können Sie seinen Zweck optimieren, um perfekt als ACID -Datenbank, obwohl Sie nicht wie jede andere Datenbank in der Lage wären, sie abzufragen. Aber dann könnten Sie ohnehin keine zufälligen Abfragen auf massiven Data Lakes ausführen, egal wie hoch entwickelt Die Plattform ist.

Andererseits können Sie in AWS S3 mithilfe der intelligenten Verwendung von Elastic MapReduce aufschlussreiche Metriken extrahieren s unterstützt mit einer Hadoop-Pipeline . Bei diesem Ansatz müssen Sie im Wesentlichen alle von OpenHeatMap generierten Daten als JSON-Dateien in S3-Buckets speichern. Je nachdem, wie Sie Ihre Daten strukturieren, sollten Sie in der Lage sein, Ihre Daten entweder über Athena oder S3 Wählen Sie . Wenn Sie einen anderen AWS-Service für den Zugriff auf die Datenbank benötigen, benötigen Sie ein API-Skript, das SQL-Transaktionen zulässt.

Geben Es ist ein Versuch, und ich bin sicher, dass Sie etwas daraus machen werden.

Hoffe, das hilft!

Wenn Sie Hilfe beim Erlernen von S3 suchen und Ihre eigene einrichten möchten S3-Eimer kontaktieren Sie mich bitte.

Antwort

Können Sie? Sicher. Solltest du? Absolut nicht.

AWS S3 ist ein großartiger Dienst zum Speichern von Dateien. Wenn Sie jedoch eine Datei bearbeiten möchten, müssen Sie sie vollständig herunterladen, ändern, was Sie möchten, und sie dann erneut hochladen. In der Zwischenzeit vorgenommene Änderungen werden überschrieben.

Eine Datenbank profitiert davon, dass die Dateien jederzeit geöffnet sind, dass sie herumspringen und nach Daten suchen und inkrementell schreiben können. Daher funktioniert eine Datenbank, die eine Mehrbenutzer- und sogar langsame Leistung erwartet, in diesem Kontext nicht. Dies setzt voraus, dass Sie „Fuse“ oder eine andere Mount-S3-as-a-File-System-Software verwenden.

In bestimmten Anwendungsfällen gibt es jedoch eine Möglichkeit, S3 als Datenbank zu verwenden. In einigen Fällen kann es sinnvoll sein, eine Datei in S3 mit einer „Sidecar-Datei“ zu speichern. Das bedeutet, dass Sie beispielsweise image123.jpg gespeichert haben und daneben image123.json mit Informationen zu dieser Datei haben.

Zum Beispiel Sicherungen oder andere Daten, bei denen Sie mithilfe von a überprüfen können, ob die Datei vorhanden ist Namensschema, das beispielsweise ein Datum enthält, und falls dies der Fall ist, rufen Sie auch die Sidecar-Datei mit zusätzlichen Informationen zur Datei ab. Auf diese Weise können Sie unbegrenzt skalieren, ohne eine tatsächliche Datenbank einzubeziehen.

Abhängig von Ihrem Projekt kann die Sidecar-Datei sogar eine SQLite-Datenbank sein, die auf einer einzelnen Datei basiert und SQL (meistens) kompatibel ist. Beachten Sie nur die oben genannten Vorbehalte.

Sie können dies gerne unten kommentieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.