專業術語
本文檔主要介紹了時序數據庫 InfluxDB?版的常見術語。
aggregation(聚合)
InfluxQL函數,能夠返回一組數據點的聚合結果。想要獲得現有的和即將支持的聚合函數的完整列表,請查看文檔InfluxQL函數。
相關術語:function,selector,transformation。
batch(批量)
符合行協議(line protocol)格式的、多個用換行符(0x0A
)隔開的數據點(point)的集合。使用一個HTTP請求就可以將一批數據點寫入到數據庫中,大幅減少了HTTP的開銷,使得通過HTTP API寫入數據的性能更高。TSDB For InfluxDB?建議batch的大小是5,000~10,000個數據點,但在不同的應用場景下,更小或更大的batch可能會提供更好的性能。
相關術語:line protocol,point。
continuous query(連續查詢,簡稱CQ)
一個InfluxQL查詢,在數據庫中自動地、周期性地運行。連續查詢要求在SELECT
子句中有一個函數(function),并且必須包含一個GROUP BY time()
子句。
相關術語:function。
database(數據庫)
用戶(user)、保留策略(retention policy)、連續查詢(continuous query)和時序數據的邏輯容器。
相關術語:continuous query,retention policy,user。
duration(持續時間)
保留策略(retention policy)的一個屬性,決定數據在TSDB For InfluxDB?中保留多長時間。早于duration的數據將自動從數據庫中刪除。
相關術語:retention policy。
field
TSDB For InfluxDB?數據結構中記錄元數據和實際數據的key-value對。field是TSDB For InfluxDB?數據結構中必須要有的一部分,并且不會被建索引。如果將field value作為查詢的過濾條件的話,那么就必須遍歷所選時間范圍內的所有數據點,所以,這種方式相對于以tag作為過濾條件的查詢,其性能會差很多。
查詢提示:跟field相比,數據庫會對tag建索引。
相關術語:field key,field set,field value,tag。
field key
構成field的key-value對里面,關于key的部分。field key是字符串并且存的是元數據(metadata)。
相關術語:field,field set,field value,tag key。
field set
一個數據點(point)上field key和field value的集合。
相關術語:field,field key,field value,point。
field value
構成field的key-value對里面,關于value的部分。field value是實際數據,可以是字符串、浮點數、整數或者布爾值。一個field value始終和一個時間戳(timestamp)相關聯。
數據庫不會對field value建索引,如果將field value作為查詢過濾條件的話,就必須遍歷所選時間范圍內的所有數據點,所以,這種方式的查詢性能并不好。
查詢提示:跟field value相比,數據庫會對tag value建索引。
相關術語:field,field key,field set,tag value,timestamp。
function(函數)
InfluxQL中的聚合(aggregation)、選擇(selector)和轉換(transformation)函數。想要獲得InfluxQL函數的完整列表,請查看文檔InfluxQL函數。
相關術語:aggregation,selector,transformation。
identifier(標識符)
關于連續查詢(continuous query)的名字、數據庫(database)名、field key、measurement的名字、保留策略(retention policy)的名字、tag key和用戶(user)名的標記。
相關術語:database,field key,measurement,retention policy,tag key,user。
line protocol(行協議)
寫入TSDB For InfluxDB?的數據點的文本格式。
measurement(測量)
TSDB For InfluxDB?數據結構中的一部分,描述了存儲在相關field中的數據的含義。measurement的值是字符串。
相關術語:field,series。
metastore
包含了系統狀態的內部信息。metastore包括用戶(user)信息、數據庫(database)、保留策略(retention policy)、shard元數據和連續查詢(continuous query)。
相關術語:database,retention policy,user。
node(節點)
一個獨立的TSDB For InfluxDB?實例。
相關術語:server。
now(當前時間)
本地服務器當前的納秒級時間戳(timestamp)。
point(數據點)
TSDB For InfluxDB?數據結構中的一部分,由序列(series)中包含的field組成。每個數據點由它的序列和時間戳(timestamp)唯一標識。
您不能在同一序列存儲多個有相同時間戳的數據點。相反,當您向序列中寫入一個新的數據點,并且該數據點的時間戳跟序列中某個數據點的時間戳相同,那么在該時間戳下的數據點的field set會變為舊field set和新field set的并集,以后訪問這個數據點時,返回的都是修改后新的field set。
相關術語:field set,series,timestamp。
points per second
這是一個現在已經棄用的術語,原來表示數據寫入TSDB For InfluxDB?的速率,因為TSDB For InfluxDB?的數據模型(schema)允許甚至鼓勵每個數據點記錄多個測量值(metric),所以這個概念有歧義。
寫入速率現在通常是按values per second這個指標來表示,這樣更精確。
相關術語:point,schema,values per second。
query(查詢)
從TSDB For InfluxDB?中獲取數據的操作。可查看文檔數據探索概覽、Schema探索和數據庫管理獲得更多關于query的介紹。
retention policy(保留策略,簡稱RP)
TSDB For InfluxDB?數據結構中的一部分,描述了TSDB For InfluxDB?保存數據的時間(duration)以及shard group覆蓋的時間范圍(shard group duration)。在每個數據庫(database)里面,RP是唯一的,RP、measurement和tag set定義了一個序列(series)。
在創建數據庫的時候,TSDB For InfluxDB?會自動創建名為autogen
的RP。
相關術語:duration,measurement,series,shard duration,tag set。
schema(模式)
描述了數據在TSDB For InfluxDB?中是如何組織的。TSDB For InfluxDB? schema的基礎是數據庫(database)、保留策略(retention policy)、序列(series)、measurement、tag key、tag value和field key。
相關術語:database,field key,measurement,retention policy,series,tag key,tag value。
selector(選擇)
一個InfluxQL函數,從特定范圍的數據點中返回一個點。想要獲得現有的和即將支持的selector函數的完整列表,請查看文檔InfluxQL函數。
相關術語:aggregation,function,transformation。
series(序列)
TSDB For InfluxDB?數據結構中,有相同measurement、tag set和保留策略(retention policy)的數據集合。
field set不會標識序列的一部分。
相關術語:field set,measurement,retention policy,tag set。
series cardinality(序列基數)
在一個TSDB For InfluxDB?實例中,不同數據庫(database)、measurement、tag set和field key的組合的數量。
例如,假設一個TSDB For InfluxDB?實例有一個數據庫和一個measurement,這個measurement有兩個tag key:email
和status
。如果有三個不同的email
,并且每個email
地址關聯兩個不同的status
,那么這個measurement的序列基數則為6(3 * 2 = 6):
status | |
username@alibaba-inc.com | start |
username@alibaba-inc.com | finish |
username@alibaba-inc.com | start |
username@alibaba-inc.com | finish |
username@alibaba-inc.com | start |
username@alibaba-inc.com | finish |
請注意,在某些情況下,由于存在從屬tag,所以簡單地將這些數據相乘可能會高估了序列基數。從屬tag指的是被另一個tag限定它的范圍的tag,它的存在不會使序列基數變大。如果我們在上面的例子中增加一個tag:firstname
,序列基數不會變成18(3 2 3 = 18),它將保持不變,依舊是6,因為firstname
已經被email
覆蓋了:
status | firstname | |
username@alibaba-inc.com | start | amy |
username@alibaba-inc.com | finish | amy |
username@alibaba-inc.com | start | jeff |
username@alibaba-inc.com | finish | jeff |
username@alibaba-inc.com | start | john |
username@alibaba-inc.com | finish | john |
可查看文檔InfluxQL參考,了解如何通過InfluxQL語句來查詢序列基數。
相關術語:field key,measurement,tag key,tag set。
server(服務器)
一個運行TSDB For InfluxDB?的虛擬機或物理機。
相關術語:node。
shard
一個shard包含真實數據和壓縮數據,shard由磁盤中的TSM文件表示。每個shard只屬于一個shard group,一個shard group可以有多個shard。每個shard包含一組特定的序列(series)。一個給定的shard group中的一個序列中的所有數據點都存儲在磁盤中相同的shard(TSM文件)。
相關術語:series,shard duration,shard group,tsm。
shard duration
shard duration決定了每個shard group跨越多長時間。具體時間間隔由保留策略(retention policy)中的SHARD DURATION
決定。
例如,如果保留策略的SHARD DURATION
設為1w
,那么每個shard group將跨越一個星期,并包含時間戳在這個星期內的所有數據點。
相關術語:database,retention policy,series,shard,shard group。
shard group
shard group是shard的邏輯容器,按時間和保存策略組織。每個包含數據的保留策略至少包含一個關聯的shard group。一個shard group里的所有shard包含了該shard group覆蓋的時間間隔內的數據。每個shard跨越的時間間隔就是shard duration。
相關術語:database,retention policy,series,shard,shard duration。
tag
TSDB For InfluxDB?數據結構中記錄元數據的key-value對,tag在TSDB For InfluxDB?數據結構中是可選的。但是,用它們來存儲經常被查詢的元數據是非常有用的;因為數據庫會對tag建索引,所以tag上的查詢性能很高。
查詢提示:跟tag相比,數據庫不會對field建索引。
相關術語:field,tag key,tag set,tag value。
tag key
構成tag的key-value對里面,關于key的部分。tag key是字符串并且存的是元數據。因為數據庫會對tag key建索引,所以tag key上的查詢性能很高。
查詢提示:跟tag key相比,數據庫不會對field key建索引。
相關術語:field key,tag,tag set,tag value。
tag set
一個數據點上tag key和tag value的集合。
相關術語:point,series,tag,tag key,tag value。
tag value
構成tag的key-value對里面,關于value的部分。tag value是字符串并且存的是元數據。因為數據庫會對tag value建索引,所以tag value上的查詢性能很高。
相關術語:tag,tag key,tag set。
timestamp
與一個數據點(point)關聯的日期和時間。TSDB For InfluxDB?中所有時間都是UTC。
關于如何指定數據寫入的時間,可查看寫協議。關于如何指定查詢數據的時間,可查看文檔數據探索概覽。
相關術語:point。
transformation
一個InfluxQL函數,從特定數據點計算后返回一個值或一組值,但不是返回這些數據點的聚合值。想要獲得現有的和即將支持的聚合函數的完整列表,請查看文檔InfluxQL函數。
相關術語:aggregation,function,selector。
tsm(Time Structured Merge tree)
TSDB For InfluxDB?的專用數據存儲格式。跟現有的B+樹或LSM樹實現相比,TSM有更好的壓縮和更高的寫入和讀取吞吐量。
user(用戶)
TSDB For InfluxDB?中有兩種類型的用戶:
admin用戶對所有數據庫都有讀寫權限,并且有管理查詢和管理用戶的全部權限。
非admin用戶有針對數據庫的只讀、只寫、或者讀寫的權限。
values per second
數據寫入到TSDB For InfluxDB?的速率,這是測量寫入速率的首選方法。寫入速度通常以values per second表示。
要計算values per second,請將每秒寫入的數據點數乘以每個點存儲的value的個數。例如,每秒寫入10次包含5,000個點的batch,每個點有4個field,那么values per second=每個點有4個field,每個batch有5,000個點,每秒寫入10次=每秒寫入200,000個值。
相關術語:batch,field,point,points per second。
wal(Write Ahead Log)
最近寫入數據點的臨時緩存。為了降低訪問永久存儲文件的頻率,TSDB For InfluxDB?在WAL中緩存最近寫入的數據點,直到數據總量達到閾值或者數據寫入的時間超過一定的期限,這時候TSDB For InfluxDB?會將WAL中的這些數據flush到可以保存更長時間數據的存儲空間。使用WAL,可以有效地將寫入的數據批量寫進TSM。
可以查詢WAL中的數據點,并且系統重啟后,這些數據不會丟失。在TSDB For InfluxDB?進程啟動時,必須在系統接受新的寫入請求前,將WAL中的所有數據點flush到存儲空間。
相關術語:tsm。