2012年1月25日水曜日

DynamoDBってなんじゃ?(AWSコンソール編)

AWSがDynamoDBというサービスをリリースしました。リリースペース早すぎですね。
DynamoDBは高可用で超柔軟なスケーラビリティをもつNoSQLサービスです。

あれ?SimpleDBはどうしたの?と思ってしまいますが、SimpleDBよりも更に柔軟でスケーラブルです。

DyanmoDBはSimpleDBと比べて以下のような利点があります。
  • SimpleDBでは、1つのドメイン(DBでいうテーブル)につき10GBというデータ量制限がありましたが、DynamoDBでは無制限で、ドメイン制限を超えた場合のスケーリングがアプリケーションレイヤーの設計にまで影響していたのが解消され、カスタマイズされたConsistentHashing法により自動的にスケーリングが行われます。
  • DynamoDBではスループットを設定できるため、アクセス数が増加しても低レイテンシが保証されます。
  • SimpleDBではマシン時間での課金でしたが、DynamoDBではスループットによる課金です。ユーザーはより費用の見積もりがしやすくなりました。
  • SimpleDBではすべてのアトリビュート(カラム)にインデックスが貼られていました。DynamoDBではシングルプライマリキーもしくはコンポジットプライマリキーにのみインデックスを貼ることで高パフォーマンスを図っています。


それではさっそく触ってみます。

AWSコンソールをみると、左はじにDynamoDBのタブが見えます。





これをクリックするとDynamoDBのダッシュボードが表示されます。
「Create Table」をクリックして、テーブルの設定を行います。




まず、テーブル名とプライマリキーを設定します。
プライマリキーは単一のHashキーかHashとRangeの複合キーが設定できます。
ここではbookというテーブル名でシングルHashキーを設定して「Continue」をクリックします。




次に必要なスループットを設定します。
Read CapacityとWrite Capacityの値を設定しますが、
それぞれ1秒に読み書きされる回数の見積もりと1アイテム(DBでいうところの行)の平均データサイズで決まります。
つまり

Read Capacity:1秒間に読み込みされる回数 × 1つのアイテムの平均サイズ
Write Capacity:1秒間に書き込みされる回数 × 1つのアイテムの平均サイズ

という計算のもと設定します。




また、「Help me calculate ,,,」というチェックを入れると、読み込み回数やデータの平均サイズなどを入力して求めることもできます。




「Continue」をクリックすると、Alarmの設定画面に移ります。
ここでは上記で設定したスループットの何割を超えたら通知するかを設定できます。設定したスループット以上の性能はでないため、これで性能を監視し、必要に応じてスループットをアップするような運用になります。




適宜設定して「Create Table」をクリックするとテーブルが作成されます。



これでテーブルの作成が終わりました。
作成されたテーブルが一覧画面に表示され、行を選択すると、プロパティ情報や現在のスループットやレイテンシなどが表示されています。
またCloudWatchのメトリクスやアラームの情報なども確認できます。



追加で、book_idとposted_atを複合ハッシュキーにもつcommentというテーブルも作成します。



とりあえずテーブルまでできました。
次回はSDKからDynamoDBにアクセスしてみます。

今回は以上です。