SDK 提供了 CreateTable、ListTable、DeleteTable、UpdateTable 和 DescribeTable 等表级别的操作接口。
创建表(CreateTable)
根据给定的表结构信息创建相应的表。
创建表格存储的表时必须指定表的主键。主键包含1~4个主键列,每一个主键列都有名字和类型。
接口/**
* 创建表(Table)。
*
* @param createTableRequest 执行CreateTable操作所需参数的封装。
* @return CreateTable操作的响应内容。
* @throws OTSException OTS访问返回错误消息
* @throws ClientException 请求的返回结果无效, 或由于网络原因请求失败, 或访问超时。
*/
public CreateTableResult createTable(CreateTableRequest createTableRequest)
throws OTSException, ClientException;
提示:
//创建主键列的schema,包括PK的个数,名称和类型
//第一个PK列为整数,名称是pk0,这个同时也是分片列
//第二个PK列为整数,名称是pk1
TableMeta tableMeta = new TableMeta("SampleTable");
tableMeta.addPrimaryKeyColumn("pk0", PrimaryKeyType.INTEGER);
tableMeta.addPrimaryKeyColumn("pk1", PrimaryKeyType.INTEGER);
// 将该表的读写CU都设置为0
CapacityUnit capacityUnit = new CapacityUnit(0, 0);
try
{
// 构造CreateTableRequest对象
CreateTableRequest request = new CreateTableRequest();
request.setTableMeta(tableMeta);
request.setReservedThroughput(capacityUnit);
// 调用client的createTable接口,如果没有抛出异常,则说明成功,否则失败
client.createTable(request);
System.out.println("Create table succeeded.");
} catch (ClientException ex) {
// 如果抛出客户端异常,则说明参数等有误
System.out.println("Create table failed.");
} catch (OTSException ex) {
// 如果抛出服务器端异常,则说明请求失败
System.out.println("Create table failed.");
}
/**
* 返回表(Table)名的列表。
*
* @return ListTable 操作的响应内容。
* @throws OTSException OTS访问返回错误消息
* @throws ClientException 请求的返回结果无效,或由于网络原因请求失败,或访问超时。
*/
public ListTableResult listTable() throws OTSException, ClientException;
try
{
// 调用listTable接口
ListTableResult result = client.listTable();
// 打印table名称
for (String tableName : result.getTableNames()) {
System.out.println(tableName);
}
System.out.println("List table succeeded.");
} catch (ClientException ex) {
// 如果抛出客户端异常,则说明参数等有误
System.out.println("List table failed.");
} catch (OTSException ex) {
// 如果抛出服务器端异常,则说明请求失败
System.out.println("List table failed.");
}
/**
* 更新表的读或写CapacityUnit。
*
* @param updateTableRequest 执行UpdateTable操作所需参数的封装。
* @return UpdateTable 操作的响应内容。
* @throws OTSException OTS访问返回错误消息
* @throws ClientException 请求的返回结果无效, 或由于网络原因请求失败, 或访问超时。
*/
public UpdateTableResult updateTable(UpdateTableRequest updateTableRequest)
throws OTSException, ClientException;
// 设定新的预留读吞吐量为 1,写吞吐量为 2
ReservedThroughputChange cuChange = new ReservedThroughputChange();
// 若想单独调整写 CU,则无须设置读 CU
cuChange.setReadCapacityUnit(1);
// 若想单独调整读 CU,则无须设置写 CU
cuChange.setWriteCapacityUnit(2);
// 构造 UpdateTableRequest 对象
UpdateTableRequest request = new UpdateTableRequest();
request.setTableName("SampleTable");
equest.setReservedThroughputChange(reservedThroughput);
try
{
// 调用接口更新表的预留读写吞吐量
client.updateTable(request);
// 没有抛出异常,则说明执行成功
System.out.println("Update table succeeded.");
} catch (ClientException ex) {
// 如果抛出客户端异常,则说明参数等有误
System.out.println("Update table failed.");
} catch (OTSException ex) {
// 如果抛出服务器端异常,则说明请求失败
System.out.println("Update table failed.");
}
/**
* 返回表(Table)的结构信息。
*
* @param describeTableRequest 执行DescribeTable操作所需参数的封装。
* @return DescribeTable 操作的响应内容。
* @throws OTSException OTS访问返回错误消息
* @throws ClientException 请求的返回结果无效, 或由于网络原因请求失败, 或访问超时。
*/
public DescribeTableResult describeTable(DescribeTableRequest describeTableRequest) throws OTSException, ClientException;
try
{
// 构造一个请求对象
DescribeTableRequest request = new DescribeTableRequest();
request.setTableName("SampleTable");
DescribeTableResult result = client.describeTable(request);
// 打印SampleTable的描述信息
TableMeta tableMeta = result.getTableMeta();
System.out.println("Table name:" + tableMeta.getTableName());
System.out.println("Table Pk:");
for (String keyName : tableMeta.getPrimaryKey().keySet()) {
System.out.println(keyName + " : " + tableMeta.getPrimaryKey().get(keyName));
}
ReservedThroughputDetails reservedThroughputDetails = result.getReservedThroughputDetails();
System.out.println("Table read CU:"
+ reservedThroughputDetails.getCapacityUnit().getReadCapacityUnit());
System.out.println("Table write CU:"
+ reservedThroughputDetails.getCapacityUnit().getWriteCapacityUnit());
} catch (ClientException ex) {
// 如果抛出客户端异常,则说明参数等有误
System.out.println("Descibe table failed.");
} catch (OTSException ex) {
// 如果抛出服务器端异常,则说明请求失败
System.out.println("Describe row failed.");
}
/**
* 删除表(Table)。
*
* @param deleteTableRequest 执行DeleteTable操作所需参数的封装。
* @return DeleteTable 操作的响应内容。
* @throws OTSException OTS访问返回错误消息
* @throws ClientException 请求的返回结果无效, 或由于网络原因请求失败, 或访问超时。
*/
public DeleteTableResult deleteTable(DeleteTableRequest deleteTableRequest)
throws OTSException, ClientException;
DeleteTableRequest request = new DeleteTableRequest();
request.setTableName("SampleTable");
try
{
// 删除表
client.deleteTable(request);
// 如果没有抛出异常,则说明删除成功
System.out.println("Delete table succeeded.");
} catch (ClientException ex) {
// 如果抛出客户端异常,则说明参数等有误
System.out.println("Delete table failed.");
} catch (OTSException ex) {
// 如果抛出服务器端异常,则说明请求失败
System.out.println("Delete table failed.");
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。