J'ai recherché et discuté de diverses choses lorsque je souhaite accéder au magasin de données à partir de Compute Engine, je vais donc en garder une trace.
Pour le moment, il existe à peu près deux options:
Il existe une API Cloud Datastore, mais pourquoi ne pas mettre App Engine entre les deux? Cela semble être pensé. Cependant, en raison de circonstances telles que l 'API Cloud Datastore n'étant pas assez bonne et l'accès rapide d'App Engine au magasin de données, App Engine était entre les deux. Il valait mieux le pincer ou quelque chose comme ça.
Mais c'est aussi une vieille histoire. Je ne sais pas ce qui se passe maintenant! J'ai donc essayé diverses choses.
J'ai essayé de comparer par un simple processus de récupération d'une entité en spécifiant la clé. Comme nous ne l'avons pas mesuré avec précision, pensez que chaque valeur peut différer d'environ 20 à 30 ms.
Lorsque je l'ai essayé à partir de mon Macbook Pro comme point de départ, les résultats étaient les suivants.
Cloud Datastore API | Via App Engine | Via App Engine(Avec memcache) | |
---|---|---|---|
Local | Environ 1000 ms | Environ 200 ms | Environ 170 ms |
À ce stade, j'étais complètement désespéré que l'API Cloud Datastore ne soit plus bonne, mais mon responsable de la société à côté de moi a dit: "N'abandonnez pas!", Alors je suis allé aux États-Unis [^ 1] pour Compute. J'ai construit une instance de Engine et j'ai fait de mon mieux. Le résultat est là.
[^ 1]: Datastore vit aux États-Unis et dans l'UE, alors créons une instance à proximité
Cloud Datastore API | Via App Engine | Via App Engine(Avec memcache) | |
---|---|---|---|
GCE (US) | 50~Environ 200 ms | 45~Environ 50 ms | 15~Environ 20 ms |
C'est un peu bâclé car le temps est court et cela devient difficile à mesurer, mais je pense que la vitesse de l'API Cloud Datastore est devenue en quelque sorte acceptable.
Cependant, la vitesse de l'API Cloud Datastore n'est pas stable, et lorsqu'elle est rapide, elle est aussi rapide que via App Engine, mais lorsqu'elle est lente, cela peut prendre environ 200 ms, donc je ne comprends pas la raison. C'était. De plus, lorsque vous utilisez Memcache via App Engine, il est rapide car cela permet d'économiser presque tout le temps (environ 30 ms) pour accéder à Datastore depuis App Engine.
Si vous avez beaucoup de requêtes pouvant être mises en cache, Memcache peut faire beaucoup de travail. Il a fallu environ 30 ms pour obtenir les données depuis App Engine, mais il n'a fallu que 2 ms pour les extraire du cache. Il est également avantageux qu'il n'y ait pas de frais d'opération de lecture.
Si vous souhaitez traiter beaucoup de données en parallèle dans le traitement par lots, cela vous coûtera un peu car vous développerez une instance d'App Engine.
C'est facile à mettre en œuvre et, bien sûr, il n'y a pas de frais pour une instance App Engine. L'accès à partir de Compute Engine peut être aussi rapide que de passer par App Engine.
Il n'y a pas de Memcache. gcloud-py Documentation n'a rien à voir comme le début de l'univers [^ 2].
[^ 2]: Si vous regardez de près, la plupart des éléments sont des liens vers le code source.
Si vous pensez simplement à la vitesse, il est un peu plus rapide de passer par App Engine pour le moment, mais dans certaines situations, il semble que l'accès à l'API Cloud Datastore directement depuis Compute Engine soit également une option. ..
Si Memcache ne fonctionne pas, comme la saisie de données dans le traitement par lots, il semble plus facile à mettre en œuvre et moins coûteux d'accéder directement à Cloud Datastore.
L'installation de gcloud-python est essentiellement
pip install gcloud
C'est bien, mais il semble qu'il y en ait un plus récent dans la branche master de GitHub.
En regardant le code dans la branche principale, s'il existe un gRPC comme celui-ci, utilisez-le Une nouvelle description comme celle-ci a été ajoutée [^ 3].
[^ 3]: Depuis le 28/08/2016, cette fonctionnalité n'était pas implémentée dans la v0.18.1, qui est fournie avec pip.
alors
pip install git+https://github.com/GoogleCloudPlatform/gcloud-python
J'ai également essayé gcloud-python, qui a été installé directement à partir de la branche principale de GitHub, et j'ai trouvé que c'était jusqu'à 20 ms plus rapide, et que c'était une assez bonne correspondance avec via App Engine.
J'ai senti que la vitesse n'était pas très stable comme d'habitude, mais je sens que je fais de gros efforts pour améliorer les performances, donc j'ai hâte d'y être.
Recommended Posts