全部產品
Search
文件中心

Tablestore:時序表操作

更新時間:Jul 19, 2024

時序模型通過時序表格儲存體時間序列資料,單表能提供高並發寫入和查詢以及PB級海量資料的低成本儲存。建立時序表時,您可以配置資料生命週期。建立時序表後,您可以根據實際管理時序表,例如擷取執行個體中的所有時序表名稱、更新時序表的配置資訊等。

注意事項

  • 單個執行個體中最多可以建立64張表。其中表包含資料表、二級索引表和時序表。更多使用限制介紹,請參見時序模型限制

    由於時序表包括時間軸中繼資料表和時間軸資料表,因此一個時序表會使用兩個表名額。

  • 目前支援使用時序模型功能的地區有華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華北6(烏蘭察布)、華南1(深圳)、中國香港、德國(法蘭克福)、美國(維吉尼亞)、印度(孟買)關停中、沙特(利雅得)和新加坡。

功能概述

Table Store提供了CreateTimeseriesTableListTimeseriesTableUpdateTimeseriesTableDescribeTimeseriesTableDeleteTimeseriesTable的時序表操作介面。

使用Table Store時序模型儲存時序資料前,您需要通過調用CreateTimeseriesTable介面建立一個時序表。

建立時序表時,您需要指定時序表名稱以及根據實際配置資料生命週期。

為時序表配置資料生命週期後,系統會自動非同步清理超過TTL的時序資料。更多資訊,請參見時序資料生命週期

建立時序表後,您可以根據實際需要執行相應操作。

操作

說明

列出時序表名稱

當需要查看執行個體下已有的時序表時,您可以調用ListTimeseriesTable介面擷取當前執行個體下已建立的所有時序表名稱。

更新表資訊

當需要清理時序表中的歷史資料或者希望延長資料儲存時間時,您可以調用UpdateTimeseriesTable介面修改時序表資料生命週期、時間軸中繼資料生命週期或者是否允許更新時間軸屬性列配置。

重要

當存在時間軸的儲存時間超過時間軸中繼資料TTL時,Table Store會自動非同步清理這些時間軸中繼資料,不會刪除時序表資料。當通過GetTimeseriesData介面指定時間軸標識進行查詢時仍可查詢到時序表資料。

  • 更新時序表的TTL後,Table Store會自動非同步清理時序表中超過TTL的資料。

  • 更新時間軸中繼資料的TTL後,Table Store會自動非同步清理超過TTL的時間軸中繼資料。

    重要

    時間軸中繼資料中有一個時間軸中繼資料屬性列(_attributes)支援進行更新,但目前僅在時間軸中繼資料生命週期為-1(資料永不到期)時支援該屬性的更新。

    如果要將時間軸中繼資料生命週期從-1修改為大於等於7天,請確認商務邏輯中不需要更新時間軸中繼資料屬性,並將時間軸中繼資料屬性是否允許更新配置為

    如果要將時間軸中繼資料屬性是否允許更新配置為,則您需要同步將時間軸中繼資料生命週期調整為-1

  • 時間軸中繼資料屬性列預設支援更新,您可以根據需要配置不允許更新時間軸中繼資料屬性列。

查詢表描述資訊

當需要查看時序表的詳細配置資訊時,您可以調用DescribeTimeseriesTable介面查詢時序表的配置資訊(例如資料生命週期)、表狀態或者時間軸中繼資料配置(例如是否允許更新時間軸屬性列)。

刪除時序表

調用DeleteTimeseriesTable介面刪除當前執行個體下指定時序表。

重要

時序表刪除後不支援恢複,請謹慎操作。

使用方式

您可以使用控制台、命令列工具或者SDK進行時序表操作。

說明

通過不同使用方式進行操作時支援的功能存在差異,請以實際為準。

進行時序表操作前,您需要完成如下準備工作。

  • 使用阿里雲帳號或者使用具有Table Store操作許可權的RAM使用者進行操作。如果需要為RAM使用者授權Table Store操作許可權,請參見通過RAM Policy為RAM使用者授權進行配置。

    使用SDK方式和命令列工具方式進行操作時,如果當前無可用AccessKey,您還需要為阿里雲帳號或者RAM使用者建立AccessKey。具體操作,請參見建立AccessKey

  • 已建立時序模型執行個體。具體操作,請參見建立時序模型執行個體

  • 使用SDK方式進行操作時,還需要完成初始化Client。具體操作,請參見初始化OTSClient

  • 使用命令列工具方式進行操作前,還需要完成下載並啟動命令列工具,然後配置接入執行個體資訊。具體操作,請參見下載命令列工具啟動並配置接入執行個體

