Database

Database

Databaseの概要

  • DBとは。DBMS

  • CRUDとは。

  • DBとストレージの違い

  • DBの意味

    • 障害や復旧

    • 複数人のアクセス

    • 大量データの検索

  • データベースの役割

    • トランザクション

      • 同時アクセス

      • 処理に失敗するとrollbackする

      • 復旧

    • データモデル

トランザクションのACID特性

  • A: Atomicity(原始性)

    • すべて実行か、一つも実行されないかどちらかの状態。

  • C: Consistency(整合性)

    • データの整合性。

    • 整合性モデル

      • 結果整合性(データが古い可能性)

      • 強い整合性(データ更新中は参照できない)

  • I: Isolation(独立性)

    • 実行中の過程を隠蔽し他の処理に影響を与えない。

  • D: Durability(耐久性)

    • トランザクション中にクラッシュしてもデータが失われない。

データモデル

  • 様々なモデルがある

    • リレーショナルモデル

    • グラフモデル

    • キーバリューストア

    • オブジェクト

    • ドキュメント

    • ワイドカラム

    • 階層型

最適なデータベースの選択

  • RedShift

  • RDS

  • DynamoDB

  • Aurora

  • Elastic Search

大きな区分け

  • リレーショナルDB

    • 通常のDB

    • ER図などで表現する構造化データ

    • 会計データや顧客データなど

    • SQLで操作

  • NoSQL

    • ビッグデータ向け

    • 構造化されていないKey,Valueのみ

    • 非構造化データ(文書、動画、音声)

    • 半構造化データ(XML, JSON, 文書)

    • SQLを使わないが、SQLに似た操作ができるものもある。

NoSQLの種類

  • キーバリューストア

    • 高速なパフォーマンスと分散拡張に優れている

    • 読み込みが高速

  • ワイドカラムストア

    • 列指向データベース

    • 行ごとに任意のカラムを無数に格納できる。

  • ドキュメントデータベース

    • Valueではなく、JSONやXMLそのものを格納

  • グラフデータベース

    • グラフ理論を用いたデータベース

    • 高速な横断検索が可能

ビッグデータの活用

  • DWH

    • 構造化データ

    • 売り上げ・財務分析などのデータ分析

  • アーカイブデータ

    • 構造化アーカイブデータ

    • DWHだけでは不可能な長期過去データを分析

  • 半構造化

    • IoTなど膨大なビッグデータを活用した分析・AI構築

  • 非構造化

    • 非構造化データを活用した分析・AI構築

RDB

  • AWSのサービスではRDSが該当

DWH

  • 概要

    • BIツールなどと連携した分析向けのデータベース

    • AWSのサービスではRedshiftが該当

    • オンプレであれば、Exadata, Teradataなど。

    • 読み込みデータ構造をあらかじめ設計して蓄積していく。

    • レスポンス重視でデータ抽出・集計が速いが、更新・トランザクションは遅い。

  • アーキテクチャ

    • データをパーティショニングし、複数ディスクから読み込む

    • 列指向

分散型DB/データレイク

  • 高速処理を可能にするDBとストレージの組み合わせ

  • AWSであれば、S3がデータレイクに相当(するが、分散DBと言えるか??)

  • オンプレではApache Hive, Apache Hadoopなど

KVS

  • AWSサービスではElastiCacheやDynamoDB

  • オンプレであれば、Redisなど。

  • 結果整合性を採用。高速なデータ処理を重視。

  • 用途

    • webサイトのバックエンドデータ(ユーザーセッションなど)

    • twitterなどのメッセージングシステム

  • キーに応じてデータを分散して保存し分散処理できる。

ワイドカラム型

  • AWSサービスではDynamoDB

  • オンプレではcassandra, Apache HBASEなど

  • データ取得の際に結合しなく良いように、可能な限り多くのデータを同じ行に保持する。

  • KVSと異なり、SQLライクなデータ操作が可能。

  • 更新はできず、挿入による上書きで実現する。

  • 用途

    • ソーシャルデータの位置情報データ

    • データマイニング処理

  • キーとカラムが入れ子構造となっている。

  • ここがワイドカラムについては分かりやすいかも。

    • https://future-architect.github.io/articles/20190718/

