java操作SimpleDB amazon 亚马逊数据库

本文详细介绍了如何使用 Amazon SimpleDB 进行数据库操作,包括创建表、批量和单笔新增数据、删除数据及查询数据的方法。Amazon SimpleDB 是一种灵活且高可用的非关系型数据库服务,简化了数据库管理和维护工作。
摘要由CSDN通过智能技术生成

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!
詳細說明去官網看吧!

首先要先宣告一些必備的參數,

1 // 你的table name(在Relational Database叫做table,這裡叫做domain)
2   final String DOMAIN_NAME = "member";
3    
4   // 取得憑證,這檔案預設在/src底下
5   AWSCredentials credentials = newPropertiesCredentials(getClass().getClassLoader().getResourceAsStream("AwsCredentials.properties"));
6    
7   // 宣告一個SimpleDB
8   AmazonSimpleDB sdb = new AmazonSimpleDBClient(credentials);
9      

接著就建立一個table,
1 // 建立一個table(在Relational Database叫做table,這裡叫做domain)
2   sdb.createDomain(new CreateDomainRequest(DOMAIN_NAME));


在SimpleDB的新增分成兩種方式!
一種是一筆一筆的新增,
另一種是批次的新增!(一次新增多筆)
有玩過GAE的大概知道,其實GAE也是這樣!
多筆的話就是用一個list存放資料!

在這邊先介紹一次新增多筆的!
01 // 先宣告一個List,List擺放的型態為ReplaceableItem,這型態意思是如果table裡面已經有一筆Ken的資料,那麼就取代掉那筆,不會多一筆
02   List<ReplaceableItem> listAddData = new ArrayList<ReplaceableItem>();
03  
04  
05   // 第一筆資料
06   // 先new一個Item,Item Name是Ken,然後這個item有四個attribute!分別是Sex, Tel, Mail, Nickname
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)));
12   
13   // 第二筆
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)));
19  
20  
21   // 接著就新增吧!記得要指定Domain name!
22   sdb.batchPutAttributes(new BatchPutAttributesRequest(DOMAIN_NAME, listAddData));



接著要介紹新增一筆的! 其實大同小異,只是要宣告一個PutAttributesRequest來擺放資料!
一個PutAttributeRequest就代表一筆資料!
01 PutAttributesRequest dataAttribute = newPutAttributesRequest().withDomainName(DOMAIN_NAME).withItemName("John");
02       
03   dataAttribute.getAttributes().add(       
04        new ReplaceableAttribute()
05            .withName("Sex")
06            .withValue("girl")
07            .withReplace(true));
08       
09   dataAttribute.getAttributes().add(       
10        new ReplaceableAttribute()
11            .withName("Tel")
12            .withValue("0987123")
13            .withReplace(true));
14    
15   dataAttribute.getAttributes().add(       
16        new ReplaceableAttribute()
17            .withName("Mail")
18            .withValue("xxx@gmail.com")
19            .withReplace(true));
20       
21   dataAttribute.getAttributes().add(       
22        new ReplaceableAttribute()
23            .withName("Nickname")
24            .withValue("JohnYang")
25            .withReplace(true));    
26       
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"));
4   // 所以Ken和Sam這兩筆資料會被刪除
5   sdb.batchDeleteAttributes(new BatchDeleteAttributesRequest(DOMAIN_NAME,listDeleteData));


最後要介紹查詢了!
1 // 注意,傳統的SQL指令,都是用單引號('),但是這裡要用(`)
2      String selectExpression = "select * from `" + DOMAIN_NAME + "` ";
3      SelectRequest selectRequest = new SelectRequest(selectExpression);
4      SelectResult sr = sdb.select(selectRequest);
5    
6      for (Item item : sr.getItems()) {
7           response.getWriter().println(item.getName());
8           response.getWriter().println(item.getAttributes().get(0).getValue());
9      }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值