ちょっと話題の記事

Developers.IO 2018 で5つのユースケースから理解するデータベースの使い分けについて話してきました #cmdevio2018

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大栗です。

Developers.IO 2018でデータベースの使い所について発表をしてきました。

AWSのデータベースサービスの勘所
〜5つのユースケースから理解する〜

AWSのデータベースサービスを振り返る

AWSには様々なデータベースサービスがあります。

RDB/SQLとNoSQLに分類されますが各々に多数のサービスがあります。

RDB/SQLのサービス

  • 汎用
    • Aurora
    • RDS
  • 大規模データ分析
    • Redshift
    • Athena
    • EMR(Hive)

NoSQLのサービス

  • DocumentDB
    • DynamoDB
  • In-Memory
    • ElastiCache
    • DynamoDB Accelerator(DAX)
  • 全文検索
    • Elasticsearch Service
    • Cloudsearch
  • その他
    • Cloud Directory
    • Neptune
    • AWS IoT Analytics

ユースケースに学ぶデータベースの使い分け

一般Webシステム

複雑なクエリに対応するためにRDBMSが使いやすい。セッション情報などはElastiCacheなど。

Auroraでも耐えられないような大規模システムの場合は、柔軟性を犠牲にしてスケールを優先してDynamoDBなども考えられる。

サーバーレス

Lambdaの特性としてRDBMSと相性が悪いので、DynamoDBを使うことが多い。

問題にならない場合はRDBMSも良い。

データ分析

対象のデータをフルスキャンするので、大量データ専用のサービスを使うべき。

最近は汎用のRDBMSであるAuroraでParallel Queryで高速にアクセスできる場合もある。

IoT

多数のデバイスがアクセスしてデータを書き込み続ける。専用のサービスか非同期でデータ登録を行う必要がある。

レコメンデーション

様々なアルゴリズムがあるがグラフ構造データでのレコメンデーションも考えられる。

まとめ

  • 『銀の弾丸』は無い
    • 多くの場合RDBMSは要件を満たす。しかし最適とは限らない。
  • 『金のハンマー』を持たないように気をつける
    • 今回紹介したユースケースに対するデータベースの選択はあくまで一例。
現実の要件を考える場合には他の選択肢が最適かもしれない。
  • マネーの弾丸』はあるかもしれない
    • 適切なアーキテクチャを選択すれば (料金を支払うことで) スケールできる。

さいごに

データベースの使い分けは難しいですが、1つに捕らわれずに適切なサービスを選びましょう。それとお金を払えばスケールするアーキテクチャも考えることが重要です。