表格存储的 SDK 提供了 CreateTable、ListTable、DeleteTable、UpdateTable 和 DescribeTable 等表级别的操作接口。

创建表(CreateTable)

根据给定的表的结构信息创建相应的表。

创建表格存储的表时必须指定表的主键。主键包含 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);
说明 表格存储的表在被创建之后需要几秒钟进行加载,创建成功后需要等待几秒钟后再做其他操作。

示例

创建一个有 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