Amazon DynamoDB 登場
blogずっと放置してた。
あーこれはすごいサービスだよ。画期的だよ。先にいっておく。
これでAmazon Web Services上で利用できるデータベースは以下のようになる。
- RDS(RDBを利用できる)
- SimpleDB
- DynamoDB
- EC2上の任意のデータベース
EC2上は自分で設定できて柔軟性も高いが、かわりにデータベース自体のメンテナンスが必要だ。お金もEC2の分かかる。スペックによって最適なインスタンスを探すことになる。
RDSは管理という面からは解き放たれるがスペックによって価格が変わる。起動中の時間貸しであり、EC2を使って自分で構築するのと変わらない。リザーブインスタンスがあることからEC2上の自動化以上はないかもしれない。また、マルチAZ(複数のゾーンにデータベースを配置、どちらかがおちても運用を続けることが出来る)を使わないとメンテナンス中はアクセス不可能。マルチAZを使うとその分インスタンス代がかかる。つまりお金がかかる。
SimpleDBは検索にかかったCPU時間に応じて課金。何も使っていなければお金はかからないということ(ただし、ストレージ料金はかかる。それはどのデータベースを選んでも同じ)。だが、どういった検索をするとどれくらいのCPU時間をくうのかがわからなかったのが見積もりで不安を残すことに。ただし、スモールスタートには一番よい。検索もSQLのようにわりと柔軟で使いやすい。ただし、1ドメイン(RDBでいうところのテーブル)、1アイテム(RDBでいうレコード)や属性(RDBでいうところのカラムみたいなもの)の制限があり、事前に把握する必要がある。
で、今回のDynamoDB。これはSimpleDBのように使っただけの課金ではなく、EC2やRDSのようにインスタンスの時間で金額が決まる。テーブルの作成をしてキャパシティ(どれくらいのアクセスに耐えれるようにするか)をきめると1時間あたりの金額が決まる。
で、このキャパシティを決めた後、インスタンスを落とさずに動的にキャパシティを変えることが出来るのもポイント。
アクセス数の多い夕方以降の時間にキャパシティを増やして、非常に少ない深夜時間帯におもいっきりへらすといったことが可能になるわけだ。
キャパシティを確保するために、このDynamoDBに利用されるストレージはすべてSSDで構成されているそうな。そこまでするかー。
SimpleDBに対してクエリとか料金体系とか完全上位ともならないので使い分けが難しいが、容量に関しての制限が少ないことからユーザーIDでまずしぼるようなソーシャルアプリとの相性はいいとおもわれる。
最低キャパシティがR5/W5だとすると月でみると360円くらいかな。アプリごとにテーブルを分けたほうがいいのか分けないほうがいいのかはまだわからないけど。
キャパを越えたアクセスがきた場合は単純に待たされるだけなのかな?とか調べないといけないところは多いと思うけど、必要とするキャパを指定できるDBはありがたいはず。