皆様、こんにちは!
アイレット株式会社 DX開発事業部の楊林と申します。
前回の投稿では、Cloud SQL、Cloud Spanner、AlloyDB、Bigtable、BigQuery など、Google Cloud の構造化データ向けストレージサービスについて整理しました。
今回は、Google Cloud でよく使われる残りのストレージサービスと、ストレージサービスの選び方についてまとめて紹介していきます。
Filestore
Filestore は、共有ファイルシステムインターフェースを必要とするアプリケーション向けのマネージドファイルストレージサービスです。Compute Engine や Google Kubernetes Engine(GKE)上のインスタンスから、マネージドなネットワーク接続ストレージ(NAS)をネイティブに利用できます。
パフォーマンスと容量を個別に調整できるため、ファイルベースのワークロードに対して、想定どおりの安定したパフォーマンスを提供します。
既存のエンタープライズアプリケーションにも対応しており、NFS(Network File System)v3 互換クライアントをサポートしています。スケールアウト性能、大容量(数百 TB)、ファイルロックといった機能を活用できます。
Filestore は以下のようなワークロードに適しています。
- エンタープライズアプリの移行の加速
- メディアのレンダリング(渲染)
- 電子設計自動化(EDA)
- データ分析ワークロード
- ゲノム解読
- ウェブコンテンツの管理
Firestore
Filestore と名前が似ていますが、Firestore は高速・サーバーレスのフルマネージド NoSQL ドキュメントデータベースです。
モバイルアプリ、Web アプリ、IoT アプリのデータ保存・同期・クエリをグローバル規模で簡単に行えます。クライアントライブラリを通じて、リアルタイム同期やオフラインサポートが提供され、Firebase や Google Cloud のセキュリティ機能とも統合されています。
Firestore は ACID トランザクションにも対応しており、トランザクション内の処理の一部が失敗した場合、トランザクション全体がロールバックされます。自動マルチリージョンレプリケーションと強整合性により、障害発生時でもデータの安全性と可用性が維持されます。また、NoSQL でありながら柔軟かつ高度なクエリを、パフォーマンスを損なわずに実行できます。
Cloud Firestore は次世代の Cloud Datastore であり、Datastore モード で動作させることも可能です。Datastore モードでデータベースを作成することで、従来の Datastore の動作を維持しつつ、Firestore の改善されたストレージレイヤを利用できます。
Datastore と比較した主な改善点として、以下が挙げられます。
- 結果整合性ではなく強整合性のクエリ
- エンティティグループ数の制限撤廃
- エンティティグループ単位の書き込みスループット制限の撤廃
一方、ネイティブモード の Cloud Firestore では、以下のような機能が提供されます。
- 強整合性を備えた新しいストレージレイヤ
- コレクションとドキュメントによるデータモデル
- リアルタイムアップデート
- モバイルおよび Web クライアントライブラリ
Cloud Firestore は Datastore と下位互換性がありますが、ネイティブモードの新しいデータモデルやリアルタイム更新機能は Datastore とは互換性がありません。一般的には、既存のサーバーアプリケーションでは Datastore モード、新規のモバイル/Web アプリケーションではネイティブモードを選択します。
Firestore では、データはドキュメントとして保存され、コレクションに整理されます。ドキュメントにはサブコレクションやネストされたオブジェクトを含めることができ、Key-Value 形式でデータを保持します。
Firestore のクエリでは、特定ドキュメントの取得、条件に一致するドキュメントの検索、複数条件のフィルタ、並び替えなどが可能です。デフォルトでインデックスが作成されるため、クエリ性能はデータ総量ではなく結果セットのサイズに依存します。
また、Firestore はデータ同期を前提とした設計であり、頻繁に利用されるデータはローカルにキャッシュされます。オフライン状態でも読み書きやクエリが可能で、オンライン復帰時に自動的に同期されます。
Memorystore
Memorystore for Redis は、フルマネージドのインメモリデータストアサービスです。Google が管理する高可用・高スケーラビリティなインフラ上で Redis を利用できます。
複雑な Redis クラスタ管理を意識することなく、スケーラブルでセキュアな Redis 環境を構築でき、アプリケーション開発に集中できます。フェイルオーバー、パッチ適用、モニタリングなどの運用タスクも自動化されています。
高可用性インスタンスは 2 つのゾーンに複製され、99.9% の可用性 SLA を提供します。ミリ秒未満のレイテンシと高スループットを簡単に実現できます。
小さな構成から開始し、可用性への影響を抑えながら段階的にスケールできます。最大 300GB のインスタンスサイズと、最大 12Gbps のネットワークスループットをサポートします。
Redis プロトコルと完全互換であるため、既存のオープンソース Redis からコード変更なしでリフト&シフトが可能です。
ストレージサービスの選び方
Google Cloud には、フルマネージドでスケーラブルなストレージサービスが多数用意されています。要件に適したストレージを選択する際は、データの種類、規模、耐久性、可用性、ロケーションなどの観点を総合的に考慮します。
データの種別で見ると、以下のように整理できます。
- リレーショナル(RDB):Cloud SQL、Cloud Spanner、AlloyDB
- ファイル:Filestore
- NoSQL:Firestroe、Cloud Bigtable
- オブジェクト:Cloud Storage
- ウェアハウス:BigQuery
- インメモリ:Memorystore
スケーリング特性の観点では、
- 水平スケーリング:Bigtable、Cloud Spanner
- 垂直スケーリング:Cloud SQL、Memorystore
- 自動スケーリング:Cloud Storage、BigQuery、Firestore
整合性の観点では、
- 強整合性:Cloud Storage、Cloud SQL、Cloud Spanner、Firestore
- 結果整合性:Bigtable、Memorystore
費用面では、Bigtable や Spanner は大規模データ向けのため、小規模用途では割高になる傾向があります。Firestore は保存コストは低い一方、読み書き回数による課金を考慮する必要があります。BigQuery はストレージ自体は安価ですが、クエリ実行時にコストが発生します。
以下のフローを参考に、ストレージサービスを選択できます。
最後に
今回は、Google Cloud でよく使われる残りのストレージサービスと、ストレージサービスの選び方について紹介しました。
次回は、Google Cloud のストレージに関連する各種サポートサービスについてまとめていく予定です。
続けて読んでいただけると嬉しいです!
以前の投稿
【Google Cloud入門】クラウドサービスの特徴とGoogle Cloudの触り方
【Google Cloud入門】リソースマネージメント
【Google Cloud入門】アクセス管理の基本 - IAM
【Google Cloud入門】サービスアカウントとCloud Identity
【Google Cloud入門】Compute Engineの基礎
【Google Cloud入門】コンピューティングオプションとマネージドインスタンスグループ
【Google Cloud入門】GKE入門の前準備-コンテナの基礎
【Google Cloud入門】GKE入門の前準備-Kubernetesの基礎
【Google Cloud入門】GKE入門の前準備-Kubernetesの構成
【Google Cloud入門】Googleのコンテナ仮想環境ーGoogle Kubernetes Engine
【Google Cloud入門】GCEとGKE以外のコンピューティングサービス
【Google Cloud入門】Google Cloudネットワークの基礎
【Google Cloud入門】Google Cloudネットワークへの接続とVPCの共有
【Google Cloud入門】Google Cloudネットワークの負荷分散
【Google Cloud入門】オブジェクトストレージサービスーCloud Storage
【Google Cloud入門】Google Cloudの構造化データストレージサービス
