溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Apache IoTDB數(shù)據(jù)模型怎么創(chuàng)建

發(fā)布時(shí)間:2022-01-06 17:13:56 來源:億速云 閱讀:152 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容介紹了“Apache IoTDB數(shù)據(jù)模型怎么創(chuàng)建”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

什么是時(shí)序數(shù)據(jù)?

物聯(lián)網(wǎng)誕生于1999年,在其理念和技術(shù)的不斷革新下,無處不在的設(shè)備和設(shè)施正在被越來越多的通過網(wǎng)絡(luò)連接起來,并不斷向云端發(fā)送實(shí)況數(shù)據(jù)。

以國家級氣象觀測站為例,全國有近6萬個(gè)氣象觀測站,每個(gè)氣象觀測站有70種氣象物理量需要采集。某市地鐵每列列車擁有3200個(gè)指標(biāo)需要測量,全市列車數(shù)達(dá)300列。服務(wù)器運(yùn)維監(jiān)控中,一臺(tái)服務(wù)器需要同時(shí)監(jiān)測IOPS、CPU、網(wǎng)絡(luò)等十余項(xiàng)指標(biāo)。這些例子中展現(xiàn)出兩個(gè)概念:設(shè)備與度量指標(biāo)。所謂度量指標(biāo)(又被稱為工況、測點(diǎn))是指用戶關(guān)心的能反映目標(biāo)的某種狀況的數(shù)據(jù)項(xiàng),例如CPU利用率、溫度、濕度等等。設(shè)備是指一個(gè)擁有一系列度量指標(biāo)的實(shí)體,例如一臺(tái)服務(wù)器、一個(gè)進(jìn)程、一列車、一個(gè)氣象觀測站等等。一個(gè)設(shè)備的一個(gè)度量指標(biāo)形成了一條時(shí)序數(shù)據(jù)的唯一標(biāo)識。

隨著時(shí)間推移,這條時(shí)序數(shù)據(jù)會(huì)產(chǎn)生一系列(時(shí)間戳,值)的二元組數(shù)據(jù)點(diǎn),構(gòu)成了時(shí)間序列數(shù)據(jù)集。因此,我們定義一條時(shí)間序列是由一個(gè)時(shí)間序列標(biāo)識(設(shè)備和度量指標(biāo)),一系列時(shí)間戳和數(shù)據(jù)值對組成的無限集。一個(gè)時(shí)間序列數(shù)據(jù)庫將管理百萬甚至千萬條這樣的時(shí)間序列。

IoTDB 數(shù)據(jù)模型及手動(dòng)創(chuàng)建方式

IoTDB 的元數(shù)據(jù)管理采用目錄樹的結(jié)構(gòu),不同層級之間用 . 分割。根節(jié)點(diǎn)默認(rèn)為 root ,除此之外主要有三個(gè)概念。存儲(chǔ)組、設(shè)備、測點(diǎn)。

Apache IoTDB數(shù)據(jù)模型怎么創(chuàng)建

手動(dòng)創(chuàng)建存儲(chǔ)組:

set storage group to root.FU01

手動(dòng)創(chuàng)建時(shí)間序列:

create timeseries root.FU01.deviceType1.AZQ01.Temperature with datatype=FLOAT, encoding=GORILLA, compression=SNAPPY

設(shè)備不需要?jiǎng)?chuàng)建,當(dāng)創(chuàng)建時(shí)間序列時(shí)會(huì)默認(rèn)將倒數(shù)第二層當(dāng)做設(shè)備。以上述時(shí)間序列為例,設(shè)備 ID 會(huì)被設(shè)置為root.FU01.deviceType1.AZQ01 。一個(gè)設(shè)備一個(gè)時(shí)間戳的多個(gè)測點(diǎn)值,最好一次同時(shí)寫入,盡量避免亂序數(shù)據(jù)產(chǎn)生。

當(dāng)創(chuàng)建足夠多的時(shí)間序列后,元數(shù)據(jù)看起來就是下面這樣一顆樹了:

Apache IoTDB數(shù)據(jù)模型怎么創(chuàng)建

數(shù)據(jù)類型目前支持 6 種

BOOLEAN、INT32、INT64、FLOAT、DOUBLE、TEXT

編碼方式主要有 4 種

TS_2DIFF (時(shí)間列的默認(rèn)編碼方式):適用 INT32、INT64RLE:適用 INT32、INT64、FLOAT、DOUBLE(對于 FLOAT 和 DOUBLE 是有損壓縮,默認(rèn)保留2位小數(shù),可在配置文件中修改 float_precision)GORILLA:適用 FLOAT、DOUBLEPLAIN:全搭

壓縮方式:

UNCOMPRESSED、SNAPPY(默認(rèn))

推薦建模方式

存儲(chǔ)組:推薦10-50個(gè)左右,每個(gè)存儲(chǔ)組是一個(gè)獨(dú)立的存儲(chǔ)引擎,增加存儲(chǔ)組可增加寫入并行度。