ドキュメントDB

  • AWSサービスでは、DocumentDB(MongoDB)が該当。

  • JSONやXMLデータを格納

  • 様々なデータ構造を混ぜて保存できる

    • 構造が違ってもOK

  • KVSよりもクエリが豊富なため操作しやすい

  • shardingによるデータベース分散化が可能

インメモリデータグリッド

  • AWSでは、Redis ElastiCacheやMemcached ElastiCacheが該当

  • KVSをメモリ上で実現し高性能にしたDB

  • データを多数のサーバーで分散して処理可能

  • 金融の取引データなどが利用対象

全検索型エンジンと分散DB

  • AWSではElasticSearch

  • オンプレではElasticSearchやkibana

  • 合分析の柔軟性や速度が高く、分析・蓄積・可視化環境を容易に構築可能

  • 半構造化データを対象

  • サイト内の全データ検索や検索自身の可視化など。

グラフDB

  • AWSではAmazon Neptune

  • オンプレでは、Neo4j

  • グラフ演算に特化したDB

  • データ間のつながり方の検索・可視化に利用

  • 利用対象としては、最短経路・金融取引の詐欺検出・ソーシャルネットワークの計算

  • RDB以上にスケールアウトすることはできない。

  • レコードが増えると検索に時間がかかる。

分散OLTP(RDB)

  • AWSでAuroraで提供される。

  • 分散型の次世代RDB。

  • 高い高可用性と高性能なトランザクションと強整合性が実現

  • 利用対象としては大規模な業務データ処理など

DynamoDB

DynamoDBの特徴

  • 完全マネージド型のNoSQLデータベースサービス

  • ハイスケーラブル

    • 無制限に性能を拡張でき、ストレージの増加なども不要

  • 低レイテンシー

    • 負荷が高くなっても応答速度を維持

  • 高可用

    • SPOFなしでデータを3つのAZに保存

  • メンテナンス不要

    • マネージド型のためCloudWatchで運用

  • プロビジョンドスループット設定

    • テーブルごと、Read/Writeごとに必要なスループットキャパシティの割り当てが可能。

DynamoDBでできること

  • ワイドカラム型のデータベース

  • できること

    • キーに対するバリュー(値)のCRUD 操作

    • 簡易なクエリやオーダー

    • 数万人が同時にアクセスするようなセッションデータの管理など

  • できないこと

    • JOIN, TRANSACTION, COMMIT, ROLLBACKは負荷

    • 詳細なクエリやオーダー(検索など)に不向き

    • 大量のデータIOにはコストがかかる。

DynamoDBの整合性モデル

  • デフォルトは結果整合性

  • Write

    • 2つのAZで書き込み完了された時点で完了

  • Read

    • デフォルト

      • 結果整合性

    • オプション

      • 強い整合性モデル

      • GetItem, Query, Scanでは強い整合性のある読み込みオプションが指定できる。

DynamoDBのパーティショニング

  • 一つのテーブルを複数のパーティションに分けるなど。

DynamoDBのユースケース

  • ビッグデータ向けの処理

    • 大量のデータを収集・蓄積・分析(Kinesis連携など)

    • Hadoopと連携したビッグデータ処理

  • アプリケーション向け

    • 大規模サービスで高速処理が必要なアプリケーション向け

    • ユーザー数が多いアプリケーションのデータ処理

  • ユーザー行動管理

    • ゲーム、広告などのユーザー行動のDB

    • transactionやrollebackがあまりいらない

  • バックエンドデータ処理

    • モバイルアプリのバックエンド

適用分析

  • JOIN, TRANSACTION, COMMIT, ROLLEBACKがあるか

  • 検索, 大量の読み書きがあるかないかで判断

テーブル設計

  • テーブル

    • 項目(Item): 例としてはPersonalなど

      • 属性: 1つ以上の属性を持つ。Personalの属性として、姓、名など。

  • 属性はVALUE型でもJSON型でも不揃いでよい。

