【レポート】AWS におけるデータベースの選択指針 #AWSSummit

こんにちは、坂巻です。

2019/6/12(水)~14(金) の期間で開催されている、AWS Summit Tokyo 2019からセッションをレポートします。 本記事は「【初級】AWS におけるデータベースの選択指針」のレポートになります。

セッション情報

スピーカー:高橋 敏行氏 (アマゾン ウェブ サービス ジャパン株式会社)

データベースは、企業のシステムにおいて重要なコンポーネントの1つです。AWS ではデータベースを実行する方法に多くの選択肢があります。お客様がオンプレミスで使用しているデータベースを AWS に移行する際に、その選択肢の中から最適なものを選ぶガイドラインを、ユースケースと交えてご紹介します。

レポート

  • モバイル/IOTの登場で新しいアプリケーションの要件がでてきた
    • 従来のデータベースでは対応できない
  • 万能のデータベースは存在しない(Werner Vogels/CTO - Amazon.com)
    • "A one size fits all database doesn't fit anyone"
  • データベースの選択
    • AWSでは多様なデータベースの選択肢
    • ワークロードに応じて最適な選択が可能

適材適所に選択することが重要

データカテゴリ/AWSのデータベースサービス

  • リレーショナル:RDS
  • キーバリュー:DynamoDB
  • ドキュメント:DocumentDB
  • インメモリー:ElastiCache
  • グラフ:Neptune
  • 時系列:Timestream
  • 台帳:Quantum Ledger Database(通称QLDB)

全てマネージドサービス

自動化された管理タスク

  • データベース管理者
    • スキーマデザイン
    • クエリの作成
    • クエリの最適化
  • AWS
    • 自動化されたフェイルオーバー
    • バックアップとリカバリ
    • 分離とセキュリティ
    • コンプライアンス準拠
    • 数クリックでスケール
    • 自動化されたパッチ適用
    • 拡張モニタリング
    • 定期的に実施するメンテナンス

時間のかかるデータベース管理タスクを自動化
より付加価値の高いタスクに専念できる

データベース構築の選択肢

  • 仮想サーバ(EC2)
  • マネージド・サービス(RDS等)

マネージドサービスを使うと導入 & 運用面でメリットが多い
マネージドサービスで検討し、要件に合わない場合は仮想サーバを選択

リレーショナルデータベース

Amaon RDS
  • 6つのエンジン
    • Amazon Aurora
    • PostgreSQL
    • MySQL
    • MariaDB
    • Oracle
    • SQL Server

RDB(リレーショナルデータ)

  • テーブル間でデータを分割
  • 高度に構造化されたデータ
  • キーを介して確率された関係性
  • データの正確性と一貫性
ユースケース
  • エンタープライズアプリ
  • SaaSアプリケーション
  • Eコマースアプリケーション
  • ウェブアプリケーション
選択指針
  • 汎用的
  • 既存アプリケーション移行
  • 正規化/リレーショナル
  • SQLを使用可能
  • 柔軟なクエリ
  • トランザクション処理
  • データの堅牢性/一貫性

Non リレーショナル

NoSQL

  • RDBMSではないデータベースの総称
  • 従来のRDBMSの課題を解決するために生まれた
  • NoSQLは非常に多くの種類がある

リレーショナルデータベースでできなかったことを解決

RDBMSとNoSQLの特徴
  • リレーショナルデータベース
    • ストレージに最適化
    • 正規化/リレーショナル
    • SQLを使用可能
    • トランザクション処理
    • データの堅牢性/一貫性
    • スケールアウトの煩雑さ
  • NoSQL
    • 計算リソースに最適化
    • 非正規化/階層構造
    • データベースによる異なるクエリ
    • トランザクション処理は限定的
    • データの堅牢性/一貫性はデータベースによる
    • 高いスケーラビリティ

キーバリューストア

  • KVS
  • キーとバリューという単純な概念
ユースケース
  • あらゆる規模で低レイテンシー高スループットのデータアクセス
    • モバイル
    • ウェブ
    • ゲーム
    • 広告技術 etc
解決したい課題
  • インターネットスケールのシステム
    • スケール規模を事前に予測するのが難しい
    • 低レイテンシー/高スループットが求められる
  • RDBはスケールに限界がある
    • スケールアップはハードウェアの性能・容量に依存
    • スケールアウトさせるには分散管理が必要
