全部產品
Search
文件中心

Tablestore:寫入時序資料

更新時間:Sep 04, 2024

Table Store提供了PutTimeseriesData介面用於批量寫入時序資料。時序資料由時間軸中繼資料和時序表資料群組成。如果未預先建立時間軸中繼資料,當寫入時序資料時,系統會自動提取該時間軸的中繼資料資訊並自動構建索引。

說明

在Table Store的時序模型中採用一張二維的時序表來儲存時序資料。每行代表一個時間軸在某個時間點的資料,該行的主鍵部分為時間軸標識和時間戳記,該行的資料列部分為該時間軸在該時間戳記下的資料點,可以有多個資料列。更多資訊,請參見時序模型介紹

注意事項

在寫入時序資料時,請合理評估時序表的設計並關注時間軸的總條數。如果表中存在大量的短時間軸(即一條時間軸下僅有一條或幾條時序資料),則您可能會看到時序資料的中繼資料存放區量偏大,因為目前Table Store會為每條時間軸的中繼資料構建索引,按照每條時間軸4 KB的大小計算中繼資料的總儲存大小。

如果要刪除時間軸中繼資料,您可以使用時間線中繼資料生命週期實現由系統自動清理時間軸中繼資料或者調用DeleteTimeseriesMeta介面進行手動刪除。時間軸的標識在SDK樣本中為TimeseriesKey。

說明

關於時序資料計費的更多資訊,請參見時序模型計量計費

功能概述

調用PutTimeseriesData介面批量寫入時序資料,一次PutTimeseriesData操作支援寫入多行時序資料。如果該行資料已存在,則先刪除原行資料,再寫入新行資料。

寫入時序資料時,您必須指定時間軸標識和時間軸資料。如果未預先建立中繼資料,則系統會根據寫入的資料自動提取中繼資料。

使用方式

您可以使用控制台、命令列工具或者SDK進行資料寫入操作。

說明

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

寫入時序資料前,您需要完成如下準備工作。

使用控制台

您可以使用控制台預先定義時間軸以及將時序資料寫入時序表。

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

    1. 登入Table Store控制台

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

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

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

  3. 時序表列表頁簽,單擊時序表名稱後選擇資料管理頁簽或在時序表操作列單擊資料管理

  4. (可選)建立時間軸。

    1. 資料管理頁簽,單擊新增時間軸

    2. 新增時間軸對話方塊,新增時間軸中繼資料。

      fig_datatimeseries

      詳細參數說明請參見下表。

      參數

      描述

      度量名稱

      時間軸資料所度量的物理量或者監控指標的名稱,例如cpu或net,用於表示該時間軸記錄的是cpu或者網路使用率等。

      資料來源

      產生時間軸的資料來源標識,可以為空白。

      標籤

      時間軸的標籤資訊。您可以自訂多個字串類型的key-value對。

      屬性

      時間軸的屬性列,用於記錄該時間軸的一些屬性資訊。

    3. 單擊確定

  5. 插入資料。

    1. 單擊插入資料

    2. 插入資料對話方塊,設定時間和屬性列。fig_datatimeseries

    3. 單擊確定

使用命令列工具

執行use --ts -t <TIMESERIES_TABLE>命令使用要操作的時序表後,您可以使用命令列工具執行如下命令寫入時序資料。

  • 執行putts命令插入單行資料。更多資訊,請參見寫入時序資料

    以下樣本用於插入一行時序資料到時序表。

    putts --k '["cpu","localhost",["region=hangzhou","os=ubuntu"]]' --field '[{"c":"fieldname","v":"fieldvalue"},{"c":"bool_field","v":true},{"c":"double_field","v":1.1},{"c":"int_value","v":10,"isint":true}]' --time 1635162859000000
  • 執行import_timeseries命令匯入本地檔案中的時序資料到時序表。更多資訊,請參見匯入時序資料

    假設設定檔名稱為import_timeseries.txt,儲存在/temp/目錄中。樣本檔案中的每一行代表一行時序資料,每一行的資料格式為measurement_name,tags fields timestamp

    設定檔的樣本如下:

    cpu,hostname=host_0,region=cn-hangzhou usage_user=58i,usage_system=2i,usage_idle=24i 1609459200000000000
    cpu,hostname=host_1,region=cn-hangzhou usage_user=58i,usage_system=2i,usage_idle=24i 1609459200000000000

    以下樣本用於匯入import_timeseries.txt檔案中的時序資料到時序表中。

    import_timeseries --input /temp/import_timeseries.txt

使用SDK

您可以使用Java SDKGo SDK寫入時序資料。此處以Java SDK為例介紹資料寫入的使用。

以下樣本用於向test_timeseries_table時序表中寫入多個時序資料。

private static void putTimeseriesData(TimeseriesClient client) {
    List<TimeseriesRow> rows = new ArrayList<TimeseriesRow>();
    for (int i = 0; i < 10; i++) {
        Map<String, String> tags = new HashMap<String, String>();
        tags.put("region", "hangzhou");
        tags.put("os", "Ubuntu16.04");
        // 通過measurementName、dataSource和tags構建TimeseriesKey。
        TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_" + i, tags);
        // 指定timeseriesKey和timeInUs建立timeseriesRow。
        TimeseriesRow row = new TimeseriesRow(timeseriesKey, System.currentTimeMillis() * 1000 + i);
        // 增加資料值(field)。
        row.addField("cpu_usage", ColumnValue.fromDouble(10.0));
        row.addField("cpu_sys", ColumnValue.fromDouble(5.0));
        rows.add(row);
    }
    String tableName = "test_timeseries_table";
    PutTimeseriesDataRequest putTimeseriesDataRequest = new PutTimeseriesDataRequest(tableName);
    putTimeseriesDataRequest.setRows(rows);
    // 一次寫入多行時序資料。
    PutTimeseriesDataResponse putTimeseriesDataResponse = client.putTimeseriesData(putTimeseriesDataRequest);
    // 檢查是否全部成功。
    if (!putTimeseriesDataResponse.isAllSuccess()) {
        for (PutTimeseriesDataResponse.FailedRowResult failedRowResult : putTimeseriesDataResponse.getFailedRows()) {
            System.out.println(failedRowResult.getIndex());
            System.out.println(failedRowResult.getError());
        }
    }
}

常見問題

相關文檔

  • 寫入時序資料後,您可以執行如下操作:

  • 如果要遷移Kafka資料來源的資料到Table Store時序表中,您可以通過Tablestore Sink Connector實現資料移轉。具體操作,請參見使用Tablestore Sink Connector同步Kafka資料

  • 您可以行政時間線中繼資料,例如檢索時間軸、更新時間軸中繼資料屬性、刪除時間軸中繼資料等。具體操作,請參見行政時間線中繼資料

  • 如果要可視化展示時序資料,您可以通過對接Grafana實現。更多資訊,請參見對接Grafana