TDengine的實踐場景

xuexiaogang發表於2022-11-10

    前幾日我們在討論一個物聯網場景時候,負責該專案的博士提出了一個他的想法--將各個採集的資料關聯用以發現問題。我覺得這個思路不錯,至於能不能做呢?

我下來模擬了一下。我們這裡使用的是Tdengine,我這裡有d1表和d2表兩個表。d1和d2是兩個物聯網的檢測器對應的資料表。 那麼我按照車牌號碼去關聯,資料庫提示我不支援。

TDengine的實踐場景

這個結果其實也在我意料之中,畢竟時序資料庫不屬於RDBMS的範疇,應該算在NoSQL的範疇。不能關聯也不怪它。

那麼這個要怎麼解決?我想起官方介紹過一種叫做超級表。摸索嘗試用用。

taos> create table t (ts TIMESTAMP,x int,y int) tags (id int,no nchar(100));   -建立超級表  注意這裡的tags,我意思是採集裝置的id和車牌號碼。


taos> CREATE TABLE t1 USING t TAGS ('1', '滬A12345');  --建立子表1,這裡using用到了超級表的tags

Query OK, 0 of 0 row(s) in database (0.006030s)


taos> CREATE TABLE t2 USING t TAGS ('2', '滬A54321');  --建立子表2,這裡using用到了超級表的tags

Query OK, 0 of 0 row(s) in database (0.017275s)

TDengine的實踐場景

看一下表,只看到t1和t2, 但是注意看t1和t2最後一列其實顯示了他們的父表。

給兩個子表分別寫一條資料。

TDengine的實踐場景

直接查父表(超級表)就可以了。其實相當於RDBMS中執行了union all。

TDengine的實踐場景

最後再執行帶where條件的SQL,其實就等於給兩個表做了關聯。

TDengine的實踐場景

所以從上述可以看到,時序資料庫不能直接做關聯(不支援),需要透過設計完成(而這個要怎麼設定tags,以及設定多少個tags,這在上線之初要定義好,想好規劃好)。

這樣就可以完成物聯網大量資料的關聯分析。

我第一次聽到這個產品時候,我覺得他說出了心聲。物聯網的資料是海量的,如果用左邊這十幾種技術棧(成本先不說),累也要累死了。而時序資料庫基本是用來解決這個問題的。所以有時候我聽到說要把時序資料庫的資料拿到hadoop去分析,簡直是搞笑。但凡懂這些技術的人都不會做出這樣的方案。

TDengine的實踐場景

今天意外還發現一個問題,同一個時間戳的資料是寫不進來的。

TDengine的實踐場景



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2922836/,如需轉載,請註明出處,否則將追究法律責任。

相關文章