为什么选择AmazonDynamoDB :: TYPE_STRING或NUMBER?

时间:2012-03-10 17:20:29

标签: php amazon-dynamodb

Amazon DynamoDB中定义的这些常量是什么?

有人可以解释一下这些常数的必要性吗? 为什么这些放在关联数组的键中?

在将项目放在表格中时,我看到一个奇怪的符号,如

'Name'     => array( AmazonDynamoDB::TYPE_STRING => 'Amazon S3')

PHP SDK指南说明了4种常量。

  • TYPE_ARRAY_OF_NUMBERS
  • TYPE_ARRAY_OF_STRINGS
  • TYPE_NUMBER
  • TYPE_STRING
$dynamodb->batch($queue)->put_item(array(
'TableName' => 'Forum',
'Item' => array(
    'Name'     => array( AmazonDynamoDB::TYPE_STRING => 'Amazon S3'), // Hash Key
    'Category' => array( AmazonDynamoDB::TYPE_STRING => 'Amazon Web Services'), 
    // Range Key
    'Threads'  => array( AmazonDynamoDB::TYPE_NUMBER => '0')
    )
  ));

2 个答案:

答案 0 :(得分:1)

这些常量反映了四个可用的Amazon DynamoDB Data Types

  

字符串 - 字符串是带有UTF8二进制编码的Unicode。将字符串大小分配给属性时,字符串大小没有限制   当属性是主键的一部分时。 [...]

     

数字 - 数字为正或负精确值小数和整数。一个数字后最多可以有38位精度   小数点,可以在10 ^ -128到10 ^ + 126之间。该   Amazon DynamoDB中的表示具有可变长度。 [...]

     

字符串和数字集 - Amazon DynamoDB还支持数字集和字符串集。   [...]请注意,因为它是一个   set,集合中的值必须是唯一的。字符串集和数字集   没有订购;集合中返回的值的顺序不是   保留。

您需要在各种API调用中指定或处理这些数据类型,例如:对于CreateTable中的 KeySchema PutItem中的,如您提供的示例所示。

答案 1 :(得分:0)

最新版本的AWS PHP SDK添加了便捷方法,可帮助您更轻松地格式化请求。请参阅docs for the attributes() method。例如:

$dynamodb->put_item(array(
    'TableName' => 'my-table',
    'Item' => $dynamodb->attributes(array(
        'id'            => 1,
        'key1'          => 'value1',
        'key2'          => 'value2',
    ))
));

这种方式似乎更容易使用。