在数据表上创建索引表后,可根据需要读取索引表中的数据或者删除数据表上指定的索引表。

前提条件

  • 已初始化Client,详情请参见初始化
  • 已创建数据表,且数据表的数据生命周期(timeToLive)必须为-1,最大版本数(maxVersions)必须为1。
  • 数据表已设置预定义列。

创建索引表(CreateIndex)

使用CreateIndex接口在已存在的数据表上创建索引表。
说明 您也可以使用CreateTable接口在创建数据表的同时创建一个或者多个索引表,详情请参见 创建数据表
  • 接口
        /**
         * 创建二级索引。
         * @api
         *
         * @param [] $request
         *            请求参数,数据表名称。
         * @return [] 请求返回
         * @throws OTSClientException 当参数检查出错或服务端返回校验出错时抛出异常。
         * @throws OTSServerException 当OTS服务端返回错误时抛出异常。
         * @example "src/examples/CreateIndex.php"
         */
        public function createIndex(array $request)
  • 参数
    参数 说明
    main_table_name 数据表名称。
    index_meta 索引表的结构信息,包括如下内容:
    • name:索引表名称。
    • primary_key:索引表的索引列,索引列为数据表主键和预定义列的任意组合。
    • defined_column:索引表的属性列,索引表属性列为数据表的预定义列的组合。
    • index_update_mode:索引表更新模式,当前只支持IUM_ASYNC_INDEX。
    • index_type:索引表类型,当前只支持IT_GLOBAL_INDEX。
    include_base_data 索引表中是否包含数据表中已存在的数据。

    当设置include_base_data为true时,表示包含存量数据;设置include_base_data为false时,表示不包含存量数据。

  • 示例
    $request = array(
        'table_name' => 'MainTableName',
        'index_meta' => array(
            'name' => self::$indexName1,
            'primary_key' => array('col1'),
            'defined_column' => array('col2')
        )
    );
    $this->otsClient->createIndex($request);

读取索引表中数据

从索引表中单行或者范围读取数据,当返回的属性列在索引表中时,可以直接读取索引表获取数据,否则请自行反查数据表获取数据。

  • 单行读取索引表中数据

    详情请参见单行数据操作

    使用GetRow接口读取索引表中数据时有如下注意事项:
    • table_name需要设置为索引表名称。
    • 由于系统会自动将未出现在索引列中的数据表主键补齐到索引表主键中,所以设置行的主键时,需要同时设置索引表索引列和补齐的数据表主键。
  • 范围读索引表中数据

    详情请参见多行数据操作

    使用GetRange接口读取索引表中数据时有如下注意事项:
    • table_name需要设置为索引表名称。
    • 由于系统会自动将未出现在索引列中的数据表主键补齐到索引表主键中,所以设置起始主键和结束主键时,需要同时设置索引表索引列和补齐的数据表主键。

删除索引表(DropIndex)

使用DropIndex接口删除数据表上指定的索引表。

  • 接口
        /**
         * 删除全局二级索引。
         * @api
         *
         * @param [] $request
         *            请求参数,数据表名称。
         * @return [] 请求返回。
         * @throws OTSClientException 当参数检查出错或服务端返回校验出错时抛出异常。
         * @throws OTSServerException 当OTS服务端返回错误时抛出异常。
         * @example "src/examples/DropIndex.php"
         */
        public function dropIndex(array $request)
  • 参数
    参数 说明
    table_name 数据表名称。
    index_name 索引表名称。
  • 示例
    $request = array (
        'table_name' => 'MainTableName',
        'index_name' => 'IndexName'
    );
    $otsClient->dropIndex( $request );