使用 Java SDK 创建时序表,并配置时序数据和时间线元数据的生命周期、时间线标识、数据字段主键、分析存储及 Lastpoint 索引。
前提条件
安装Tablestore Java SDK并初始化时序模型客户端。
功能说明
调用 createTimeseriesTable 方法创建用于存储时序数据和时间线元数据的时序表。时序表名称不能与实例中已有的表名称相同,包括数据表和时序表。
public CreateTimeseriesTableResponse createTimeseriesTable(CreateTimeseriesTableRequest request)以下示例创建 example_timeseries_table。未设置时,时序数据的生命周期默认为 -1,表示数据永不过期;默认不创建分析存储。
TimeseriesClient timeseriesClient = client.asTimeseriesClient();
String tableName = "example_timeseries_table";
TimeseriesTableMeta tableMeta = new TimeseriesTableMeta(tableName);
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(tableMeta);
timeseriesClient.createTimeseriesTable(request);参数说明
CreateTimeseriesTableRequest 包含以下参数。
名称 | 类型 | 说明 |
timeseriesTableMeta(必选) |
| 时序表结构。 |
analyticalStores(可选) |
| 自定义分析存储列表,默认值为空。创建时序表时最多创建一个分析存储。 |
enableAnalyticalStore(可选) |
| 是否创建默认分析存储,默认值为 |
lastpointIndexes(可选) |
| 随时序表创建的 Lastpoint 索引列表,默认值为空。创建时序表时最多同时创建一个 Lastpoint 索引;一个时序表的 Lastpoint 索引与分析存储总数不能超过 10 个。 |
时序表结构
timeseriesTableMeta 的类型为 TimeseriesTableMeta,包含以下参数。
名称 | 类型 | 说明 |
timeseriesTableName(必选) |
| 时序表名称,不能与实例中已有的表名称相同,包括数据表和时序表。 |
timeseriesTableOptions(可选) |
| 时序数据生命周期配置。不设置时使用默认配置。 |
timeseriesMetaOptions(可选) |
| 时间线元数据配置,包括生命周期和属性列更新设置。 |
timeseriesKeys(可选) |
| 自定义时间线标识的字段名称列表,最多包含 6 个字段。不设置时,时间线标识由度量名称、数据源和标签构成。关于该功能的更多信息,请参见自定义时间线标识和数据字段主键。 |
fieldPrimaryKeys(可选) |
| 作为主键的数据字段列表,最多包含 4 个字段,用于存储时间线标识和时间点均相同的多行数据。关于该功能的更多信息,请参见自定义时间线标识和数据字段主键。 |
时序数据生命周期
timeseriesTableMeta.timeseriesTableOptions 的类型为 TimeseriesTableOptions,包含以下参数。
名称 | 类型 | 说明 |
timeToLive(可选) |
| 时序数据的生命周期,单位为秒,默认值为 |
时间线元数据
timeseriesTableMeta.timeseriesMetaOptions 的类型为 TimeseriesMetaOptions,包含以下参数。
名称 | 类型 | 说明 |
metaTimeToLive(可选) |
| 时间线元数据的生命周期,单位为秒。取值为 |
allowUpdateAttributes(可选) |
| 是否允许更新时间线元数据的属性列。设置有限的 |
数据字段主键
timeseriesTableMeta.fieldPrimaryKeys[] 中每个元素的类型为 PrimaryKeySchema,包含以下参数。
名称 | 类型 | 说明 |
name(必选) |
| 作为主键的数据字段名称。 |
type(必选) |
| 数据字段类型。取值为 |
分析存储
analyticalStores[] 中每个元素的类型为 TimeseriesAnalyticalStore,包含以下参数。
名称 | 类型 | 说明 |
analyticalStoreName(必选) |
| 分析存储名称。 |
timeToLive(可选) |
| 分析存储的数据生命周期,单位为秒,默认值为 |
syncOption(可选) |
| 数据同步方式,默认值为 |
Lastpoint 索引
lastpointIndexes[] 中每个元素的类型为 CreateTimeseriesTableRequest.LastpointIndex,包含以下参数。
名称 | 类型 | 说明 |
indexName(必选) |
| Lastpoint 索引名称。关于该功能的更多信息,请参见Lastpoint 索引。 |
场景示例
配置时间线元数据生命周期
以下示例将时序数据的生命周期设置为 7 天,将时间线元数据的生命周期设置为 14 天,并禁止更新时间线元数据的属性列。
String tableName = "example_timeseries_table";
TimeseriesTableOptions tableOptions = new TimeseriesTableOptions(604800);
TimeseriesTableMeta tableMeta = new TimeseriesTableMeta(tableName, tableOptions);
TimeseriesMetaOptions metaOptions = new TimeseriesMetaOptions();
metaOptions.setMetaTimeToLive(1209600);
metaOptions.setAllowUpdateAttributes(false);
tableMeta.setTimeseriesMetaOptions(metaOptions);
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(tableMeta);
timeseriesClient.createTimeseriesTable(request);自定义时间线标识和数据字段主键
自定义时间线标识和数据字段主键需要使用 5.17.1 及以上版本,建议使用最新版本的 SDK。使用前,请确认实例所在地域支持该功能。
以下示例使用 pk1 和 pk2 构成时间线标识,并将 field1 和 field2 设置为数据字段主键。
String tableName = "example_timeseries_table";
TimeseriesTableMeta tableMeta = new TimeseriesTableMeta(tableName);
tableMeta.addTimeseriesKey("pk1");
tableMeta.addTimeseriesKey("pk2");
tableMeta.addFieldPrimaryKey("field1", PrimaryKeyType.INTEGER);
tableMeta.addFieldPrimaryKey("field2", PrimaryKeyType.STRING);
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(tableMeta);
timeseriesClient.createTimeseriesTable(request);创建 Lastpoint 索引
Lastpoint 索引需要使用 5.17.1 及以上版本,建议使用最新版本的 SDK。使用该功能前,需要在支持该功能的地域创建时序模型实例。支持的地域,请参见Lastpoint 索引。
以下示例随时序表创建名称为 example_lastpoint_index 的 Lastpoint 索引。
String tableName = "example_timeseries_table";
TimeseriesTableMeta tableMeta = new TimeseriesTableMeta(tableName);
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(tableMeta);
request.addLastpointIndex(
new CreateTimeseriesTableRequest.LastpointIndex("example_lastpoint_index"));
timeseriesClient.createTimeseriesTable(request);创建分析存储
分析存储用于低成本存储和分析时序数据。使用该功能前,需要在支持该功能的地域创建时序模型实例。支持的地域及功能详情,请参见分析存储。
默认分析存储
将 enableAnalyticalStore 设置为 true,创建名称为 default_analytical_store 的默认分析存储。
String tableName = "example_timeseries_table";
TimeseriesTableMeta tableMeta = new TimeseriesTableMeta(tableName);
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(tableMeta);
request.setEnableAnalyticalStore(true);
timeseriesClient.createTimeseriesTable(request);自定义分析存储
以下示例随时序表创建 example_analytical_store,分析存储中的数据永不过期,并使用全量同步方式。
String tableName = "example_timeseries_table";
TimeseriesTableMeta tableMeta = new TimeseriesTableMeta(tableName);
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(tableMeta);
TimeseriesAnalyticalStore analyticalStore =
new TimeseriesAnalyticalStore("example_analytical_store");
analyticalStore.setTimeToLive(-1);
analyticalStore.setSyncOption(AnalyticalStoreSyncType.SYNC_TYPE_FULL);
request.setAnalyticalStores(Collections.singletonList(analyticalStore));
timeseriesClient.createTimeseriesTable(request);