aws memo

AWS関連の備忘録 (※本ブログの内容は個人的見解であり、所属組織及び企業の意見を代弁するものではありません。1年以上古いエントリは疑ってかかってください)

訳:Amazon DynamoDB API概要

http://aws.amazon.com/jp/dynamodb/#access_model_api_overview

主キー ( Primary Key)

DynamoDBは、データにアクセスするためにテーブル毎に主キーの定義が必須である。主キーは各アイテムを一意に識別する。主キーはテーブルの一部であり、索引化されている。さらに、複数サーバにまたがったハッシュパーティションデータにも使われている。テーブル作成時に主キーを明示する必要がある。

言い換えれば、各アイテムは 名前/値のペアの集合である。アイテム用にテーブルを作る時、主キーとして名前/値のペアを明示する。同一テーブルにある全てのアイテムは主キー属性の値を持たなければならず、Amazon DynamoDBは名前の値が一意であることを保証する。索引は主キーを基に作られる。

レンジクエリ用の複合主キー( Composite Primary Key for Range Queries)

複合主キーは、テーブル内の2つの属性を指定して、一意な主キーを生成する。t-エブル内の全アイテムは必ずこの2つの属性を持つ必要がある。1つは "hash partition attribute( ハッシュパーティション属性)" で、もうひとつは"range attribute"である。

例えば、" Status Updates"テーブルが複合主キーとして "UserID"( ハッシュ属性、複数サーバにまたがるパーティションに使われる)と、"Time" (レンジ属性)を持っているとする。

  • 1) UserIDとTimeの組み合わせであるアイテムを一意に識別する
  • 2) UserIDに関連する特定のハッシュ"bucket"を持つ全アイテム
  • 3)特定の時刻範囲にある特定のUserIDに関する全アイテム

"Time"に対するレンジクエリは、UserIDとハッシュバケットが明示されている場合に有効となる。

CreateTable

データアクセスに用いる主インデックスを明示してテーブルを作成する。

UpdateTable

指定したテーブルのスループットを変更する

DeleteTable

テーブルを削除する

DescribeTables

テーブルサイズ、ステータス、インデックスの情報を返す

PutItem 

新しいアイテムを保存する、もしくは同じ主キーの古いアイテムを入れ替える。

UpdateItem

既存のアイテムの属性を編集する。属性に対する条件にマッチした場合にのみ変更することも可能

DeleteItem

主キーで指定されたアイテムを消す。属性に対する条件にマッチした場合のみ削除することも可能。

GetItem

主キーにマッチする1アイテムの属性集合を返す。eventually consistency readがデフォルト。ConsistentReadも使える。

BatchGetItem

複数テーブルから複数アイテムを取得する。1レスポンスのサイズ上限は1MB、100アイテム。

Query

主キーで1つ以上のアイテムを取得する。eventual consistentとstrong consistencyの両方をサポートする。 composite hash-rangeキーを持つテーブルで使われる

Scan

主キー以外の属性を検索条件にして、テーブルをフルスキャンして複数のアイテムを返す。インデックスが無いので、性能予測のクエリーに使うべきではない。結果集合はeventually consistentである。 Scan APIiteratorと考えることができる。

Scan APIによるリクエストで集めたアイテムサイズの合計が1MB制限に達した場合、リクエストは強制的に停止し、フェッチされた結果は LastEvaluatedKeyと共に返される。LastEvaluatedKyeは、Scanを継続するために継続操作する際に必要になる。