5

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

谢谢!

4

1 回答 1

7

有趣的问题 - 恐怕代码检查和/或测试会按顺序进行,但我对此表示怀疑:

虽然Amazon DynamoDB 数据类型支持字符串和数字集,并且CreateTable的 API当然允许提交集合类型以及AttributeType(毕竟它只是一个字符串参数),但没有任何地方的概念,他们的示例都没有这和 AWS 管理控制台中的 CreateTable UI 明确地将哈希和范围键属性的类型限制为字符串或数字(请参阅Amazon DynamoDB - Internet-Scale Data Storage the NoSQL Way中的第一张图片)。

认为有人在公告网络广播中提到他们列出的主键概念开始,但可能会考虑在未来扩展它(虽然我没有 100% 正确地回忆起这一点)。


更新:检查/测试结果

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

/**
 * 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;
}

修改表示例会相应地产生预期的异常:

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

于 2012-01-19T14:40:28.173 回答