DynamoDBのインデックス

  • 暗黙的なキー

    • データを一意に特定するため、ハッシュキーやレンジキーを宣言して検索に利用するキー

    • 1テーブルに1つ宣言

  • 明示的なキー

    • LSI(local secondary Index)

      • 追加でレンジキーを増やすイメージ

      • 1テーブルに5つ作成可能、テーブル作成時に作成

      • 検索を詳細にしたい場合などに使用。

    • GSI(global secondary Index)

      • データに対して別のハッシュキーを設定できる。

      • 1テーブルに5つ作成可能、テーブル作成後に作成

プライマリーキー

  • ハッシュキー

    • テーブル作成時に一つの属性を選択し、ハッシュキーとして宣言

    • ハッシュ関数によってパーティションを決定するためハッシュキーと呼ぶ

    • 単独での重複は許さない

  • レンジキー(複合キー)

    • ハッシュキーにレンジを加えたもの

    • 2つの値の組み合わせにより項目を特定

    • 複合キーは、単独であれば重複が許される。

  • ハッシュキーにもレンジキーにも、アイテムの属性を使用する。

明示的に利用するインデクス

  • ハッシュキーやレンジキーだけで検索が満たせない場合に使用

  • LSIは複合キーテーブルのに設定できる。

  • GSIはハッシュキーの代わりとなるため、ハッシュキーテーブル、複合キーテーブルどちらにも設定可能

  • 使用するとスループットやストレージ容量の追加が必要なため、多用すべきではない。

テーブル操作

  • 代表的なもの

    • GetItem

      • ハッシュキーを条件に一定の項目を取得

    • PutItem

      • 1件書き込み

    • Update

      • 1件更新

    • Delete

      • 1件削除

    • Query

      • ハッシュキーやレンジキーを元にした検索(最大1MB)

    • Scan

      • テーブルの全件検索(最大1MB)

    • BatchGet

      • 複数のプライマリーキーに対してマッチする項目を取得

DynamoDB Streams

  • DynamoDBテーブルに保存された項目の追加・変更・削除の発生時の履歴をキャプチャできる機能

  • 過去24時間以内のデータ変更履歴を保存し、24時間経過すると消去される

  • 同じハッシュキーに基づくデータの順番は維持されるが、異なるハッシュキーの場合順番が前後する可能性がある。

  • ユースケース

    • クロスリージョンレプリケーション

      • streamsのキャプチャをトリガにしてレプリケーションを実行できる

    • データ更新をトリガーとしたアプリケーション機能

      • データ更新に応じた通知処理などのアプリケーション処理の実行

      • lambda関数の実行などで、別テーブルの自動更新やログ保存、プッシュ通知などを実現できる。

DynamoDB Accelerator (DAX)

  • DynamoDBにインメモリキャッシュ型の機能を付加する。

  • DAXクラスタを使用して読み込む。

  • マルチAZDAXクラスタを構成できる。

  • マイクロ秒単位まで結果整合性のある読み込みワークロードの応答時間を短縮。

    • 金融系などが想定される用途である。

  • DAXは運用上そしてアプリケーションの複雑性に影響なく容易に導入できる。

グローバルテーブル

  • DynamoDBはリージョン単位で作成するが、リージョン間で同期されるマルチマスターテーブルを作成可能

  • 複数のリージョンにエンドポイントを持つことができる。

  • レプリケーションにかかるデータ転送料金が必要

  • 強い整合性を設定することはできなくなる。

オンデマンドバックアップ

  • パフォーマンスに影響なく数百TB のバックアップを実行可能

  • 任意のタイミングで利用可能な長期間データ保存用バックアップ

  • 従来はデータパイプラインを利用して取得したバックアップを容易に実施できるようになった。

