Почему AmazonDynamoDB :: TYPE_STRING или NUMBER? - PullRequest
0 голосов
/ 10 марта 2012

Каковы эти константы, определенные в 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 ]

1 голос
/ 11 марта 2012

Эти константы отражают четыре доступных типа данных Amazon DynamoDB :

String - Строки являются Unicode с двоичным кодированием UTF8. Размер строки не ограничен при назначении ее атрибуту, кроме когда атрибут является частью первичного ключа. [...]

Число - Числа являются положительными или отрицательными точными десятичными и целыми числами. Номер может иметь до 38 цифр точности после десятичная точка, и может быть между 10 ^ -128 до 10 ^ + 126. Представление в Amazon DynamoDB имеет переменную длину. [...]

Наборы строк и номеров - Amazon DynamoDB также поддерживает наборы номеров и наборы строк. [...] Обратите внимание, потому что это установить, значения в наборе должны быть уникальными. Наборы строк и наборы чисел не заказаны; порядок значений, возвращаемых в наборе, не сохраняется.

Вам нужно будет указать или обработать эти типы данных в различных вызовах API, например, для KeySchema в CreateTable или Item в PutItem , как показано в приведенном вами примере.

0 голосов
/ 20 апреля 2012

В новейшей версии AWS PHP SDK добавлены удобные методы, облегчающие форматирование вашего запроса. См. документы для метода attribute () . Например:

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

Кажется, намного проще работать с этим способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...