表格存儲提供了PutTimeseriesData接口用于批量寫入時序數據。時序數據由時間線元數據和時序表數據組成。如果未預先新建時間線元數據,當寫入時序數據時,系統會自動提取該時間線的元數據信息并自動構建索引。
在表格存儲的時序模型中采用一張二維的時序表來存儲時序數據。每行代表一個時間線在某個時間點的數據,該行的主鍵部分為時間線標識和時間戳,該行的數據列部分為該時間線在該時間戳下的數據點,可以有多個數據列。更多信息,請參見時序模型介紹。
注意事項
在寫入時序數據時,請合理評估時序表的設計并關注時間線的總條數。如果表中存在大量的短時間線(即一條時間線下僅有一條或幾條時序數據),則您可能會看到時序數據的元數據存儲量偏大,因為目前表格存儲會為每條時間線的元數據構建索引,按照每條時間線4 KB的大小計算元數據的總存儲大小。
如果要刪除時間線元數據,您可以使用時間線元數據生命周期實現由系統自動清理時間線元數據或者調用DeleteTimeseriesMeta接口進行手動刪除。時間線的標識在SDK示例中為TimeseriesKey。
關于時序數據計費的更多信息,請參見時序模型計量計費。
功能概述
調用PutTimeseriesData接口批量寫入時序數據,一次PutTimeseriesData操作支持寫入多行時序數據。如果該行數據已存在,則先刪除原行數據,再寫入新行數據。
寫入時序數據時,您必須指定時間線標識和時間線數據。如果未預先新建元數據,則系統會根據寫入的數據自動提取元數據。
使用方式
您可以使用控制臺、命令行工具或者SDK進行數據寫入操作。
通過不同使用方式進行操作時支持的功能存在差異,請以實際為準。
寫入時序數據前,您需要完成如下準備工作。
已完成時序表創建。具體操作,請參見時序表操作。
使用SDK方式進行操作時,還需要完成初始化Client。具體操作,請參見初始化OTSClient。
使用命令行工具方式進行操作前,還需要完成下載并啟動命令行工具,然后配置接入實例信息。具體操作,請參見下載命令行工具和啟動并配置接入實例。
使用控制臺
您可以使用控制臺預先定義時間線以及將時序數據寫入時序表。
進入實例管理頁面。
登錄表格存儲控制臺。
在頁面上方,選擇資源組和地域。
在概覽頁面,單擊實例名稱或者單擊實例操作的實例管理。
在實例詳情頁簽,單擊時序表列表頁簽。
在時序表列表頁簽,單擊時序表名稱后選擇數據管理頁簽或在時序表操作列單擊數據管理。
(可選)新建時間線。
在數據管理頁簽,單擊新增時間線。
在新增時間線對話框,新增時間線元數據。
詳細參數說明請參見下表。
參數
描述
度量名稱
時間線數據所度量的物理量或者監控指標的名稱,例如cpu或net,用于表示該時間線記錄的是cpu或者網絡使用率等。
數據源
產生時間線的數據源標識,可以為空。
標簽
時間線的標簽信息。您可以自定義多個字符串類型的key-value對。
屬性
時間線的屬性列,用于記錄該時間線的一些屬性信息。
單擊確定。
插入數據。
單擊插入數據。
在插入數據對話框,設置時間和屬性列。
單擊確定。
使用命令行工具
執行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 SDK和Go 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());
}
}
}
常見問題
相關文檔
如果要進行批量寫入時序數據、一次寫入多個表、統計寫入狀態等操作,您可以使用時序Writer實現數據寫入。具體操作,請參見使用時序Writer寫入時序數據。
寫入時序數據后,您可以執行如下操作:
查詢時序數據。具體操作,請參見查詢時序數據。
為時序表創建映射關系后,使用SQL查詢與分析時序數據。具體操作,請參見使用SQL查詢時序數據。
如果要遷移MySQL數據源的數據到表格存儲時序表中,您可以通過DataX工具實現數據遷移。具體操作,請參見使用DataX同步MySQL數據。
如果要遷移Kafka數據源的數據到表格存儲時序表中,您可以通過Tablestore Sink Connector實現數據遷移。具體操作,請參見使用Tablestore Sink Connector同步Kafka數據。
說明在物聯網存儲場景中,您可以將Kafka數據、EMQX數據、物聯網平臺數據存儲到表格存儲時序表中。更多信息,請參見時序數據接入。
通過Flink計算與分析數據后,您可以使用Tablestore時序表存儲輸出結果。更多信息,請參見使用時序表存儲Flink輸出結果。
在某些場景下,如果希望將時序表中的時序數據遷移到另一個時序表中,您可以DataWorks數據集成服務實現。更多信息,請參見將表格存儲時序表中數據同步到另一個時序表。
您可以管理時間線元數據,例如檢索時間線、更新時間線元數據屬性、刪除時間線元數據等。具體操作,請參見管理時間線元數據。
如果要低成本存儲數據以及快速查詢與分析數據,您可以為時序表創建分析存儲。更多信息,請參見時序分析存儲概述。
如果要可視化展示時序數據,您可以通過對接Grafana實現。更多信息,請參見對接Grafana。