Read/Writeキャパシティオンデマンド

  • キャパシティ設定不要でリクエストに応じた課金設定を選択できるようになった。

    • トラフィック量の予測が困難な場合にリクエストの実績数に応じて課金

    • オンデマンドで Read Write 処理に自動スケーリングを実施

    • プロビジョンドキャパシティ設定への変更は無制限

    • オンデマンドへの変更は 1 日 1 回まで

DynamoDB活用

  • 既存のRDB 中心のアーキテクチャを見直して DynamoDB とLambda などの組合せでサービスが実現できないか検証する

DynamoDBのデモ

  • DynamoDBはテーブルを作成する。

    • RDBはデータベースを作る。

    • S3と同様、リージョンに作成される(AZではない)。

テーブル作成

  • テーブル名の作成

  • パーティションキーの設定

    • プライマリーキー。これがハッシュになる。

    • 例:社員ID

  • ソートキーの設定

    • プライマリーキーのレンジキーとなる。

    • 例:部署名

  • テーブルクラス

    • 標準と標準の低頻度アクセスが選択できる。

  • キャパシティ計算ツール

    • 後述のキャパシティの見積もりができるツール

  • キャパシティモード

    • オンデマンドとプロビジョンドを選択可能

  • 読み込みキャパシティ

    • Auto Scalingを有効にすると、最大、最小のキャパシティユニットを設定可能

  • 書き込みキャパシティ

    • 同上。

  • セカンダリインデックス

    • LSI

      • ソートキーを追加できる。

      • ただしよりキャパシティを消費する

      • 途中で追加することができないので要注意

    • GSI

      • テーブル全体をスキャンして全体で何かを算出したい場合に使用

      • パーティションキーとソートキーが必要になる。

      • GSIは後で作成できる。

      • ただしよりキャパシティを消費する

  • 保管時の暗号化設定

    • 暗号化自体は必ず設定する。

データ追加

  • パーティションキー、ソートキーは空にすることができない。

  • セカンダリは空でも実施できる。

  • マネコンでも追加可能だが、基本はプログラムで追加していく。

その他の機能

  • モニタリング

    • CloudWatchのメトリクスを確認できる。

    • アラーム等も設定可能。

  • グローバルテーブル

    • レプリカを作成することができる

    • これを作成すると、付随してDynamoDB Streamsが自動的に有効化される。

  • バックアップ

    • オンデマンドバックアップを設定したり、スケジューリングすることが可能。

    • AWS Backupを使用したり、DynamoDBで実施することが可能

    • スケジューリングの場合は、AWS Backupと連携して実現する。

  • ポイントタイムリカバリ(PITR)

    • データを誤って削除した場合に時点を指定して復元できる。

    • 追加の料金が必要。

  • エクスポート(DynamoDB Stream)

    • DynamoDB Streamの設定。

    • Kinesisと連携してまずStreamが作成される。

    • その後、ストリームを有効化する。

  • S3へのエクスポート

    • PITRを有効化すれば、S3バケットに保存することが可能。

  • PartiQL

    • SQLのようなクエリを実行することができるようになっている。

  • リザーブドキャパシティ

    • リザーブドで予約して購入することが可能。

    • 割引された状態で購入することができる。

DAX

  • クラスターを設定する

  • T型とR型を選択できる。

  • サブネットに対して作るため、サブネットを指定する必要がある。

  • サブネットグループを選択(新規作成)する。

    • VPCを指定する。

      • その中のサブネットを選択する。

  • アクセスコントロール

    • セキュリティグループを設定する。

  • AZ割り当て

    • ノードを自動的にどのAZに割り当てるか決める。

    • 手動でも設定可能

  • IAMロール設定

    • DynamoDBにアクセスする権利をクラスタに付与する。

    • Readonly, ReadWriteテーブル指定など細かい権限を指定できる。

  • 暗号化

    • メモリ保持時や転送時の暗号化設定を有効化できる。

  • パラメータグループ

    • 新規作成か設定する

  • メンテナンスウィンドウ

    • クラスタのメンテナンスをする時間をせっていできる。

Aurora