使用控制台

通過控制台建立一張時序表。

  1. 進入執行個體管理頁面。

    1. 登入Table Store控制台

    2. 在頁面上方,選擇資源群組和地區。

    3. 概覽頁面,單擊執行個體名稱或者單擊執行個體操作執行個體管理

  2. 執行個體詳情頁簽,單擊時序表列表頁簽。

  3. 時序表列表頁簽,單擊建立時序表

    說明

    您也可以單擊一鍵產生範例,建立一張測試表以及範例資料來快速體驗功能。對於建立的測試表,系統會進行一些初始化操作,因此需要等待幾十秒左右才能看到時間軸。

  4. 建立時序表對話方塊,按照如下說明配置時序表資訊。

    參數

    描述

    時序表名稱

    時序表的名稱,用於在執行個體中唯一標識一張時序表。

    時序表的命名規則為由大小寫字母、數字或底線(_)組成,且只能以字母或底線(_)開頭,長度在1~128個字元之間。

    重要

    時序表的名稱不能與當前已存在的資料表、二級索引表和時序表的名稱相同。

    資料生命週期

    時序表中資料的到期時間,單位為秒。當系統判斷目前時間減去使用者傳入資料列的時間已經超過設定的資料生命週期時,系統會自動清理超過資料生命週期的資料。

    重要

    在時序表中,系統判斷資料產生時間以使用者傳入的時間列為準,並非資料寫入表中的時間。

    取值必須大於等於86400秒(一天)或者必須為-1(資料永不到期)。

  5. 單擊確定

    時序表建立完成後,在時序表列表頁簽,您可以查看已建立的時序表。如果建立的表未顯示在列表中,可單擊fig_tablestore_002表徵圖,重新整理時序表列表。

建立時序表後,請根據實際需要執行相應操作管理時序表。

功能

描述

更新時序表資料生命週期

  1. 時序表列表頁簽,單擊時序表名稱。

  2. 基本詳情頁簽的基本資料地區,單擊資料生命週期後的image.png表徵圖。

  3. 在彈出的懸浮框中,修改資料生命週期。

    時序表中資料的到期時間,單位為秒。取值必須大於等於86400秒(一天)或者必須為-1(資料永不到期)。

  4. 單擊確定

更新時間軸中繼資料生命週期

  1. 時序表列表頁簽,單擊時序表名稱。

  2. 基本詳情頁簽的基本資料地區,單擊時間軸中繼資料生命週期後的image.png表徵圖。

  3. 在彈出的懸浮框中,修改資料生命週期。

    時序時間軸表的時間軸資料存活時間,單位為秒。取值必須大於等於604800秒(即7天)或者必須為-1(資料永不到期)。

  4. 單擊確定

更新時間軸中繼資料屬性是否允許更新

  1. 時序表列表頁簽,單擊時序表名稱。

  2. 基本詳情頁簽的基本資料地區,單擊時間軸中繼資料屬性是否允許更新後的image.png表徵圖。

  3. 在彈出的懸浮框中,選擇是否允許更新時間軸屬性列。

  4. 單擊確定

刪除時序表

  1. 時序表列表頁簽,單擊刪除

  2. 在彈出的對話方塊中單擊確定

使用命令列工具

通過命令列工具執行create命令建立時序表。更多資訊,請參見建立表

以下樣本用於建立名稱為mytable的時序表,表中資料永不到期。

create -m timeseries -t mytable --ttl -1

執行表操作前,您需要執行use命令選擇要使用的表。更多資訊,請參見使用表

以下樣本用於使用mytable時序表。

use --ts -t mytable

建立並使用時序表後,請根據實際需要執行相應操作管理時序表。

功能

描述

列出時序表名稱

執行list命令列出表名稱。更多資訊,請參見列出表名稱

以下樣本用於列出所有時序表名稱。

list -t

更新表資訊

執行alter命令更新表資訊。更多資訊,請參見更新表

以下樣本用於修改當前表的資料生命週期為86400秒(即1天)。

