全部產品
Search
文件中心

Time Series Database:使用樣本

更新時間:Jan 27, 2025

本段介紹如何使用 SDK 寫入資料。操作前提是您已建立出 TSDB 對象。

建議: 使用 TSDB SDK 之前,建議您先閱讀名詞解釋和《HTTP API 參考》對 TSDB 的基本概念和 API 的使用說明進行瞭解。

Point 類為 TSDB 的時間點類。您可以使用 TSDB 對象的 put 方法或 putSync 方法將 Point 資料寫入 TSDB 資料庫。

範例程式碼

每秒寫入一個 Point(時間點)資料:

package com.aliyun.hitsdb.client.example;

import java.io.IOException;

import com.aliyun.hitsdb.client.TSDB;
import com.aliyun.hitsdb.client.TSDBClientFactory;
import com.aliyun.hitsdb.client.TSDBConfig;
import com.aliyun.hitsdb.client.value.request.Point;

public class TestWrite {
    public static void main(String[] args) throws InterruptedException, IOException {
        // 建立 TSDB 對象
        TSDBConfig config = TSDBConfig.address("example.hitsdb.com", 8242).config();
        TSDB tsdb = TSDBClientFactory.connect(config);

        // 構造資料並寫入 TSDB
        for (int i = 0; i < 3600; i++) {
            Point point = Point.metric("test").tag("V", "1.0").value(System.currentTimeMillis(), 123.4567).build();
            Thread.sleep(1000);  // 1秒提交1次
            // 作為範例程式碼, 此處調用的是同步寫入介面。
            // 但是如果是生產業務, 建議使用非同步寫入介面(建議調用非同步介面時註冊回呼函數)
            tsdb.putSync(point);
        }

        // 安全關閉用戶端,以防資料丟失。
        System.out.println("關閉");
        tsdb.close();
    }
}

查詢資料

本段介紹如何使用 SDK 讀取資料。操作前提是您已建立出 TSDB 對象。

Query 類為 TSDB 的查詢類,即於查詢條件。查詢資料前需要先構造出查詢條件。您可以使用 TSDB 對象的 query 方法查詢符合查詢條件的資料。

範例程式碼

查詢一小時的資料:

package com.aliyun.hitsdb.client.example;

import java.io.IOException;
import java.util.List;

import com.aliyun.hitsdb.client.TSDB;
import com.aliyun.hitsdb.client.TSDBClientFactory;
import com.aliyun.hitsdb.client.TSDBConfig;
import com.aliyun.hitsdb.client.value.request.Query;
import com.aliyun.hitsdb.client.value.request.SubQuery;
import com.aliyun.hitsdb.client.value.response.QueryResult;
import com.aliyun.hitsdb.client.value.type.Aggregator;

public class TestRead {
    public static void main(String[] args) throws IOException {
        // 建立 TSDB 對象
        TSDBConfig config = TSDBConfig.address("example.hitsdb.com", 8242).config();
        TSDB tsdb = TSDBClientFactory.connect(config);

        // 構造查詢條件並查詢資料。
        long now = System.currentTimeMillis();

        // 查詢一小時的資料
        Query query = Query.timeRange(now - 3600 * 1000, now)
                .sub(SubQuery.metric("test").aggregator(Aggregator.NONE).tag("V", "1.0").build()).build();

        // 查詢資料
        List<QueryResult> result = tsdb.query(query);

        // 列印輸出
        System.out.println(result);

        // 安全關閉用戶端,以防資料丟失。
        tsdb.close();
    }
}