Auroraの概要

  • マルチAZで分散されたクラスター構成により、高速・高性能なリレーショナルデータベース

  • Amazonがクラウド時代に適したリレーショナルDBを一から考えて構築された新RDB

  • その特徴はNoSQL型の分散高速処理とRDBとしてのデータ操作性を両立させたこと

  • MySQLと2.5~5倍の性能を商用データベースの10分の1の価格で提供する高性能・低コストDB

特徴

  • 高い並列処理によるストレージアクセスによってクエリを高速処理することが可能

  • Auroraは大量の書き込みや読み込みを同時に扱うことができる

  • データベースの集約やスループット向上が見込まれる

  • ただし、すべてが5倍高速というわけではなく、適用すべき領域を見つけて利用する

  • MySQL5.6互換やPostgreSQL互換を選択可能

耐障害性/自己回復性

  • 3つのAZに2つのコピーを設置可能で合計6つのコピーを保持

  • 過去のデータがそのままS3に継続的バックアップ

  • リストアも差分適用がなく高速

  • どのタイミングでも安定したリストア時間を実現

  • 99.99%の高可用性・高耐久性

スケーラビリティ

  • 10GBから最大64TBを提供するSSDデータプレーンを利用してシームレスに拡張可能

  • Auto-Scalingなどのクラウド独自のスケーラブルが可能

  • 最大15のリードレプリカを利用した高速読み込みが可能

ユースケース

  • 大規模なクエリ処理が発生するRDB環境などはAuroraへの移行を検討する。

    • 書込み量が多くでトランザクション量が多い

    • クエリ並行度が高い、データサイズが大きいケースで効果を発揮する

    • コネクション数やテーブル数が多いデータベース処理

  • 運用の容易さを活用する

    • スケーラビリティの高さやデータ容量が無制限に拡張できる

    • レプリケーションなどの性能の高さ

構成

  • 1つのDBインスタンスと1つのDBクラスタボリュームで構成

  • 3つのAZにコピーされたクラスタを単一と認識

  • Aurora Write(マスター)とAurora Reader(リードレプリカ, 最大15個)でDBクラスタを構成する。

  • Write, Readそれぞれのエンドポイントを介してEC2などからアクセスする。

フェイルオーバー

  • Readerをtier番号が大きい順、サイズが大きいサイズのReaderにフェイルオーバーを実施する。

マイグレーション

  • MySQLやPostgresSQLのスナップショットからAuroraへマイグレーション可能

    • MySQLは5.6, 5.7, 8.0.23のバージョンと互換性がある

マルチマスタ構成

  • Writerを複数別AZにスケーラブルに構築可能

  • どのノード、AZが落ちてもダウンタイムがゼロとなる

AuroraグローバルDB

  • 他リージョンに設置する高性能なリードレプリカ作成が可能

  • ストレージレベルでレプリケーションを実施し、低レイテンシーでセカンダリリージョンとレプリケーションが可能

作成

  • 使用可能なインスタンスクラス

  • tおよびrから選択

  • 設置場所

    • VPCおよびサブネットを選択

    • セキュリティグループの設定

カスタムエンドポイント

  • エンドポイントを増やすことが可能。

  • 増やすメリットは?

DBクラスタを他のAWSアカウントと共有

  • ?

プロキシの作成

  • lambdaと連携する場合はプロキシを作成する

  • こちらだとコネクションが増えないというが、なぜだろう?

AutoScalingポリシー

  • RDSはストレージしかスケーリングできない。

  • AuroraはEC2インスタンスのようにAutoScalingすることができる。

  • 具体的には、リードレプリカを増加させたりすることができる。

スナップショット

  • S3に保存され、ユーザーが指定したS3に保存することも可能。

クローン

  • クラスタ構成自体を複製することが可能。

実際の接続

  • mysqlコマンドがインストール済みのEC2インスタンスからエンドポイントに接続する。