alter --ttl 86400 --ts

查詢表描述資訊

執行desc命令查看時序表的資訊。更多資訊,請參見查看錶資訊

以下樣本用於查看mytable時序表的資訊。

desc --ts -t mytable

刪除時序表

執行drop命令刪除不需要的表。更多資訊,請參見刪除表

以下樣本用於刪除mytable表。

drop -t mytable --ts -y

使用SDK

您可以使用Java SDKGo SDK建立時序表以及管理時序表。此處以Java SDK為例介紹時序表的建立和管理。

請根據實際情境選擇合適的樣本進行時序表建立。

以下樣本用於建立test_timeseries_table時序表,且該表中資料永不到期。

private static void createTimeseriesTable(TimeseriesClient client) {
    String tableName = "test_timeseries_table";
    TimeseriesTableMeta timeseriesTableMeta = new TimeseriesTableMeta(tableName);
    int timeToLive = -1;
    timeseriesTableMeta.setTimeseriesTableOptions(new TimeseriesTableOptions(timeToLive));
    CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(timeseriesTableMeta);
    
    client.createTimeseriesTable(request);
}

建立時序表後,請根據實際需要執行相應操作管理時序表。

列出時序表名稱

以下樣本用於擷取執行個體下所有時序表的表名。

private static void listTimeseriesTable(TimeseriesClient client) {
    ListTimeseriesTableResponse listTimeseriesTableResponse = client.listTimeseriesTable();
    for (String table : listTimeseriesTableResponse.getTimeseriesTableNames()) {
        System.out.println(table);
    }
}

更新時序表資料生命週期

以下樣本用於更新指定時序表的TTL為3年。

private static void updateTimeseriesTable(TimeseriesClient client) {
    // 填寫時序表名稱。
    String tableName = "<TIMESERIES_TABLE>";
    UpdateTimeseriesTableRequest updateTimeseriesTableRequest = new UpdateTimeseriesTableRequest(tableName);
    // 更新TTL為3年。
    updateTimeseriesTableRequest.setTimeseriesTableOptions(new TimeseriesTableOptions(86400 * 365 * 3)); 
    client.updateTimeseriesTable(updateTimeseriesTableRequest);

    DescribeTimeseriesTableResponse describeTimeseriesTableResponse = client.describeTimeseriesTable(new DescribeTimeseriesTableRequest(tableName));
    TimeseriesTableMeta tableMeta = describeTimeseriesTableResponse.getTimeseriesTableMeta();
    // 查看更新後時序表的TTL配置。
    System.out.println(tableMeta.getTimeseriesTableOptions().getTimeToLive()); 
}

查詢時序表描述資訊

以下樣本用於查詢指定時序表的描述資訊。

private static void describeTimeseriesTable(TimeseriesClient client) {
    // 填寫時序表名稱。
    String tableName = "<TIMESERIES_TABLE>";
    DescribeTimeseriesTableResponse describeTimeseriesTableResponse = client.describeTimeseriesTable(new DescribeTimeseriesTableRequest(tableName));
    TimeseriesTableMeta tableMeta = describeTimeseriesTableResponse.getTimeseriesTableMeta();
    // 查看時序表名。
    System.out.println(tableMeta.getTimeseriesTableName()); 
    // 查看時序表狀態。
    System.out.println(tableMeta.getStatus()); 
    // 查看時序表的TTL配置。
    System.out.println(tableMeta.getTimeseriesTableOptions().getTimeToLive()); 
    // 查看時間軸表的TTL配置。
    System.out.println(tableMeta.getTimeseriesMetaOptions().getMetaTimeToLive()); 
    // 查看是否允許更新時間軸屬性列。
    System.out.println(tableMeta.getTimeseriesMetaOptions().getAllowUpdateAttributes()); 
}

刪除時序表

以下樣本用於刪除指定時序表。

private static void deleteTimeseriesTable(TimeseriesClient client) {
    // 填寫時序表名稱。
    String tableName = "<TIMESERIES_TIME>";
    DeleteTimeseriesTableRequest deleteTimeseriesTableRequest = new DeleteTimeseriesTableRequest(tableName);
    client.deleteTimeseriesTable(deleteTimeseriesTableRequest);
}

相關文檔

建立時序表後,您可以寫入時序資料以及讀取表中時序資料。更多資訊,請參見基礎資料操作