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

前提条件

  • 已初始化Client。具体操作,请参见初始化
  • 已创建数据表,且数据表的数据生命周期(time_to_live)必须为-1,最大版本数(max_versions)必须为1。
  • 数据表已设置预定义列。

创建索引表(CreateIndex)

使用CreateIndex接口在已存在的数据表上创建索引表。
说明 您也可以使用CreateTable接口在创建数据表的同时创建一个或者多个索引表。具体操作,请参见创建数据表
  • 参数
    参数说明
    main_table_name数据表名称。
    index_meta索引表的结构信息,包括如下内容:
    • index_name:索引表名称。
    • primary_key_names:索引表的索引列,索引列为数据表主键和预定义列的组合。

      使用本地二级索引时,索引表的第一个主键列必须与数据表的第一个主键列相同。

    • defined_column_names:索引表的属性列,索引表属性列为数据表的预定义列的组合。
    • index_type:索引类型。可选值包括IT_GLOBAL_INDEX和IT_LOCAL_INDEX。
      • 当不设置index_type或者设置index_type为IT_GLOBAL_INDEX时,表示使用全局二级索引。

        使用全局索引时,表格存储以异步方式将数据表中被索引的列和主键列的数据自动同步到索引表中,正常情况下同步延迟达到毫秒级别。

      • 当设置index_type为IT_LOCAL_INDEX时,表示使用本地二级索引。

        使用本地二级索引时,表格存储以同步方式将数据表中被索引的列和主键列的数据自动同步到索引表中,当数据写入数据表后,即可从索引表中查询到数据。

    include_base_data索引表中是否包含数据表中已存在的数据。

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

  • 示例

    在主键为pk1、pk2的数据表上创建主键列为pk1、definedcol1,属性列为definedcol2、definedcol3的索引表。

    index_meta = SecondaryIndexMeta('index2', ['pk1', 'definedcol1'], ['definedcol2', 'definedcol3'],index_type= SecondaryIndexType.LOCAL_INDEX)
    client.create_secondary_index(table_name, index_meta)

读取索引表中数据

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

  • 单行读取索引表中数据

    更多信息,请参见读取单行数据

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

    更多信息,请参见范围读取数据

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

删除索引表(DeleteIndex)

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

  • 参数
    参数说明
    main_table_name数据表名称。
    index_name索引表名称。
  • 示例
    client.delete_secondary_index(table_name, 'index1')