設(shè)備:推薦10萬以下

總序列個(gè)數(shù):推薦1000萬以下

正常負(fù)載下此建模方式?jīng)]問題,如果系統(tǒng)提示系統(tǒng)負(fù)載過高,可將 enable_parameter_adapter 設(shè)置為 false,需要手動(dòng)配置參數(shù),防止爆內(nèi)存,簡單的規(guī)則為:

memtable_size_threshold=tsfile_size_threshold

= IoTDB分配內(nèi)存/2/存儲(chǔ)組個(gè)數(shù)/4 (有亂序數(shù)據(jù))

= IoTDB分配內(nèi)存/2/存儲(chǔ)組個(gè)數(shù)/2 (無亂序數(shù)據(jù)) 

IoTDB 分配內(nèi)存在 conf/iotdb-env.sh 中設(shè)置 MAX_HEAP_SIZE。

配置文件在 conf/iotdb-engine.properties。

推薦負(fù)載按這個(gè)調(diào)大多沒問題,負(fù)載再高可以聯(lián)系我們,這個(gè)手動(dòng)調(diào)整參數(shù)在 0.11 版本就會(huì)去掉,解放生產(chǎn)力!

一個(gè)方法判斷有無亂序:只要每個(gè)設(shè)備寫入時(shí)間戳都是遞增的,就沒亂序數(shù)據(jù),否則都可能產(chǎn)生亂序數(shù)據(jù)。

舉個(gè)例子:設(shè)備 root.turbine.d1 有三個(gè)測點(diǎn) s1, s2, s3

# 無亂序數(shù)據(jù)insert into root.turbine.d1(timestamp,s1,s2,s3) values(1,1,2,3);insert into root.turbine.d1(timestamp,s1,s2,s3) values(2,1,2,3);# 時(shí)間戳先寫 2,再寫 1,可能有亂序數(shù)據(jù)insert into root.turbine.d1(timestamp,s1,s2,s3) values(2,1,2,3);insert into root.turbine.d1(timestamp,s1,s2,s3) values(1,1,2,3);# 時(shí)間戳先寫 1,再寫 1,雖然是不同測點(diǎn),但還屬于一個(gè)設(shè)備,可能有亂序數(shù)據(jù)insert into root.turbine.d1(timestamp,s1,s2) values(1,1,2);insert into root.turbine.d1(timestamp,s3) values(1,3);

自動(dòng)創(chuàng)建元數(shù)據(jù)模式

除了手動(dòng)創(chuàng)建元數(shù)據(jù)的方式,還支持自動(dòng)創(chuàng)建元數(shù)據(jù),自動(dòng)創(chuàng)建元數(shù)據(jù)是在數(shù)據(jù)寫入的過程進(jìn)行的。主要針對提前不知道序列總數(shù),實(shí)時(shí)消費(fèi)消息隊(duì)列進(jìn)行寫入的場景,代碼中就不需要每條數(shù)據(jù)都創(chuàng)建序列了。

當(dāng)我們對一條時(shí)間序列寫入數(shù)據(jù)時(shí),會(huì)首先檢查其存儲(chǔ)組是否存在,如果不存在會(huì)自動(dòng)創(chuàng)建。我們把 root 定義為第 0 層,存儲(chǔ)組默認(rèn)是第一層,也就是 root 下的一層,可在配置文件中修改默認(rèn)創(chuàng)建的層級 default_storage_group_level。

自動(dòng)創(chuàng)建的數(shù)據(jù)類型是根據(jù)寫入值的類型自動(dòng)推斷出來的。假如傳入的是字符串格式的數(shù)據(jù),即用 JDBC 的 insert 語句寫入,或者 Session 中值類型為 String 的 insertRecord(s) 接口寫入,會(huì)根據(jù)值的格式來判斷,主要有四種格式的字符串,以及默認(rèn)類型:

不帶 . 的整數(shù):如 123     =>  FLOAT帶 . 的浮點(diǎn)數(shù):如 12.34   =>  FLOAT布爾型:true,false      =>  BOOLEAN其他類型:abc,124sa     =>  TEXT

對于前 3 種格式的字符串的默認(rèn)類型,都可以在配置文件中配置,(0.10.0 版本,目前的 master 分支, boolean_string_infer_type 參數(shù)附近)

簡單試用

腳本默認(rèn)前臺(tái),需要手動(dòng)后臺(tái)啟動(dòng),

nohup ./sbin/start-server.sh >/dev/null 2>&1 &

接下來可以啟動(dòng) Cli 命令行:

./sbin/start-client.sh -h 127.0.0.1 -p 6667 -u root -pw rootor./sbin/start-client.sh  (默認(rèn)用root連接本機(jī))

在 0.10.0 版本中,即將改名為 start-cli.sh。

“Apache IoTDB數(shù)據(jù)模型怎么創(chuàng)建”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI