Monday, November 21, 2016

influxdb vs Star Schema

工作上會用到 influxdb ,最初就是把文件看一看,然後寫成心得。

使用influxdb的重要觀念 

(a) 可以把 influxdb 類比成一般的資料庫
influxdb
一般的DB
measurement
table
timerow
fields, tagscolumn
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()
case2if you plan to use them with an InfluxQL function 
case3if 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 ,似乎也就更清楚了一些。