Auroraサーバレス

  • ワークロードが予測困難な場合に使用

  • Auroraのオンデマンド自動スケーリングを実施

  • lambdaなどと連携して必要に応じて起動する。

  • 普通のAurora(プロビジョンド)との違い

    • インスタンスサイズを指定できない。

    • 代わりにフリートを設定してACUをMIN,MAXを設定する。

  • スケールがタイムアウトした場合や、アイドル状態の挙動も設定が必要。

  • DATA APIを有効にすると接続を管理せずに、Auroraサーバレスに対してSQLクエリを実行できる。

Auroraサーバレスのメリット

  • 実働時間の変動が激しいケースでコストが安くなる。

  • スケーリングや可用性面でAuroraには劣る。

Redshift

Redshift概要

  • DWHを構成する、またはデータレイク分析をするサービス

  • ペタバイト以上まで拡張可能

  • 1TBあたり年間1,000USD以下で利用可能。

  • 自動ワークロード管理で、自動テーブルメンテナンスなどができるフルマネージド型

  • PostgresSQL互換の列指向データモデル

  • クラスタ構成が可能だが、単一AZでマルチAZ構成は不可。

  • 高性能なra3インスタンスを使う

  • AQUAによる分散キャッシュによる高速動作が可能

データレイクの分析

  • S3にデータをため込む

  • S3をデータレイクとし、Redshift Spectrumで分析

インスタンスタイプ

  • RA3またはDC2インスタンスを選択

  • RA3インスタンスは1ノードあたり$3.836USD/hourだが、DC2は$0.314USD/hour

  • RA3は最低2ノード必要

  • 1TB未満のデータセットでは、DC2ノードの使用を推奨

構成

  • リーダーノード

    • クエリのエンドポイント

    • SQLの生成、実行

  • コンピュートノード

    • 高速SSDによるキャッシュ

    • クエリの並列実行

    • 最大32個まで適用可能

  • ストレージはRedshift管理用S3が勝手に構成

特徴

  • 列指向

  • データ圧縮

    • ブロック単位でデータを格納し、ディスクIOを効率化

  • ソート

    • ブロックに対してメタデータを付与してそれを用いて検索する

    • リーダーノードのメモリにメタデータが格納されている

  • データ分散

マテリアライズドビュー

  • SQLのViewのような機能

  • 頻繁に実行するパターンを結合・フィルタ・集計・射影などを使って高速化

運用の自動化

  • CloudWatchとの連動

  • 自動バックアップ

    • スケジューリングやスナップショットが可能

  • 自動メンテナンス

    • パッチ適用は自動で実施

    • 時間を指定できる

  • スケジューリング機能

    • クラスターサイズの変更設定

    • 一時停止と再開時間を設定

機械学習によるクエリの効率化

  • テーブルメンテナンスの自動化

    • テーブル分散スタイルの自動最適化

    • 統計情報を使ってデータを再編成する

  • 自動ワークロード管理

    • 複数クエリの実行をワークロードで管理する際に機械学習でクエリ実行の優先順位を決めて自動化

  • ショートアクセラレーション

    • クエリの実行時間を予測し、実行時間が短いクエリを優先して実行

    • WLM(work load management)キューを削減可能

  • 設定のレコメンデーション

    • パフォーマンスを分析し最適化やコスト削減についてレコメンデーションする

ワークロード管理(WLM)

  • ワークロードに応じてキューを設定し、スロットでCPUやメモリを割り当てる。

  • スロットを増やすと並列度が向上するが割り当てメモリは減少する。

  • 説明がよくわからんよ?

クエリエディタ

  • マネコンでクエリを実行できる。

スケーリング

  • ノードを最大32個まで追加できる。ノードタイプの変更も可能

  • クラスターを追加することも可能

  • クラスタは自動的に数秒で追加でき、高速なパフォーマンスを維持

  • 追加クラスタ数は1~10

Redshift Spectrum

  • S3に対して直接データ解析を可能。

  • ユーザー管理のS3バケットを指定して、解析することができる。

  • データをS3にため込む際にデータレイクとして使っていることが前提の機能

  • AthenaやS3クエリとの相違点はこの部分。

  • コンピュートノードの先にクエリエンジンが存在するような構成

