データ型
キー名 | データ型 | 説明 |
---|---|---|
S | String | |
N | Number | |
B | Binary | |
SS | A set of strings | |
NS | A set of numbers | |
BS | A set of binary |
クライアントの生成 / DynamoDbClient#factory
<?php
use Aws\DynamoDb\DynamoDbClient;
$dynamo = DynamoDbClient::factory(array(
'key' => AWS_KEY,
'secret' => AWS_SECRET,
'region' => AWS_REGION,
));
データの登録 / DynamoDbClient#putItem
<?php
$result = $dynamo->putItem(
array(
'TableName' => 'table_name',
'Item' => $dynamo->formatAttributes(
array(
'key1' => $value1,
'key2' => $value2,
'key3' => $value3,
)
),
// INDEXES | TOTAL | NONE
'ReturnConsumedCapacity' => 'TOTAL',
// NONE | ALL_OLD | UPDATED_OLD | ALL_NEW | UPDATED_NEW
'ReturnValues' => 'ALL_NEW',
// SIZE | NONE
'ReturnItemCollectionMetrics' => 'SIZE',
)
);
ReturnConsumedCapacity
値 | 説明 |
---|---|
NONE | (デフォルト値) 何も返さない |
TOTAL | テーブルとインデックス両方で消費されたキャパシティのトータルを返す |
INDEXES | インデックスで消費されたキャパシティのみ返す |
キャパシティはread capacity unitsのこと。多分。
ReturnItemCollectionMetrics
値 | 説明 |
---|---|
NONE | (デフォルト値) 何も返さない |
SIZE | 操作中に変更されたアイテムのコレクションがあれば、統計情報が返されます。 |
データの更新 / DynamoDbClient#updateItem
<?php
use Aws\DynamoDb\DynamoDbClient;
use Aws\DynamoDb\Enum\Type;
use Aws\DynamoDb\Enum\AttributeAction;
use Aws\DynamoDb\Enum\ReturnValue;
$result = $dynamo->updateItem(array(
"TableName" => 'table_name',
"Key" => array(
"Id" => array(Type::NUMBER => 121)
),
"AttributeUpdates" => array(
"NewAttribute" => array(
"Value" => array(Type::STRING => "Some Value")
),
"Authors" => array(
"Action" => AttributeAction::ADD,
"Value" => array(Type::STRING_SET => array("Author YY", "Author ZZ"))
)
),
"ReturnValues" => ReturnValue::ALL_NEW
));
パラメータ:Action (ADD | PUT | DELETEが指定可能)
-
ADD:
-
属性が既に存在しない場合、属性とその値がアイテムに追加される。
-
属性が存在する場合は、属性のデータ型によって動作が異なる。
- 既存の属性がnumberで 値もnumberの場合、加算される。
- 既存の属性がセット型で、値もセットの場合、追加される。
-
PUT:
-
アイテムに指定された属性を追加。属性が既に存在する場合は、新しい値に置き換えられる。
-
DELETE:
- 値を指定しない場合、属性とその値をアイテムから除去される。
- 指定された値のデータ型は、既存の値のデータ型と一致する必要がある。
- 値にセット型が指定されている場合、それらの値は、古いセットから減算される。たとえば、[A、B、C]という値が設定されていた場合に、[A、C]の削除アクションを実行すると、結果は[B]になる。空のセットを指定するとエラー。
パラメータ:Expected
期待する値を持っているかチェックできるぽい。詳細は不明
パラメータ:ReturnValues
値 | 説明 |
---|---|
NONE | (デフォルト値) 何も返さない |
ALL_OLD | 古い属性値すべてを返す |
UPDATED_OLD | 更新された古い属性値のみを返す |
ALL_NEW | 新しいバージョンの属性すべて返す |
UPDATED_NEW | 更新された新しい属性値のみを返す |
データの取得 / DynamoDbClient#getItem
<?php
$args = array(
'TableName' => 'table_name',
'Key' => array(
'field1' => array('N' => '1201'),
'field2' => array('S' => 1),
),
// 'AttributesToGet' => array('string', ... ),
'ConsistentRead' => true,
//'ReturnConsumedCapacity' => 'string',
);
$result = $client->getItem($args);
パラメータ:ConsistentRead
値 | 説明 |
---|---|
true | 強く一貫した読み取り |
false | (デフォルト)結果的な読取り一貫性 |
パラメータ:AttributesToGet
属性を指定した場合、指定した属性のみ返す。指定しなかった場合はすべて返す。
select * と、select field1, field2 from table の違いみたいな感じ。
データの検索 / DynamoDbClient#query
レスポンス: LastEvaluatedKey
Limitを指定した場合か、結果セットが1MBを超えた場合にのみ返される。
続きのデータを取得したい場合は、LastEvaluatedKey の値を ExclusiveStartKeyに指定して再度queryする。
メモ/比較演算子
演算子 | 説明 |
---|---|
EQ | 等しい |
LE | 以下 (Less than or equal) |
LT | 未満 (Less than) |
GE | 以上 (Greater than or equal) |
GT | より大きい (Greater than) |
BEGINS_WITH | 〜で始まる |
BETWEEN | A〜Bの間 (AとBは含む) |
DynamoDbClientの便利メソッド(Dynamo形式のデータ型に変換)
※ 注意:2014/11/09追記
このメソッドは、DynamoDBがjsonをサポートしたのに伴い、deprecated になっています。
(see https://github.com/aws/aws-sdk-php/blob/master/src/Aws/DynamoDb/DynamoDbClient.php#L155)
<?php
$attrs = array(
”name" => "my_name",
"age" => 30,
);
$res = $client->formatAttributes($attrs, $format = Aws\DynamoDb\Attribute::FORMAT_PUT);
print_r($res);
結果:
Array
(
[name] => Array
(
[S] => my_name
)
[age] => Array
(
[N] => 30
)
)
$format は下記が指定可能
- Aws\DynamoDb\Attribute::FORMAT_PUT (put)
- Aws\DynamoDb\Attribute::FORMAT_UPDATE (update)
- Aws\DynamoDb\Attribute::FORMAT_EXPECTED (expected)
update, expected は下記のような形式になる。
形式が違ってめんどくさいよね…
Array
(
[name] => Array
(
[Value] => Array
(
[S] => my_name
)
[age] => Array
(
[Value] => Array
(
[N] => 30
)
)
putItem と updateItem の違い
- putItemはレコード全体を指定したkey,valueで置き換える
- updateItem は、レコードの一部のkey, valueを置き換えらえる
- updateItem は、ADD, PUT, DELETE のアクションが行える。
putItem と updateItem の同じ部分
- どちらも、新規登録、更新ができる