在時序資料庫中,time series是乙個基礎概念。我們先來看看wiki中關於time series的定義:
time series是一組按照時間發生先後順序進行排列的資料點序列。通常一組時間序列的時間間隔為一恆定值(如1秒,5分鐘,1小時等)。我們可以這樣命名乙個time series:
webserver01.sys.cpu.0.user
這樣從名稱中可以很容易獲知該time series關聯了如下資訊:
web server: webserver01
cpu core: 0
如果我們的查詢可以同時指定web server以及cpu core的話,這種設計則非常適合。
但對於乙個擁有64 cores的web server,如果查詢所有cpu cores的聚合結果的話,可以通過如下的萬用字元來匹配所有相關的time series:
查詢1: webserver01.sys.cpu.*.user
這樣,可以獲取到64個time series,然後聚合結果即可。
查詢2: .sys.cpu..user
關於如上兩種查詢,一種可選的加速方案為:在這64個time series之外,記錄乙個名為」webserver01.sys.cpu.user.all」的time series,這樣可以加速查詢1中所有cpu cores的聚合統計計算。 而關於查詢2,可以記錄乙個名為」webservers.sys.cpu.user.all」的time series來進行加速。
在opentsdb的schema定義中,引入了tag的概念。每乙個time series包含乙個metric名稱,但可能包含包含1組或多組tags資訊(每乙個tag包含乙個tagkey與ta**alue),以前面的」webserver01.sys.cpu.0.user」為例,在opentsdb表示為:
sys.cpu.user host=webserver01, cpu=0
將其拆解後的構成資訊:
sys.cpu.user :
host :
webserver01 :
cpu :
0 :
opentsdb中的乙個time series,由metric name與x個tags(x>=1)唯一決定。
例如:sys.cpu.user host=webserver01
sys.cpu.user host=webserver01, cpu=0
sys.cpu.user host=webserver02, cpu=1
代表了三個不同的time series。
如果查詢時指定web server,指定cpu core的聚合結果,可以簡單表達為:
sum: sys.cpu.user
注:實際查詢時需要指定時間資訊,這裡為了簡單起見,省略了時間資訊,下同。
如果查詢web server上所有的cpu cores的聚合結果,可以這麼表達:
sum: sys.cpu.user
這樣就可以匯聚了webserver01上所有cpu cores所關聯的time series的結果。
再進一步,如果查詢所有的web servers所有cpu cores的聚合結果,可以這麼表達:
sum: sys.cpu.user
與同一metric name相關的所有的time series資訊,都是相鄰儲存的,因此,我們可以輕易實現與此metric相關的快速聚合查詢或結果鑽取。
既然了解了opentsdb的schema由metric與tags構成,我們接下來看看需要注意的乙個問題:
sys.cpu.user host=webserver01,cpu=0 1356998400 1
sys.cpu.user host=webserver01,cpu=1 1356998400 0
sys.cpu.user host=webserver01,cpu=2 1356998400 2
sys.cpu.user host=webserver01,cpu=3 1356998400 0
…sys.cpu.user host=webserver01,cpu=63 1356998400 1
而且我們使用了如下命名的time series來記錄關於這個web server上的所有cpu cores的聚合結果:
sys.cpu.user host=webserver01 1356998400 50
也就是說,表中一共儲存了65條記錄。
關於如下查詢:sum:sys.cpu.user
我們期望的聚合結果應該為50,但實際的查詢結果卻會變為100,這是因為這次查詢共聚合了下面的65條記錄的結果:
sys.cpu.user host=webserver01 1356998400 50
sys.cpu.user host=webserver01,cpu=0 1356998400 1
sys.cpu.user host=webserver01,cpu=1 1356998400 0
sys.cpu.user host=webserver01,cpu=2 1356998400 2
sys.cpu.user host=webserver01,cpu=3 1356998400 0
…sys.cpu.user host=webserver01,cpu=63 1356998400 1
再舉乙個典型的例子來闡述說明一下這裡的查詢行為:
如果查詢條件為」sum:sys.cpu.user 」, 如下這些time series都將會被包含其中:
sys.cpu.user host=webserver01,cpu=0
sys.cpu.user host=webserver01,cpu=0,manufacturer=intel
sys.cpu.userhost=webserver01,foo=bar
sys.cpu.user host=webserver01,cpu=0,datacenter=lax,department=ops
因為這些與」sys.cpu.use」的time series中都包含了tag (儘管有一些time series中包含了更多的tags)。
因此,使用opentsdb時需要注意關於tags定義方面的問題。
SC快速聯結器的特點
在光纖佈線中,在某些情況下需要現場聯結器元件。典型的例子是點對點安裝,現場安裝或維修。現場安裝聯結器 faoc 也稱為快速 快速聯結器,是預埋型光纖連線頭,可在現場安裝和連線。它廣泛用於需要快速連線的地方,提供快速裝配和穩定的效能。施工工具簡單方便,無需電源,操作方便,大大提高了施工效率,降低了ft...
分析 OpenTSDB資料的儲存
下面結合例子看看opentsdb儲存的一些核心概念 1 metric 即平時我們所說的監控項。譬如上面的 cpu 使用率。2 tags 就是一些標籤,在 opentsdb 裡面,tags 由 tagk 和 tagv 組成,即 tagk takv。標籤是用來描述metric的,譬如上面為了標記是伺服器...
快速排序的理解
快速排序是對氣泡排序的一種改進。它的基本思想是通過一趟掃瞄後,使得排序序列的長度能大幅度地減少。通過一趟掃瞄,確保以某個數為基準點的左邊各數都比它小,右邊各數都比它大。然後又用同樣的方法處理它左右兩邊的數,直到基準點的左右只有乙個元素為止。簡單的說就是 找乙個基準數 待排序的任意數,一般都是選定首元...