Table Store的 SDK 提供了 CreateTable、ListTable、DeleteTable、UpdateTable 和 DescribeTable 等表層級的操作介面。
建立表(CreateTable)
根據給定的表的結構資訊建立相應的表。
建立Table Store的表時必須指定表的主鍵。主鍵包含 1~4 個主鍵列,每一個主鍵列都有名字和類型。
介面
/// <summary>
/// 根據表資訊(包含表名、主鍵的設計和預留讀寫輸送量)建立表。
/// </summary>
/// <param name="request">請求參數</param>
/// <returns>CreateTable的返回,這個返回執行個體是空的,不包含具體資訊。
/// </returns>
public CreateTableResponse CreateTable(CreateTableRequest request);
/// <summary>
/// CreateTable的非同步形式。
/// </summary>
public Task<CreateTableResponse> CreateTableAsync(CreateTableRequest request);
说明 Table Store的表在被建立之後需要幾秒鐘進行載入,建立成功後需要等待幾秒鐘後再做其他動作。
樣本
建立一個有 2 個主鍵列,預留讀/寫輸送量為 (0,0) 的表。
//建立主鍵列的schema,包括PK的個數,名稱和類型
//第一個PK列為整數,名稱是pk0,這個同時也是分區列
//第二個PK列為字串,名稱是pk1
var primaryKeySchema = new PrimaryKeySchema();
primaryKeySchema.Add("pk0", ColumnValueType.Integer);
primaryKeySchema.Add("pk1", ColumnValueType.String);
//通過表名和主鍵列的schema建立一個tableMeta
var tableMeta = new TableMeta("SampleTable", primaryKeySchema);
// 設定預留讀輸送量為0,預留寫輸送量為0
var reservedThroughput = new CapacityUnit(0, 0);
try
{
// 構造CreateTableRequest對象
var request = new CreateTableRequest(tableMeta, reservedThroughput);
// 調用client的CreateTable介面,如果沒有拋出異常,則說明成功,否則失敗
otsClient.CreateTable(request);
Console.WriteLine("Create table succeeded.");
}
// 處理異常
catch (Exception ex)
{
Console.WriteLine("Create table failed, exception:{0}", ex.Message);
}
詳細代碼請參見CreateTable@GitHub。
列出表名稱(ListTable)
擷取當前執行個體下已建立的所有表的表名。
介面
/// <summary>
/// 擷取當前執行個體下已建立的所有表的表名。
/// </summary>
/// <param name="request">請求參數</param>
/// <returns>ListTable的返回,用來擷取表名列表。</returns>
public ListTableResponse ListTable(ListTableRequest request);
/// <summary>
/// ListTable的非同步形式。
/// </summary>
public Task<ListTableResponse> ListTableAsync(ListTableRequest request);
樣本
擷取執行個體下的所有表名。
var request = new ListTableRequest();
try
{
var response = otsClient.ListTable(request);
foreach (var tableName in response.TableNames)
{
Console.WriteLine("Table name:{0}", tableName);
}
Console.Writeline("List table succeeded.");
}
catch (Exception ex)
{
Console.WriteLine("List table failed, exception:{0}", ex.Message);
}
更新表(UpdateTable)
更新指定表的預留讀輸送量或預留寫輸送量設定。
介面
/// <summary>
/// 更新指定表的預留讀輸送量或預留寫輸送量,新設定將於更新成功一分鐘內生效。
/// </summary>
/// <param name="request">請求參數,包含表名以及預留讀寫輸送量</param>
/// <returns>包含更新後的預留讀寫輸送量等資訊</returns>
public UpdateTableResponse UpdateTable(UpdateTableRequest request);
/// <summary>
/// UpdateTable的非同步形式。
/// </summary>
public Task<UpdateTableResponse> UpdateTableAsync(UpdateTableRequest request);
樣本
更新表的 CU 值為讀 1,寫 2。
// 設定新的預留讀輸送量為1,寫輸送量為2
var reservedThroughput = new CapacityUnit(1, 2);
// 構造UpdateTableRequest對象
var request = new UpdateTableRequest("SampleTable", reservedThroughput);
try
{
// 調用介面更新表的預留讀寫輸送量
otsClient.UpdateTable(request);
// 沒有拋出異常,則說明執行成功
Console.Writeline("Update table succeeded.");
}
catch (Exception ex)
{
// 如果拋出異常,則說莫執行失敗,列印出錯誤資訊
Console.WriteLine("Update table failed, exception:{0}", ex.Message);
}
詳細代碼請參見UpdateTable@GitHub。
查詢表描述資訊(DescribeTable)
查詢指定表的結構資訊和預留讀/寫輸送量設定資訊。
介面
/// <summary>
/// 查詢指定表的結構資訊和預留讀寫輸送量設定資訊。
/// </summary>
/// <param name="request">請求參數,包含表名</param>
/// <returns>包含表的結構資訊和預留讀寫輸送量等資訊。</returns>
public DescribeTableResponse DescribeTable(DescribeTableRequest request);
/// <summary>
/// DescribeTable的非同步形式。
/// </summary>
public Task<DescribeTableResponse> DescribeTableAsync(DescribeTableRequest request);
樣本
擷取表的描述資訊。
try
{
var request = new DescribeTableRequest("SampleTable");
var response = otsClient.DescribeTable(request);
// 列印表的描述資訊
Console.Writeline("Describe table succeeded.");
Console.WriteLine("LastIncreaseTime: {0}", response.ReservedThroughputDetails.LastIncreaseTime);
Console.WriteLine("LastDecreaseTime: {0}", response.ReservedThroughputDetails.LastDecreaseTime);
Console.WriteLine("NumberOfDecreaseToday: {0}", response.ReservedThroughputDetails.LastIncreaseTime);
Console.WriteLine("ReadCapacity: {0}", response.ReservedThroughputDetails.CapacityUnit.Read);
Console.WriteLine("WriteCapacity: {0}", response.ReservedThroughputDetails.CapacityUnit.Write);
}
catch (Exception ex)
{
//如果拋出異常,則說明執行失敗,列印錯誤資訊
Console.WriteLine("Describe table failed, exception:{0}", ex.Message);
}
詳細代碼請參見DescribeTable@GitHub。
刪除表(DeleteTable)
刪除本執行個體下指定的表。
介面
/// <summary>
/// 根據表名刪除表。
/// </summary>
/// <param name="request">請求參數,包含表名</param>
/// <returns>DeleteTable的返回,這個返回執行個體是空的,不包含具體資訊。
/// </returns>
public DeleteTableResponse DeleteTable(DeleteTableRequest request);
/// <summary>
/// DeleteTable的非同步形式。
/// </summary>
public Task<DeleteTableResponse> DeleteTableAsync(DeleteTableRequest request);
樣本
刪除表。
var request = new DeleteTableRequest("SampleTable");
try
{
otsClient.DeleteTable(request);
Console.Writeline("Delete table succeeded.");
}
catch (Exception ex)
{
Console.WriteLine("Delete table failed, exception:{0}", ex.Message);
}
詳細代碼請參見DeleteTable@GitHub。