データ連携(To Redshift)

  • S3

    • 最も頻繁に使われるデータ連携先

    • S3からデータを取得してRedshiftで解析することも可能

    • S3内部のデータ解析を直接実行することも可能

  • Kinesis

    • Kinesis data Firehose を利用してストリーミングデータの格納先として Redshift を指定可能

    • これを解析に利用することが可能

  • RDS

    • RDS との直接接続はない

    • AWS Data Pipeline や DMSを利用してデータ移行を実施可能

  • DynamoDB

    • DynamoDB から Redshift にデータコピーを実行可能

  • Amazon EMR

    • EMR から Redshift にデータコピーを実行可能

データ連携(From Redshift)

  • QuickSight

    • Redshift に接続して、データの可視化を実施可能

  • S3

    • UNLOAD コマンドを実行することで、 Redshift から S3 へとデータを抽出することが可能

  • Amazon Machine Learning

    • RedShift を機械学習の学習データとして設定して利用可能

  • RDS

    • 直接に連携はできないが、 PostgreSQL の機能を利用してデータを RedShift から RDS と連携可能

関連機能

  • QuickSight

    • データ可視化するBIツール

  • AWS Glue

    • ETLを行うマネージド型サービス

    • Athena, Redshift, EMRにloadする

  • AWS Lake Formation

    • データレイクの構成をベストプラクティスの中から構成を素早く実現することができる

  • Amazon EMR

    • Spark, Hive, Prestoなどのビッグデータフレームワークを使用して大量データを処理・分析する。

リザーブドノード

  • オンデマンドではなく、リザーブドで購入することで安価にすることができる。

実際の作成

設定

  • ノードのタイプの選択

  • クラスターのIAMロール設定

  • VPC、サブネットグループ、セキュリティグループなど

  • 拡張されたVPCルーティング

  • パブリックアクセス設定

  • 暗号化

  • メンテナンスウィンドウ

  • CloudWatchによるモニタリング

  • バックアップ設定

ElastiCache

概要

  • 分散インメモリキャッシュサービスの構築・管理および助リングを実施できる。

  • 特徴

    • キャッシュクラスタを数クリックで起動

    • フルマネージド型でモニタリング、自動障害検出、復旧、拡張、パッチ適用、バックアップに対応し高可用性を実現

    • 広く利用されている2種類のエンジンmemcached, redisから選択可能

Redis

  • より高機能。

  • 高速に値をRead/Writeできるインメモリキャッシュ型DB

  • シングルスレッドで動作するインメモリキャッシュDBで全てのデータ操作は排他的

  • スナップショット機能がある

  • データを永続化できる

  • 以下が必要な場合

    • 複雑なデータ型

    • リードレプリカ

    • pub/sub

    • フェイルオーバー

    • キーストアの永続性

    • バックアップと復元

    • 複数のデータベース

Memcached

  • よりシンプル。一時的なデータ置き場として使う。

  • 高速に値をRead/Writeできるインモリキャッシュ型DB

  • マルチスレッドで動作するインメモリキャッシュDB

  • スナップショット機能がない

  • データを永続化できない

  • フェイルオーバーや復元ができない。

  • 以下が必要な場合

    • シンプルなデータ型を使う

    • 複数コアまたはスレッドをもつ大きなノードを動かす必要がある

    • 需要に応じたスケールアウト・イン機能

    • オブジェクトをキャッシュする必要がある

ElastiCache with Redis

  • Luaスクリプト

  • 位置情報クエリ

  • pub/subモデル

    • チャットアプリなどのメッセージ処理、イベント処理

ユースケース

  • 用途

    • セッション管理

    • IOT 処理とストリーム分析

    • メタデータ蓄積

    • ソーシャルメディアのデータ処理/分析

    • Pub/Sub 処理

    • DB キャッシュ処理

  • 構成

    • アクセス頻度のtら会データをキャッシュに配置する。

    • 通常のDBと組み合わせる

  • 具体例

    • ユーザーのマッチング処理

    • レコメンデーションの結果処理

    • 画像データの高速表示

    • ゲームイベント終了時のランキング表示

Last updated