关于使用,这是一个heloworld教程,首先我们创建一个域domain,相当于一个表。
注意我们并不能做域之间的连接操作,单次查询都只能针对一个域,不能跨域,这是SimpleDB的一个限制,所以开发者应当规划好,别选错了域。另外所有的存储都是string,UTF-8编码的。
你可以用Java,Python,ruby的开发包,这里不多讲了,这里只列举http请求和响应,以REST方式为例。
1 先创建一个domain
https://sdb.amazonaws.com/
?Action=CreateDomain
&AWSAccessKeyId=[valid access key id]
&DomainName=hongchangfirst
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2014-01-25T15%3A01%3A28-07%3A00
&Version=2009-04-15
&Signature=[valid signature]
响应为
<CreateDomainResponse>
<ResponseMetadata>
<RequestId>2a1305a2-ed1c-43fc-b7c4-e6966b5e2727</RequestId>
<BoxUsage>0.0000219907</BoxUsage>
</ResponseMetadata>
</CreateDomainResponse>
2 加一个数据进去,replace代表不是添加一个值,而是替换响应的值,避免关联多值。
https://sdb.amazonaws.com/
?Action=PutAttributes
&DomainName=hongchangfirst
&ItemName=zhc
&Attribute.1.Name=Color
&Attribute.1.Value=Blue
&Attribute.2.Name=Price
&Attribute.2.Value=0014.99
&Attribute.2.Replace=true
&AWSAccessKeyId=[valid access key id]
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2010-01-25T15%3A03%3A05-07%3A00
&Version=2009-04-15
&Signature=[valid signature]
响应为:
<PutAttributesResponse>
<ResponseMetadata>
<RequestId>490206ce-8292-456c-a00f-61b335eb202b</RequestId>
<BoxUsage>0.0000219907</BoxUsage>
</ResponseMetadata>
</PutAttributesResponse>
3 去拿到刚才加进去的数据
https://sdb.amazonaws.com/
?Action=GetAttributes
&AWSAccessKeyId=[valid access key id]
&DomainName=hongchangfirst
&ItemName=zhc
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2010-01-25T15%3A03%3A07-07%3A00
&Version=2009-04-15
&Signature=[valid signature]
响应为:
<GetAttributesResponse>
<GetAttributesResult>
<Attribute><Name>Color</Name><Value>Blue</Value></Attribute>
<Attribute><Name>Price</Name><Value>0014.99</Value></Attribute>
</GetAttributesResult>
<ResponseMetadata>
<RequestId>b1e8f1f7-42e9-494c-ad09-2674e557526d</RequestId>
<BoxUsage>0.0000219907</BoxUsage>
</ResponseMetadata>
</GetAttributesResponse>
4 SimpleDB还有一个特点是可以使用类select语句查询相关属性值,limit限制一次响应的item数。
select output_list
from domain_name
[where expression]
[sort_instructions]
[limit limit]
想选只拥有一个值的属性,就用where every(name) = value。
原文:http://blog.csdn.net/hongchangfirst/article/details/25538133
作者:hongchangfirst
hongchangfirst的主页:http://blog.csdn.net/hongchangfirst