選択指針
  • スケーラービリティが求められる
  • レスポンスタイム数ミリ秒が求められる
  • シンプルなクエリ

Amazon DynamoDB

  • 規模に関係なく数ミリ秒のレスポンス
  • 1日10兆件以上のリクエスト処理
  • 毎秒2千万を超えるリクエストをサポート

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

  • JSONやXML等の不定形なデータ構造(キーバリューに近い)
  • 複雑なデータモデルを用意に表現
ユースケース
  • コンテンツ管理
    • ニュース記事、ブログ、レシピ 等
  • カタログ
  • プロファイル管理

頻繁に変化するデータを格納

解決したい課題
  • 頻繁に変更される属性情報
    • Amazon.comの商品属性情報
    • アプリケーションログ
  • RDBではスキーマ設計が必要
    • 全ての属性情報定義は難しい
    • 属性を定義しないとINSERTできない
選択指針
  • スキーマを決められないデータの格納
    • JSONやXML形式のそのまま扱いたい
  • 構造を意識したとキュメンと思考の検索

Amazon DocumentDB

  • フルマネージドなMongoDB互換
  • 読み取り容量を数百万件/秒までスケール

インメモリデータベース

  • KVS
  • 非常に高いパフォーマンス
  • Redis & Memcached
ユースケース
  • データキャッシュ
  • 推論キャッシュ
  • クエリキャッシュ
解決したい課題
  • リアルタイム性の高いアプリケーシ
    • Webサイト、ゲーム、デバイス 等
  • RDBではマイクロ秒レベルのレイテンシは困難
    • スキャンや結合のコストが大きい
選択指針
  • ミリ秒未満のレイテンシーが求められる
  • キャッシュ可能
    • 障害時のデータ損失リスクを許容できる
    • インメモリ処理のため障害よるデータ損失の可能性がある

Amazon ElastiCache

  • マイクロ秒の応答時間
  • フルマネージドな運用管理

グラフデータベース

  • 複雑な関係性を表すのを得意とする
    • SNSのフレンド関連性等
  • 全ての関連が多対多の関係
ユースケース
  • SNSニュースフィード
  • リコメンデーション
  • 不正検出
解決したい課題
  • グラフ構造を扱うアプリケーション
    • レイテンシーがミリ秒
    • 関連を検索
    • 何百万人ものユーザ照会
  • RDBでは多対多は不得意
    • スケールアップに限界がある
選択指針
  • 関連を探索するクエリ(トラバーサル)
  • 短いクエリが大量にある

Amazon Neptune

  • 数十億のリレーションシップを扱える
  • ミリ秒のレイテンシー
  • 専用のグラフデータベースエンジン

時系列データベース

  • 時間が唯一の主軸
  • 特定の感覚で記録され続ける
  • 時間の経過に伴う変化を測定
解決したい課題
  • 大量ログの絶え間ない格納
  • RDBではログの格納と分析の両立が難しい
選択指針
  • 時系列データを扱うか
    • 大量、粒度が小さい、すぐに分析したい
    • 多数のソースから頻繁に送信される

Amazon Timestream(Preview)

  • RDBの1/10のコストで1000倍のパフォーマンス
  • 一日あたり数兆規模のイベントに対応

台帳データベース

  • データの変更履歴はイミュータブル(変更、削除不可)
  • 意図しない変更が発生してないことを暗号技術で検証
ユースケース
  • 集中管理を行う元帳として利用
    • ヘルスケア:医療カルテ、保険ログ
    • 政府機関:戸籍、住民票..
    • 民間企業:監査証跡、契約書管理..
解決したい課題
  • 台帳を管理しなければならないか
    • 変更履歴の追跡
    • 改ざんがないことの証明
  • RDBでは管理者が存在する
    • 管理者が操作せきる可能性がある
選択指針
  • 履歴の追跡と変更管理
    • 完全で検証可能な変更履歴を維持したい
    • 管理者でも変更履歴を改ざんできないことを保証したい

Amazon Quantum Ledger Database(Preview)

  • スケーラブルで完全
  • 検証可能なトランザクション
  • データの変更全てを追跡可能

まとめ

  • 用途にあわせた7つのDBがある
  • 適材適所でデータベースを選択する

感想

データベース種別によるユースケースの説明があり、選択指針を振り返ることができました。「万能のデータベースは存在しない」を念頭に、適材適所でデータベースを選択していきたいと思います。