Developers.IO 2018 で5つのユースケースから理解するデータベースの使い分けについて話してきました #cmdevio2018
大栗です。
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つに捕らわれずに適切なサービスを選びましょう。それとお金を払えばスケールするアーキテクチャも考えることが重要です。