2016-11-21 2 views
-1

Ich habe diese Seite gelesen, die erklärt, wie man von Python auf den Google-Speicher zugreift.Implementierungsunabhängiger Speicherzugriff

https://cloud.google.com/appengine/docs/flexible/python/using-cloud-storage

Ich habe keine Verbindung zwischen meinem Code und dem Cloud-Storage-Anbieter wollen.

Wenn ich amazon verwende, sollte Google oder ein benutzerdefinierter Speicher Konfiguration sein und sollte außerhalb meines Quellcodes behandelt werden.

Gibt es eine Möglichkeit, Python-Code zu schreiben, der einen Cloud-Speicher verwendet, dies aber unabhängig von der Implementierung tut?

Antwort

1

Leider heute es ist nicht möglich, Ihren Code völlig unabhängig von der Art des Cloud-Speicher zu machen, vor allem, weil jeder Cloud-Storage-Anbieter verschiedene Arten von Konfigurationen, Authentifizierungen, Zugang Bibliotheken usw. verwendet

Aber was Sie can do kann solche Abhängigkeiten in dünnen Schichten enthalten, die für jeden Anbieter spezifisch sind und sich hinter einer allgemeinen, generischen API verbergen, die Sie erstellen würden.

Die große Mehrheit Ihres Codes würde diese generische API verwenden und müsste nicht geändert werden, wenn Sie den tatsächlichen Speicheranbieter hinzufügen, löschen oder ändern.

+0

Vielen Dank für Ihre Antwort. AFAIK-Speicher-APIs sind sehr einfach: CRUD (Erstellen, Lesen, Aktualisieren, Löschen). Ja, ich könnte eine dünne Ebene erstellen, um meinen Code sauber zu halten. Ich bin mir nicht sicher, ob "nicht möglich" wirklich wahr ist. Für relationale Datenbanken ist es möglich. Und wenn Sie nur Basic SQL machen, ist Ihr Code portabel und die Konfiguration definiert die konkrete Verbindung. – guettli

+0

Nun, Ihre Frage erwähnt Speicher, nicht SQL (ich gebe zu, im Grunde können sie als die gleiche Sache gesehen werden, aber auf der Implementierungsebene sind sie nicht). Wenn Sie beispielsweise GCS verwenden, müssen Sie ** eine GCS-spezifische Bibliothek verwenden, die 'open()' verwendet, um eine Datei zu öffnen. Sie können Pythons 'open()' nicht einfach mit einem Dateinamen aufrufen. Das Umgekehrte gilt auch: Sie können GCS 'open()' nicht mit einer normalen Dateisystemdatei verwenden, geschweige denn amazon oder einem anderen Nicht-GCS-Cloudspeicher, eine Anpassungsschicht wäre erforderlich, um solche Unterschiede zu berücksichtigen. Hier kommt mein "nicht möglich" her. –

+0

Ja, diese Frage bezieht sich auf Speicher-APIs. Ich habe es nur mit SQL verglichen. Ich denke, dass es in zwei bis fünf Jahren implementierungsunabhängige APIs geben wird. – guettli

Verwandte Themen