DynamoDB是否支持在表的主键中使用其中一种set数据类型?

时间:2012-01-19 12:29:11

标签: amazon-dynamodb

我是CouchDB的忠实粉丝,我完全爱上了每个文档多次发出的地图函数。我想知道在DynamoDB中是否可以通过使用字符串或数字集类型作为散列和范围主键的一部分,作为散列或范围属性,可以实现稍微类似的东西,以便可以查询相同的项目多种方式。

谢谢!

1 个答案:

答案 0 :(得分:7)

有趣的问题 - 我担心代码检查和/或测试会有序,但我对此表示怀疑:

虽然Amazon DynamoDB Data Types支持字符串和数字集以及CreateTable的API允许提交 AttributeType 的集合类型(当然)它毕竟只是一个字符串参数),没有任何概念,他们的样本都没有这样做,并且AWS管理控制台中的CreateTable UI显式地将类型限制为字符串或数字,以用于散列和范围键属性(见Amazon DynamoDB - Internet-Scale Data Storage the NoSQL Way中的第一张图片。)

认为在公告网络广播中提及他们使用列出的Primary Key概念开始,但可能会考虑将来扩展这个概念(不是100)虽然我正确地回忆起这个问题,但是我对此持肯定态度。


更新:检查/测试结果

目前确实不支持设置数据表作为主键,请参阅class KeySchemaElement的API文档:

/**
 * Sets the value of the AttributeType property for this object.
 * <p>
 * <b>Constraints:</b><br/>
 * <b>Allowed Values: </b>S, N
 *
 * @param attributeType The new value for the AttributeType property for this object.
 *
 * @see ScalarAttributeType
 */
public void setAttributeType(String attributeType) {
    this.attributeType = attributeType;
}

修改Table Example会相应地产生预期的异常:

  

信息:收到错误响应:状态码:400,AWS服务:   AmazonDynamoDB,AWS请求ID:   XXXXXXXX,AWS错误代码:   ValidationException,AWS错误消息:检测到1个验证错误:   'keySchema.hashKeyElement.attributeType'中的值'SS'未能成功   满足约束:成员必须满足枚举值集:[N,S]失败   创建表TestTable