使用influxdb的重要觀念
(a) 可以把 influxdb 類比成一般的資料庫
influxdb
|
一般的DB
|
---|---|
measurement |
table
|
time | row |
fields, tags | column |
field 和tags的差異: field是required, tag是optional。field沒有建立index。tag會自動建立index。
如何決定,某一個值應該使用field或是tag來儲存?
usage
|
field
|
tag
|
---|---|---|
case1 | if you plan to use them with GROUP BY() | |
case2 | if you plan to use them with an InfluxQL function | |
case3 | if you need them to be something other than a string |
然而,過了一陣子之後,我卻重新思考了這個問題。問題思考的起始點是這樣子:「如果我要用 mysql 這類的 relational database 來做 time series database 的用途,我的 schema 該如何設計呢?」
查了一些網站之後,隨即發現,原來我思考的這個問題,根本就是 time series database 設計的重要問題之一,連維基百科的條目,都有提到如何用 relational database 來模擬 time series database 。而這一類的「時間序列資料」的特性就是「多維度」。多維度的資料如果要求要高效能做 OLAP = On-Line Analytical Processing ,最合用的 database schema 就是 Star Schema 。
理解了適合 time series database 的 schema 是 star schema 之後,要來設計 influxdb 的 schema ,似乎也就更清楚了一些。