日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

數據寫入

Lindorm時序引擎支持六種數據寫入方法:Java Native SDK寫入、行協議寫入、標準SQL寫入、時間序列數據庫TSDB接口寫入(多值寫入和單值寫入)、remote write數據寫入、Flink數據寫入。本文介紹數據寫入的六種方法。

Java Native SDK寫入

Java Native SDK適用于Java開發者,具體操作,請參見教程:通過Java Native SDK連接并使用Lindorm時序引擎

Java Native SDK寫入主要有以下優勢:

  • 異步寫入,寫入無需同步等待。

  • 數據自動攢批,簡化開發流程,提高寫入效率。

  • 連接池管理,底層自動管理連接復用,無創建大量連接的風險。

  • 出錯自動重試,無需業務層重試。

  • 使用自定義傳輸編碼協議,實現高效的數據編解碼。

  • 線程安全,業務層無需考慮連接的線程安全問題。

  • 支持強、弱、無約束的三種Schema約束策略。

示例

// 連接地址
String url = "http://ld-bp17j28j2y7pm****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242";
// 創建客戶端,LindormTSDBClient線程安全,可以重復使用,無需頻繁創建和銷毀
ClientOptions options = ClientOptions.newBuilder(url).build();
LindormTSDBClient lindormTSDBClient = LindormTSDBFactory.connect(options);

// 創建數據庫和表
lindormTSDBClient.execute("CREATE DATABASE demo");
lindormTSDBClient.execute("demo","CREATE TABLE sensor (device_id VARCHAR TAG,region VARCHAR TAG,time BIGINT,temperature DOUBLE,humidity DOUBLE,PRIMARY KEY(device_id))");

// 寫入數據
int numRecords = 10;
List<Record> records = new ArrayList<>(numRecords);
long currentTime = System.currentTimeMillis();
for (int i = 0; i < numRecords; i++) {
    Record record = Record
        .table("sensor")
        .time(currentTime + i * 1000)
        .tag("device_id", "F07A1260")
        .tag("region", "north-cn")
        .addField("temperature", 12.1 + i)
        .addField("humidity", 45.0 + i)
        .build();
    records.add(record);
}
CompletableFuture<WriteResult> future = lindormTSDBClient.write("demo", records);
// 處理異步寫入結果
future.whenComplete((r, ex) -> {
    // 處理寫入失敗
    if (ex != null) {
        System.out.println("Failed to write.");
        if (ex instanceof LindormTSDBException) {
            LindormTSDBException e = (LindormTSDBException) ex;
            System.out.println("Caught an LindormTSDBException, which means your request made it to Lindorm TSDB, "
                               + "but was rejected with an error response for some reason.");
            System.out.println("Error Code: " + e.getCode());
            System.out.println("SQL State:  " + e.getSqlstate());
            System.out.println("Error Message: " + e.getMessage());
        }  else {
            ex.printStackTrace();
        }
    } else  {
        System.out.println("Write successfully.");
    }
});
// 這里作為示例, 簡單同步處理寫入結果
System.out.println(future.join());
說明

連接地址的獲取方法,請參見查看連接地址

行協議寫入

Lindorm時序引擎支持通過InfluxDB?行協議寫入數據。建議非Java應用通過行協議寫入數據。行協議寫入支持設置Schema約束策略,默認設置為弱約束。行協議寫入的具體操作,請參見行協議寫入

重要

通過行協議寫入時,不同時間精度的數據最終都會轉化成毫秒精度存儲。比毫秒精度更高的數據,寫入時會丟失精度。

示例

curl -X POST \
'http://ld-bp1489gr5t*****-proxy-tsdb.lindorm.rds.aliyuncs.com:8242/api/v2/write?precision=ms&db=default' \
-d '
sensor7,device_id=F07A1260,region=north-cn temperature=12.1,humidity=45 1619076780000
sensor7,device_id=F07A1260,region=north-cn temperature=13.2,humidity=47 1619076790000
sensor7,device_id=F07A1260,region=north-cn temperature=10.6,humidity=46 1619076800000
sensor7,device_id=F07A1260,region=north-cn temperature=18.1,humidity=44 1619076780000
sensor7,device_id=F07A1260,region=north-cn temperature=19.7,humidity=44 1619076790000
'

標準SQL寫入

下表為標準SQL寫入支持的兩種寫入方法。

寫入方式

適用場景

描述

操作文檔

JDBC Driver

Java語言的應用開發

使用JDBC寫入數據時,需要自己管理連接池或使用Druid管理連接池。

Java JDBC Driver開發手冊

HTTP SQL API

非Java語言的應用開發

時序引擎支持基于HTTP協議的API接口實現SQL交互。

HTTP API SQL接口開發手冊

時間序列數據庫TSDB的接口寫入

對于時間序列數據庫TSDB的遷移用戶,時序引擎支持使用時間序列數據庫TSDB兼容的接口寫入數據。下表為時間序列數據庫TSDB接口寫入的兩種方法。

寫入方法

描述

操作文檔

多值寫入

多值寫入使用/api/mput接口寫入數據。Schema約束策略默認為無約束,即不會創建時序數據表,也不支持SQL查詢。如果需要使用SQL查詢數據,您可以在數據寫入前或寫入后手動建表,也可以將數據庫約束策略設置為弱約束,開啟自動建表。

說明

修改Schema約束策略,請參見數據寫入方式與Schema約束的選擇

單值寫入

單值寫入同時也是兼容OpenTSDB的寫入,Schema約束策略只能為無約束,即不會自動創建時序數據表、也不支持直接使用SQL查詢數據。不再推薦使用。

使用remote write數據寫入

時序引擎可以作為Prometheus的遠端存儲,在數據寫入后,可以使用PromQL來查詢數據。具體操作,請參見通過Prometheus訪問時序引擎

使用Flink數據寫入

時序引擎支持通過集成Native SDK的Sink插件寫入數據。具體操作,請參見使用Flink寫入時序引擎