[PYTHON] Verwenden Sie den Cloud-Datenspeicher von Compute Engine

Was du machen willst

Ich habe verschiedene Dinge recherchiert und diskutiert, wenn ich über die Compute Engine auf den Datenspeicher zugreifen möchte, also werde ich ein Protokoll darüber führen.

Entscheidungen

Derzeit gibt es ungefähr zwei Möglichkeiten:

  1. Zugriff mit App Engine dazwischen
  1. Klicken Sie direkt auf Cloud Datastore API

Es gibt eine Cloud Datastore-API, aber warum nicht die App Engine dazwischen stellen? Es scheint gedacht zu sein. Aufgrund von Umständen wie der Tatsache, dass die Cloud Datastore-API nicht gut genug ist und der Zugriff von der App Engine auf den Datenspeicher schnell ist, habe ich die App Engine dazwischen gefunden. Es war besser, es zu kneifen oder so etwas.

Das ist aber auch eine alte Geschichte. Ich weiß nicht, was jetzt los ist! Also habe ich verschiedene Dinge ausprobiert.

Lass es uns versuchen!

Ich habe versucht, durch einen einfachen Vorgang des Abrufs einer Entität durch Angabe des Schlüssels zu vergleichen. Da wir es nicht genau gemessen haben, denken Sie bitte, dass jeder Wert um etwa 20 bis 30 ms abweichen kann.

Als ich es von meinem Macbook Pro als Ausgangspunkt aus ausprobierte, waren die Ergebnisse wie folgt.

Cloud Datastore API Über App Engine Über App Engine(Mit Memcache)
Local Über 1000 ms Über 200 ms Über 170 ms

Zu diesem Zeitpunkt war ich völlig verzweifelt, dass die Cloud Datastore-API nicht mehr gut war, aber mein Senior in der Firma war neben mir und sagte "Es tut mir leid!". Also ging ich in die US-Region [^ 1], um zu rechnen. Ich habe eine Instanz von Engine erstellt und mein Bestes versucht. Das Ergebnis ist hier.

[^ 1]: Der Datenspeicher lebt in den USA und in der EU. Erstellen wir also eine Instanz in der Nähe

Cloud Datastore API Über App Engine Über App Engine(Mit Memcache)
GCE (US) 50~Über 200 ms 45~Über 50 ms 15~Über 20 ms

Es ist ein wenig schlampig, weil die Zeit kurz ist und es schwierig wird, es zu messen, aber ich bin der Meinung, dass die Geschwindigkeit der Cloud Datastore-API irgendwie akzeptabel geworden ist.

Die Geschwindigkeit der Cloud Datastore-API ist jedoch nicht stabil, und wenn sie schnell ist, ist sie mit der über App Engine vergleichbar. Wenn sie jedoch langsam ist, kann sie etwa 200 ms dauern, sodass ich den Grund dafür nicht verstehe. Es war. Wenn Memcache über App Engine funktioniert, spart es fast die gesamte Zeit (ca. 30 ms), um über App Engine auf den Datenspeicher zuzugreifen, sodass es schnell geht.

Vor- und Nachteile von jedem

Mit App Engine dazwischen

verdienen

Wenn Sie viele zwischenspeicherbare Anforderungen haben, kann memcache viel Arbeit leisten. Es dauerte ungefähr 30 ms, um die Daten von der App Engine abzurufen, aber es dauerte nur 2 ms, um sie aus dem Cache abzurufen. Es ist auch vorteilhaft, dass keine Lesebetriebsgebühr anfällt.

Fehler

Wenn Sie in der Stapelverarbeitung viele Daten parallel verarbeiten möchten, kostet dies etwas, da Sie eine Instanz von App Engine erweitern.

Klicken Sie direkt auf die Cloud Datastore-API

verdienen

Die Implementierung ist einfach und für eine App Engine-Instanz fallen natürlich keine Gebühren an. Der Zugriff über die Compute Engine erfolgt möglicherweise so schnell wie über die App Engine.

Fehler

Es gibt keinen Memcache. gcloud-py Documentation reicht nicht aus, um zu glauben, dass dies der Anfang des Universums ist [^ 2].

[^ 2]: Wenn Sie genau hinschauen, sind die meisten Elemente Links zum Quellcode.

Persönliches Fazit

Wenn Sie nur an die Geschwindigkeit denken, ist es vorerst etwas schneller, App Engine zu durchlaufen. In einigen Situationen scheint es jedoch auch eine Option zu sein, die Cloud Datastore-API direkt von Compute Engine aus zu aktivieren. ..

Wenn der Memcache nicht funktioniert, z. B. die Eingabe von Daten in einem Stapelverarbeitungsprozess, scheint es einfacher zu implementieren und kostengünstiger zu sein, den Cloud-Datenspeicher direkt aufzurufen.

Bonus

Die Installation von gcloud-python erfolgt grundsätzlich

pip install gcloud

Das ist in Ordnung, aber es scheint eine neuere im Hauptzweig von GitHub zu geben.

Wenn Sie sich Code im Hauptzweig ansehen, verwenden Sie ihn, wenn es einen solchen gRPC gibt Eine neue Beschreibung wie diese wurde hinzugefügt [^ 3].

[^ 3]: Ab dem 28.08.2016 wurde diese Funktion in Version 0.18.1, die mit pip geliefert wird, nicht implementiert.

スクリーンショット 2016-08-28 17.45.22.png スクリーンショット 2016-08-28 17.53.15.png

damit

pip install git+https://github.com/GoogleCloudPlatform/gcloud-python

Ich habe auch gcloud-python ausprobiert, das direkt vom Hauptzweig von GitHub installiert wurde, und festgestellt, dass es bis zu 20 ms schneller war und ziemlich gut mit via App Engine übereinstimmt.

Ich hatte das Gefühl, dass die Geschwindigkeit nicht wie üblich sehr stabil war, aber ich habe das Gefühl, dass ich mich sehr bemühe, die Leistung zu verbessern, und freue mich darauf.

Recommended Posts

Verwenden Sie den Cloud-Datenspeicher von Compute Engine
Greifen Sie über eine Compute Engine-Instanz auf den Cloud-Speicher zu
Führen Sie Cloud Dataflow (Python) über AppEngine aus
Verwenden Sie die Google Cloud Vision-API von Python
Firebase: Verwenden Sie Cloud Firestore und Cloud Storage von Python
Verwenden Sie thingspeak aus Python
Verwenden Sie fließend Python
Verwenden Sie MySQL aus Python
Verwenden Sie BigQuery aus Python.
Verwenden Sie mecab-ipadic-neologd von Python
Verwenden Sie MySQL von Anaconda (Python)
Verwenden Sie das Django-Modell vom Interpreter
Verwenden Sie die e-Stat-API von Python
Spielen Sie mit GCP Free Frame ② ~ Luftstrom (auf Compute Engine), Cloud-Funktionen ~