本文へスキップ
BecomeCoder

AWSコース · 第5章 データベース · レッスン28

ElastiCacheとRedshift

導入

データベースへのアクセスが集中すると、同じ問い合わせが何度も繰り返されて重くなることがあります。また、日々の売上データを何年分もためて分析したい場合、日常の注文処理と同じデータベースで済ませてよいのでしょうか。

説明

Amazon ElastiCacheは、インメモリ(メモリ上でデータを扱う)のキャッシュサービスで、Redis・Memcachedという2つの主要なキャッシュエンジンに対応しています。よく参照されるデータをディスクベースのデータベースの手前にキャッシュとして置くことで、応答速度を大幅に高速化し、データベース本体への負荷を減らします。

Amazon Redshiftは、データウェアハウス(大量のデータを蓄積し、集計・分析するための基盤)サービスです。数年分の売上データを横断して集計したり、BI(ビジネスインテリジェンス)ツールと連携して経営分析を行ったりする用途に向いています。

この2つを理解する鍵は、データベースの利用目的を分ける次の考え方です。

  • OLTP(Online Transaction Processing・オンライントランザクション処理) … 注文登録・在庫更新のような、日常業務の1件ずつの読み書きを高速にさばく処理。RDS・Aurora・DynamoDBが得意。
  • OLAP(Online Analytical Processing・オンライン分析処理) … 大量のデータをまとめて集計・分析する処理。Redshiftが得意。
flowchart LR
    App["アプリケーション"] -->|よく読むデータ| Cache["ElastiCache(Redis/Memcached)"]
    Cache -.->|キャッシュに無ければ| DB["RDS / Aurora(OLTP)"]
    DB -->|日々のデータを蓄積| DWH["Redshift(OLAP・データウェアハウス)"]
    DWH --> BI["BIツールで分析"]

日常のトランザクション処理を高速化する「キャッシュ」と、蓄積したデータをじっくり分析する「データウェアハウス」は、目的も使うタイミングもまったく別物だと押さえておきましょう。

具体例

大手ニュースサイトの例で、2つの役割の違いを見ます。

  • ElastiCache(速さ) … トップページのアクセスランキングは、全ユーザーに同じ内容を返すのに、毎回DBへ重い集計クエリを投げていました。そこで集計結果を数分間 ElastiCache(Redis)にキャッシュ。以後はメモリから即座に返せるようになり、表示が速くなり、DB本体の負荷も激減しました。
  • Redshift(分析) … 一方、経営企画部は「過去3年分のアクセス傾向を曜日・カテゴリ別に集計したい」。これを日々の記事配信を担うRDSで実行すると、本番が重くなって危険です。そこで日々のデータをRedshiftへ蓄積し、そこでBIツールとつないでじっくり分析。本番サービスに一切影響を与えません。

「今この瞬間の表示を速くする(OLTPの補助)=ElastiCache」「溜めた大量データをまとめて分析する(OLAP)=Redshift」。同じ“データベース”でも、速さのためか、分析のためかで置き場所を分けるのがポイントです。

読んでみよう

「ElastiCache=速さのためのキャッシュ(OLTPの補助)」「Redshift=分析のためのデータウェアハウス(OLAP)」という対比で覚えると混同しにくくなります。

次のレッスンへ →