AWS再入門2018 非リレーショナルデータベース編

こんにちは。池田です。まだ購入招待メールは届いていませんが、3月17日に札幌で開催されるAlexaハンズオントレーニングへの参加登録をしました。果たして、ハンズオンで学んだことを自宅で試すことができるのでしょうか...

はじめに

AWS再入門2018シリーズ第六弾です。今回はフルマネージドサービスとして提供されているデータベースサービスのうち、非リレーショナルデータベースについて公式サイトの情報をはじめとした各種ドキュメントを基に、各サービスの特徴となる事項を中心に整理していこうと思います。 (リレーショナルデータベース同様、対象となる情報量が非常に多いため、全てを網羅しているものではありません。予めご承知おきください)

もくじ

  • 非リレーショナルデータベース
  • NoSQLとは
  • Amazon DynamoDB
  • Amazon ElastiCache
  • Amazon Neptune
  • まとめ
  • 非リレーショナルデータベース

    • NoSQL データベース
      • Amazon DynamoDB(Key Valueストア)
    • メモリー内データストア
      • Amazon ElastiCache(memcachedまたはRedis)
    • グラフデータベース
      • Amazon Neptune

    NoSQLとは

    NoSQL は、高性能の非リレーショナルデータベースを指す用語です。NoSQL データベースは、ドキュメント、グラフ、キー値、列指向など各種データモデルを利用します。NoSQL データベースは、開発のしやすさ、スケーラブルなパフォーマンス、優れた可用性、高い回復性で知られています。 (NoSQL とはより)

    Amazon DynamoDB

    • フルマネージドサービス
    • データの格納と取得に特化(高度な最適化)されている
    • 「値」とそれを取得するための「キー」だけを格納するというシンプルな機能を持った「Key-Valueストア」
    • 半構造化データをドキュメントとして保存する「ドキュメントデータベース」でもある
    • 1桁ミリ秒単位のレイテンシーを要求するアプリケーションにも対応
    • 期限切れになった項目を自動的にテーブルから削除

    制限事項

    • 下記項目においてそれぞれ、いくつかの制限事項がある
      • キャパシティーユニットとプロビジョニングされるスループット
      • テーブル
      • セカンダリインデックス
      • パーティションキーおよびソートキー
      • 名前付けルール
      • データ型
      • アイテム
      • 属性
      • 式パラメーター
      • Dynamo DB ストリーム
      • Dynamo DB Accelerator(DAX)
      • API固有の制限

    ベストプラクティス

    • 開発者ガイドとして下記項目についてそれぞれいくつかベストプラクティスが公開されている
      • テーブル
      • 項目
      • クエリとスキャン
      • ローカルセカンダリインデックス
      • グローバルセカンダリインデックス

    Amazon ElastiCache

    • フルマネージド型のインメモリデータストア、インメモリKey-Valueストア
    • キャッシュエンジンとしてRedisとMemcachedをサポート
      • Redis : オープンソースのインメモリ型Key-Valueストア
      • Memcached : オープンソースの分散型メモリオブジェクトキャッシュシステム
    • ノードの障害を自動検知、自動で置き換え
    • 初期費用はなく、オンデマンド料金だが長期間利用するならリザーブドノードの購入がおすすめ

    エンジンの選択

    • Memcachedが適しているケース
      • できるだけシンプルなモデルが必要である
      • 複数のコアまたはスレッドを持つ大きなノードを実行する必要がある
      • システムでの需要の増減に応じてノードを追加または削除するスケールアウト / スケールイン機能が必要である
      • データベースなどのオブジェクトをキャッシュする必要がある
    • Redisが適しているケース

    ElastiCache と Amazon VPC

    • Amazon VPCに統合されている
      • EC2-VPCのみをサポートされたAWSアカウントなら常にVPC内でクラスターが起動
      • クラスター起動時にサブネットを指定しないとデフォルトVPCで起動される

    利用可能なライブラリ

    • クエリAPIの他に以下のプログラミング言語に対応したSDKが提供されている
      • Java
      • Windowsおよび .NET
      • PHP
      • Python
      • Ruby

    Amazon Neptune

    • フルマネージド型のグラフデータベース
    • 2018/01/25現在プレビュー版
    • GremlinとSPARQLに対しオープングラフAPIをサポート
    • 99.99%を上回る可用性
    • インスタンスのフェイルオーバーは通常30秒未満となるよう設計

    ユースケース

    • プレビュー版ではあるが、以下のようなユースケースが紹介されている
      • ソーシャルネットワーキング
      • リコメンドエンジン
      • ECサイトなどでの不正検出
      • 知識グラフ
      • ライフサイエンス
      • ネットワーク/IT運用

    まとめ

    非リレーショナルデータベースとして提供されているサービスそれぞれの概要をまとめるに留めました。認定試験に挑む上では各AWSサービスのユースケースやホワイトペーパーなどから、それぞれの特性や注意点、他のサービスとの高度な連携にセキュリティ面でのことなど、たくさんのことを深掘りしていく必要があります。
    まだまだ先は長いですが、データベースとひとくくりで呼んでいる仕組みにこれだけの種類があり、個別のサービスとして提供される理由なども含め理解を深めていきたいと思います。
    また、Amazon Neptuneについては、これから事例や情報がどんどん公開されるでしょうからウォッチしていこうと思います。
    この再入門2018シリーズが、これからAWS認定試験へ挑戦しようとしている方や、AWSサービスを利活用していこうとされている誰かのお役に立てば幸いです。