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