Google App Engineデータストレージ

この記事は、Nick Johnsonによるブログ投稿に基づいています。 それに加えて、現時点で関連するいくつかの図が示され、いくつかのメモが追加されています。

App Engineには、情報を保存する多くの方法が用意されています。 いくつか(たとえば、データウェアハウス)はよく知られていますが、他のものはほとんど存在せず、すべてが異なる特性を持っています。 この記事では、さまざまな可能性をリストし、それぞれの長所と短所について説明します。これにより、データストレージ機能に関する詳細情報を使用して意思決定を行うことができます。

データウェアハウス(データストア)


最も有名で使用済みの柔軟なデータウェアハウス。 DatastoreはApp Engineの非リレーショナルデータベースであり、信頼性の高い長期ストレージを提供し、データの保存、受信、処理に最大限の柔軟性を提供します。

Memcache


Memcacheは、「セカンダリ」データストレージのメカニズムとして知られています。 memcache APIを使用すると、アプリケーションはデータを楽観的にキャッシュして、コストのかかる操作を回避できます。 Memcacheは、データストアなどの他のAPIのキャッシュレベルとして、または計算の結果をキャッシュするためによく使用されます。

インスタンスメモリ


アプリケーションインスタンスは、グローバル変数またはクラスメンバーを使用してデータをキャッシュすることもできます。 この方法は最高の速度を提供しますが、いくつかの欠点があります。

ブロブストア


BLOBストレージを使用すると、ユーザーがアップロードした大量のデータを簡単かつ効率的に保存および転送できます。

ローカルファイル


アプリケーションは、標準のファイルシステム操作を使用して、アプリケーションと共にダウンロードされ、静的コンテンツとしてマークされていないファイルを読み取ることができます。 これにより、アプリケーションに必要な読み取り専用データが追加されます。

タスクキューペイロード


これは、従来の意味でのストレージではなく、データをタスクキューからタスクにアタッチできます。これにより、他のストレージシステムの必要性を排除できます。

メール


App Engineでは、メールはユーザーとの通信だけでなく、技術的な目的にも使用できます。 この場合、データを転送する方法はタスクキューペイロードを使用するのと似ていますが、電子メールを使用すると、たとえば別のApp Engineアプリケーションにデータを転送するなど、より多くのオプションが提供されます。

URLfetch


URL取得APIを使用すると、HTTPおよびHTTPS要求を使用して他のホストから情報を取得できます。

アプリケーションログ


通常、この方法は忘れられがちであり、アプリケーションの操作に関する情報を収集するためにデータストアが使用されます。 ただし、技術情報やデバッグ情報を収集する際にアプリケーションのパフォーマンスを低下させたくない場合は、この方法の方がはるかに優れています。

おわりに


App Engineには、一見思われるよりもはるかに多くの方法でデータを保存できます。 それぞれに妥協点があるため、そのうちの1つ(またはそれ以上)がアプリケーションに適合する可能性があります。 多くの場合、最適なソリューションには、データストアとmemcacheなどのメソッドの組み合わせ、またはローカルファイルとインスタンスメモリが含まれます。

Source: https://habr.com/ru/post/J110901/


All Articles