GAEデータストアを開始する前に、マスター/スレーブデータストアと高レプリケーションデータストアの違いを知っておくとよいと思いますか?そして、GAEチームがマスター/スレーブからHRDに移行する理由は何ですか?
3 に答える
2つの違い(および切り替えの理由)は、フォールトトレランスとデータの一貫性の向上です。
マスター/スレーブデータストアは、プライマリバックアッププロトコルを実装します。各アプリはマスター(つまり単一のデータセンター)によって提供され、そのデータはスレーブ(つまり他のデータセンター)に非同期で複製されます。このスキーマの問題は、ローカル障害からアプリケーションを保護せず、データの不整合につながる可能性が高いことです。
High Replication Datastoreは、Paxosコンセンサスアルゴリズムを実装して、大多数のデータセンターがアプリケーションのデータの一貫したビューを維持することを保証します。データは単一のデータセンターの状態に依存しなくなったため、ローカル/グローバル障害が発生した場合でもデータストアは適切に機能できます。Googleのエンジニアもこの実装の恩恵を受けています。これにより、AppEngineアプリケーションにスケジュールされた読み取り専用期間を強制することなく、データセンターのメンテナンスを実行できるようになります。
High Replication Datastoreを使用することの欠点は、書き込みが遅くなることです(Paxosは本質的に2フェーズであるため、約2倍遅くなります)。ただし、これはそれほど大きな問題ではありません。特に、ハイレプリケーションデータストアが提供するフォールトトレランスとデータの一貫性の向上と比較した場合はなおさらです。
マスター/スレーブのみを使用したAppEngineの最初の3年間は、データストアの正常性は単一のデータセンターの正常性に関連付けられていました。ユーザーは、待ち時間が短く、一貫性が高いだけでなく、一時的なデータが利用できず、読み取り専用期間が計画されていました。
高レプリケーションデータストアは、わずかな遅延と一貫性をトレードして、大幅に高い可用性を実現します。
マスター/スレーブストアは非推奨です。使用しないことをお勧めします、https://developers.google.com/appengine/docs/python/datastore/usingmasterslave