AWS環境データベース比較 (EC2, RDS, RedShift, S3)
研修でAWS環境におけるデータベース開発を少し行いました。
データレイクは S3 ほぼ一択だと思っていますが、データマートはいくつか比較検討する必要がありました。
RDS だの RedShift だの選択肢が色々あって困ったので自分なりにまとめた内容を共有します。
EC2 | RDS | RedShift | S3 | |
---|---|---|---|---|
概要 | EC2 インスタンスを DB サーバとして構築 | 業務用・行指向DB | 分析向け・列指向 DWH | オブジェクトストレージ |
構築・管理の手間 | × | ○ | ○ | ◎ |
費用 | ○ | △ | × | ◎ |
処理速度 | △ | ○ | ◎ | × |
EC2
インスタンスに MySQL などを入れてDBサーバとして構築・運用します。
フルマネージドの物を利用するのと比較してカスタマイズなどの自由度は高くなりますが、その分セットアップも管理も面倒です。
セキュリティパッチなども自分で対応しなければいけないので、その辺りもリスクと言えます。
RDS
業務用の行指向リレーショナルDB。
行指向なのでトランザンクション処理やログの管理には向いています。
Amazon Aurora DB、Oracle、Microsoft SQL、MySQL、PostgreSQL、MariaDB などエンジンの選択肢も豊富です。
フルマネージドなのでEC2と比較して管理の手間は少ないですが、使用できる SQL のバージョンが限定されていたりします (あまり問題になることはないと思いますが)。
また、マルチAZ構成によって可用性を高めています。
RedShift
分析用の列指向DWH。
100 GB を超えるような大規模なデータの分析処理に最も適しています。
ペタバイトクラスのデータ処理にも対応できます。
こちらもフルマネージドなので管理の手間は少なく済みます。
RDSとは異なり、クラスター構成によって可用性を高めています。
ただし、ハイスペックな分、費用面は他のサービスと比べてもかなり高額になります。
10MBくらいのデータでちょっと遊んだだけで 20 USD くらいの請求がきました。
基本的には、個人利用というより企業向けだと思います。
S3
DBでもDWHでもなくオブジェクトストレージです。
99.999999999% (Eleven nines) の耐障害性を誇ります。
データレイクとして利用することが最も多いと思いますが、 Amazon Athena を用いれば S3 内のデータを SQL クエリによって処理できます。
DBとして利用する場合は標準クラスを選択することになるかと思いますが、それでも圧倒的に費用が安く済みます。
Athena に関しても、クエリでスキャンしたデータ 5.00 USD / TB なので、分析の頻度がそれほど高くないのであれば、有力候補かと思います。
ただ、クエリ結果とメタデータがどんどん S3 に蓄積されていくのは注意が必要です。
また、リージョンに直接設置するので VPC やサブネットも不要という利点がありあます。
まとめ
数百 GB を超えるような大規模データに関しては RedShift。ただしコストは相当高い。おそらく企業利用向け。
100 MB 程度のデータであれば S3 + Athena でも処理速度の観点では全然困ることはない。安価。
RDSは中堅。コストはインスタンスタイプやストレージにも依存する。
EC2は、相当マニアックな理由がない限り選択することはないかと思います。