2012-03-10 2 views
0

Quelles sont ces constantes définies dans Amazon DynamoDB?Pourquoi AmazonDynamoDB :: TYPE_STRING ou NUMBER?

Quelqu'un peut-il expliquer le besoin de ces constantes? Pourquoi sont-ils placés dans la clé du tableau associatif?

Je vois une notation étrange lors de mettre les éléments dans le tableau comme

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

Guide PHP SDK dit 4 type de constantes.

  • TYPE_ARRAY_OF_NUMBERS
  • TYPE_ARRAY_OF_STRINGS
  • numéro_type
  • 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') 
    ) 
)); 

Répondre

1

Ces constantes reflètent les quatre disponibles Amazon DynamoDB Data Types:

Chaîne - Les chaînes sont Unicode avec codage binaire UTF8. Il n'y a aucune limite à la taille de la chaîne lorsque vous l'affectez à un attribut sauf lorsque l'attribut fait partie de la clé primaire. [...]

Numéro - Les nombres sont des nombres entiers décimaux et entiers positifs ou négatifs. Un nombre peut avoir jusqu'à 38 chiffres de précision après le point décimal , et peut être compris entre 10^-128 à 10^+ 126. La représentation dans Amazon DynamoDB est de longueur variable. [...]

Jeux de chaînes et de nombres - Amazon DynamoDB prend également en charge les jeux de nombres et les jeux de chaînes. [...] Notez que, comme il s'agit d'un ensemble , les valeurs de l'ensemble doivent être uniques. Les jeux de cordes et les jeux de chiffres ne sont pas commandés; l'ordre des valeurs renvoyées dans un ensemble n'est pas conservé.

Vous devrez spécifier ou gérer ces types de données dans divers appels d'API, par ex. pour le KeySchema dans CreateTable ou le article dans PutItem comme vu dans l'exemple que vous avez fourni.

0

La nouvelle version du kit AWS PHP SDK ajoute des méthodes pratiques pour faciliter le formatage de votre demande. Voir le docs for the attributes() method. Par exemple:

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

Cela semble beaucoup plus facile de travailler de cette façon.