全部產品
Search
文件中心

Lindorm:資料建模

更新時間:Jul 06, 2024

本文介紹Lindorm時序引擎資料建模的過程。

建立時序資料庫

Lindorm執行個體建立成功後,系統會預設建立default資料庫,將資料預設寫入該資料庫,您無法刪除default資料庫。時序引擎也支援建立多個資料庫,不同的資料庫在儲存層面進行物理隔離,支援設定不同的資料有效期間(TTL)、時間分區和冷熱儲存分界線。建立資料庫的具體操作,請參見CREATE DATABASE

樣本

  • 建立一個名為DB1的資料庫,設定資料為不到期。
    CREATE DATABASE DB1;
  • 建立一個名為DB2的資料庫,設定TTL為60天。
    CREATE DATABASE DB2 WITH (ttl=60);
  • 建立一個名為DB3的資料庫,設定TTL為60天,冷存周期為30天。
    CREATE DATABASE DB3 WITH (cold_boundary=30, ttl=60);

時間分區

時間分區會按照時間維度進行資料分區儲存,儲存底層會將不同時間分區內的資料進行分段儲存,一個時間分區內的資料包含時間軸索引和時序資料。時序引擎支援在資料庫設定時間分區,一般情況下,如果建立周期性時間軸導致了時間軸膨脹,建議您開啟時間分區來避免同一個分區出現大量索引膨脹。時間分區不建議設定的過小,預設時間長度為30天。具體操作,請參見CREATE DATABASE

樣本

  • 建立一個名為DB4的資料庫,設定時間分區為60天。
    CREATE DATABASE DB4 WITH (partition_interval=60);
  • 對於已經建立的資料庫,可以通過修改資料庫參數partition_interval的方式設定時間分區。但是目前需要等到下次分區自動切換時,修改後的時間分區才會生效,對於已經建立的分區無法生效。
    ALTER DATABASE DB4 WITH (partition_interval=60);

冷熱儲存分界線

Lindorm時序引擎支援資料的冷熱階層式存放區,但需要先開通冷儲存,具體操作,請參見開通冷儲存。時序引擎支援在資料庫設定冷熱分層分界線,分界線設定完成後,分界線之前的資料會非同步轉移到更低成本的儲存介質,需要等待資料轉移完成後冷存空間才會發生變化。

重要 已經轉移至冷儲存的資料無法再轉移至熱儲存。

樣本

  • 建立一個名為DB5的資料庫,設定冷熱儲存分界線為30天,即30天之前的資料會被轉移到冷儲存。
    CREATE DATABASE DB5 WITH (cold_boundary=30);
  • 對於已經建立的資料庫,可以通過修改資料庫參數cold_boundary的方式設定冷熱儲存分界線。
    ALTER DATABASE DB5 WITH (cold_boundary=30);

自動建表

Lindorm時序引擎提供三種Schema約束策略,分別是強約束、弱約束、無約束。通過Java Native SDK寫入資料和通過行協議寫入資料時可以指定Schema約束策略,更多資訊,請參見關於時序資料的Schema約束。在弱約束條件下,寫入資料的表或者列不存在時,時序引擎會自動建立,並對已經存在的列進行資料類型校正。

建立時序資料表

建立時序資料表之前,需要先根據業務情境構建資料模型,相關內容,請參見資料模型如何設計時序資料表

時序引擎會建立倒排索引,在查詢資料時,tag用來快速匹配時間軸。除此以外,可以使用PRIMARY KEY來標識分區鍵,通常建議選擇資料來源的唯一標識作為PRIMARY KEY,例如物聯網情境裝置ID。時序引擎會根據分區鍵對資料進行分區,然後路由到不同的後端節點進行儲存,查詢時如果查詢條件命中分區鍵,則直接查詢指定節點。

樣本

  • 建立感應器表。
    CREATE TABLE sensor (
        device_id VARCHAR TAG,
        region VARCHAR TAG,
        time   TIMESTAMP,
        temperature DOUBLE,
        humidity DOUBLE);
  • 建立感應器表,並指定device_id作為分區鍵。
    CREATE TABLE sensor (
        device_id VARCHAR TAG,
        region VARCHAR TAG,
        time   TIMESTAMP,
        temperature DOUBLE,
        humidity DOUBLE,
        PRIMARY KEY(device_id));

單值模型與多值模型

使用OpenTSDB協議或時間序列資料庫TSDB介面單值寫入的資料為單值模型,目前不支援建表和SQL訪問。時序引擎底層資料存放區實現了對多值模型資料的儲存最佳化,建議您將單值模型更改為多值模型,讓資料讀取更加高效。