Amazon SimpleDB 是一种可用性高、灵活性大的非关系数据存储,能够减轻数据库管理的工作。开发人员只需通过 Web 服务请求执行数据项的存储和查询,Amazon SimpleDB 将负责余下的工作。
Amazon SimpleDB 不会受制于关系数据库的严格要求,而且已经过了优化,能提供更高的可用性和灵活性,让管理负担大幅减少甚至是零负担。而在后台工作时,Amazon SimpleDB 将自动创建和管理分布在多个地理位置的数据副本,以此提高可用性和数据持久性。此服务的收费仅限于:存储您的数据和服务于您的请求时实际消耗的资源量。您可以随时更改数据模型,系统会为您自动索引数据。有了 Amazon SimpleDB,您便可以专心开发应用程序,而不必担心基础设施预配置、高可用性、软件维护、计划和索引管理,或者性能优化这些问题
转载地址 : http://blog.kenyang.net/2012/04/amazon-simpledb-java.html
还可以参考 http://www.ibm.com/developerworks/cn/java/j-javadev2-9/
结合着看,会更好
谢谢这位大牛提供的知识,
這篇主要會教大家如何
建立一張table,
新增資料
刪除資料
查詢資料
SimpleDB 是Amazon提供的一種NoSQL DATABASE!
詳細說明去官網看吧!
首先要先宣告一些必備的參數,
2 | final String DOMAIN_NAME = "member" ; |
5 | AWSCredentials credentials = new PropertiesCredentials(getClass().getClassLoader().getResourceAsStream( "AwsCredentials.properties" )); |
8 | AmazonSimpleDB sdb = new AmazonSimpleDBClient(credentials); |
接著就建立一個table,
2 | sdb.createDomain( new CreateDomainRequest(DOMAIN_NAME)); |
在SimpleDB的新增分成兩種方式!
一種是一筆一筆的新增,
另一種是批次的新增!(一次新增多筆)
有玩過GAE的大概知道,其實GAE也是這樣!
多筆的話就是用一個list存放資料!
在這邊先介紹一次新增多筆的!
02 | List<ReplaceableItem> listAddData = new ArrayList<ReplaceableItem>(); |
07 | listAddData.add( new ReplaceableItem( "Ken" ).withAttributes( |
08 | new ReplaceableAttribute( "Sex" , "boy" , true ), |
09 | new ReplaceableAttribute( "Tel" , "09123456" , true ), |
10 | new ReplaceableAttribute( "Mail" , "xxx@kenyang.net" , true ), |
11 | new ReplaceableAttribute( "Nickname" , "KenYang" , true ))); |
14 | listAddData.add( new ReplaceableItem( "Sam" ).withAttributes( |
15 | new ReplaceableAttribute( "Sex" , "boy" , true ), |
16 | new ReplaceableAttribute( "Tel" , "09123456" , true ), |
17 | new ReplaceableAttribute( "Mail" , "xxx@kenyang.net" , true ), |
18 | new ReplaceableAttribute( "Nickname" , "SamYang" , true ))); |
22 | sdb.batchPutAttributes( new BatchPutAttributesRequest(DOMAIN_NAME, listAddData)); |
接著要介紹新增一筆的! 其實大同小異,只是要宣告一個PutAttributesRequest來擺放資料!
一個PutAttributeRequest就代表一筆資料!
01 | PutAttributesRequest dataAttribute = new PutAttributesRequest().withDomainName(DOMAIN_NAME).withItemName( "John" ); |
03 | dataAttribute.getAttributes().add( |
04 | new ReplaceableAttribute() |
09 | dataAttribute.getAttributes().add( |
10 | new ReplaceableAttribute() |
15 | dataAttribute.getAttributes().add( |
16 | new ReplaceableAttribute() |
18 | .withValue( "xxx@gmail.com" ) |
21 | dataAttribute.getAttributes().add( |
22 | new ReplaceableAttribute() |
24 | .withValue( "JohnYang" ) |
27 | sdb.putAttributes(dataAttribute); |
接下來要介紹刪除! 這邊是介紹一次刪除多筆的!
一樣是用一個List去存放要刪除的Item Name!
至於刪除單筆,也跟上述方法一樣! 這裡就不多作介紹!
1 | List<DeletableItem> listDeleteData = new ArrayList<DeletableItem>(); |
2 | listDeleteData.add( new DeletableItem().withName( "Ken" )); |
3 | listDeleteData.add( new DeletableItem().withName( "Sam" )); |
5 | sdb.batchDeleteAttributes( new BatchDeleteAttributesRequest(DOMAIN_NAME,listDeleteData)); |
最後要介紹查詢了!
2 | String selectExpression = "select * from `" + DOMAIN_NAME + "` " ; |
3 | SelectRequest selectRequest = new SelectRequest(selectExpression); |
4 | SelectResult sr = sdb.select(selectRequest); |
6 | for (Item item : sr.getItems()) { |
7 | response.getWriter().println(item.getName()); |
8 | response.getWriter().println(item.getAttributes().get( 0 ).getValue()); |