精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

No.5時序數據庫隨筆 - NaN的支持

原創
數據庫
有了NaN我們目前還需要對Apache IoTDB增加Nallable的語法支持嗎?

開篇引題

上一篇我們提到了Apache IoTDB如何支持Nullable的問題,IoTDB用NaN來代表沒有值,查詢之后我們發現NaN代表來當前數據類型的默認值。如:FLOAT 的默認值就是 0.0.

圖片

那么這個結果是在v.0.11.2 版本的行為,但從NaN的設計來說,這是一個錯誤的行為,或者說這是一個bug,在IoTDB-1158里面的討論區,我們也提到了這一點,目前在master已經修復了。

那么今天我們聊一下,有了NaN我們目前還需要對Apache IoTDB增加Nallable的語法支持嗎?

Nallable的本質

任何功能的支持我們可能需要考慮兩個維度,一是業務需求,客觀業務場景需要的功能一定是我們需要解決的,二是領域標準,做時序數據庫我們要考慮傳統數據庫標準,我們要考慮時序領域的標準。

在業務角度,業務期望的是當由于某種原因,無法提供當前時刻某個傳感器的值的時候,需要在查詢的是被業務感知的。那么IoTDB里面提供了NaN的策略來支持如 Float、Double等數值的不存在的情況,NaN(Not a number)。

在領域標準方面,傳統數據庫是有如 NOT NULL 的語法支持的,也就是說字段類型聲明時候如果沒有聲明NOT NULL默認用戶在整行插入時候是可以不攜帶該字段的值的,而顯示聲明了NOT NULL 那么每次insert 語句就必須攜帶當前的值。

今天我們文末就以Apache IoTDB Master代碼再看看對NaN的支持情況,基于Commit: b986cd1e5f 

同類(InfluxDB)行為

我們有時候在買東西時候經常貨比三家,不管這物品是好是壞,是貴還是便宜,我們看看其他商家是什么品質,是什么價格,就能輔助我們做判斷。那么學習Apache IoTDB的小伙伴,我也建議對InfluxDB有一定的了解. 目前InFluxDB穩定版本是1.8.4,我們就以1.8.4為例體驗一下InfluxDB對null的支持方式。

二進制安裝

我們今天在macOS下進行操作,首先確保你已經安裝了brew工具。然后我們可以一條命令安裝InfluxDB v1.8.4.

brew update
brew install influxdb

圖片

啟動InfluxDB服務

influxd

圖片

客戶端連接并創建測試數據庫

jincheng:~ jincheng.sunjc$ influx -precision rfc3339
Connected to http://localhost:8086 version 1.8.4
InfluxDB shell version: 1.8.4
CREATE DATABASE "lemming";
use lemming;
INSERT cpu,host=LemmingServer,region=zh_hz value=1.68
SELECT * FROM cpu;

圖片

Nullable的支持情況

  • 單值插入Null(參考InfluxDB的歷史信息)
  • https://github.com/influxdata/influxdb/issues/7722
  • https://github.com/influxdata/influxdb/pull/2429
  • https://github.com/influxdata/influxdb/blob/v1.8.4/CHANGELOG.md

> INSERT cpu,host=LemmingServer,region=zh_hz value=

ERR: {"error":"unable to parse 'cpu,host=LemmingServer,region=zh_hz value=': missing field value"}

INSERT cpu,host=LemmingServer,region=zh_hz value=''

ERR: {"error":"unable to parse 'cpu,host=LemmingServer,region=zh_hz value=''': invalid boolean"}

> INSERT cpu,host=LemmingServer,region=zh_hz value=null

ERR: {"error":"unable to parse 'cpu,host=LemmingServer,region=zh_hz value=null': invalid number"}

如上現象說明InfluxDB本身對單值的插入也是不支持Null的。那么這個和IoTDB的現狀是一樣的。我們再來看看多值同時插入的時候“現象”。

  • 多插入Null

正常插入:

> INSERT temperature,machine=unit42,type=assembly external=25,internal=37

> select * from temperature;

name: temperature

time                        external internal machine type

----                        -------- -------- ------- ----

2021-02-24T04:03:35.634296Z 25       37       unit42  assembly

internal為空:

> INSERT temperature,machine=unit42,type=assembly external=25,internal=

ERR: {"error":"unable to parse 'temperature,machine=unit42,type=assembly external=25,internal=': missing field value"}

internal為null:

> INSERT temperature,machine=unit42,type=assembly external=25,internal=null

ERR: {"error":"unable to parse 'temperature,machine=unit42,type=assembly external=25,internal=null': invalid number"}

不攜帶internal:

> INSERT temperature,machine=unit42,type=assembly external=25

> select * from temperature;

name: temperature

time                        external internal machine type

----                        -------- -------- ------- ----

2021-02-24T04:03:35.634296Z 25       37       unit42  assembly

2021-02-24T04:05:37.18028Z  25                unit42  assembly

圖片圖片

所以根據目前表現,InfulxDB v1.8.4 不支持直接插入Null,但是可以在多值插入時候,不攜帶某個值,也就是空值的支持。

IoTDB Master 行為(b986cd1e5f)

我們基于 b986cd1e5f進行編譯,如下:

圖片

啟動服務和CLI

啟動服務,如下:

jincheng:apache-iotdb-0.12.0-SNAPSHOT-all-bin jincheng.sunjc$ nohup sbin/start-server.sh >/dev/null 2>&1 &
[1] 22357

注意我們最新的發布目錄已經有變化`apache-iotdb-0.12.0-SNAPSHOT-all-bin`。

連接服務進入CLI,如下:

sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root

圖片

NaN的支持

先進行一些初始化,如下:

SET STORAGE GROUP TO root.ln
CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN
CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=RLE

圖片

  • 單值的插入

正常插入

INSERT INTO root.ln.wf01.wt01(timestamp,status) values(100,true);
INSERT INTO root.ln.wf01.wt01(timestamp,temperature) values(200,20.71)

圖片

我們可以看到,單值正常插入都是OK的,同時我們在查詢時候,如果在相同ts某些值不存在時候,我們查詢出來顯示是null的,用戶可以感知到多時間序列按時間對齊形成一行數據時候哪些字段為null。

異常插

IoTDB> INSERT INTO root.ln.wf01.wt01(timestamp,temperature) values(200,)
Msg: 401: Error occurred while parsing SQL to physical plan: line 1:64 mismatched input ')' expecting {NOW, TRUE, FALSE, '-', '.', 'NaN', INT, EXPONENT, DATETIME, DOUBLE_QUOTE_STRING_LITERAL, SINGLE_QUOTE_STRING_LITERAL}
IoTDB> INSERT INTO root.ln.wf01.wt01(timestamp,temperature) values(200,'')
Msg: 313: failed to insert measurements [temperature] caused by For input string: "''"
IoTDB> INSERT INTO root.ln.wf01.wt01(timestamp,temperature) values(200,null)
Msg: 401: Error occurred while parsing SQL to physical plan: line 1:64 mismatched input 'null' expecting {NOW, TRUE, FALSE, '-', '.', 'NaN', INT, EXPONENT, DATETIME, DOUBLE_QUOTE_STRING_LITERAL, SINGLE_QUOTE_STRING_LITERAL}
IoTDB>

圖片

這個現象其實與InfluxDB的表象也是一樣的,我們這樣設計也是合理的,因為我們是強類型系統,聲明了FLOAT類型,就必須插入的是FLOAT值。那么我們再看看多值插入的行為表現。

  • 多值的插入

正常插入

INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values(200,false,20.71)

圖片

上面一切正常,注意一點,我們插入時間戳是用的是200,那么會覆蓋之前的相同時間戳的值。

缺值插入

INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values(200,false,)
INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values(200,false,null)
INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values(200,false,NaN)

圖片

其實,大家發現多值插入,和單值插入的支持是一樣的,如果顯示的指定要要插入某個列的值,那么就必須在values里面有其合法的值進行插入。如果沒有業務值,IoTDB為大家提供了NaN來表示沒有具體的數值。當然,NaN不僅僅在多值插入時候可以應用,在單值進行插入時候也是一樣可以支持的。比如:

圖片

篇尾提問:為啥一定需要NaN呢?

看到這里大家也許會有個疑問,既然我在插入時候沒有值我就可以不插入,在查詢的時候 IoTDB可以按時間對齊形成一行數據顯示,對應時間戳不存在的值用null來顯示來,那么我們為什么還要用NaN呢?

這個就和業務有點關系來,比如:如果一個列的值是null顯示的,那么到底是當時這個時間點真的設備沒有值上送,還是雖然設備上送了數值,但是由于業務程序bug(或者值不合法)導致沒有插入成功呢?這個問題是很難回答了,因為:

  1. 設備沒上送值我們不插入,查詢時候是null,
  2. 設備雖然上送了,但是業務代碼有bug沒有插入成功,查詢時候也是null,

但是如果我們有NaN的支持,那么我們在業務代碼里面每一個時間戳都對應的所有列我們都進行值的插入,如果沒有值或者值不合法,那么我們就顯示的設置一個NaN代表業務本身在那個時刻沒有收到合法的值,而一旦出現null,那就代表在那個時刻業務沒有收到設備的任何數據事件,也沒有進行任何insert動作,所以查詢時候就是null,就可以方便的定位問題了。

再回到開篇的問題,有了NaN我們目前還需要對Apache IoTDB增加Nallable的語法支持嗎?

NaN 不等于 Nullable

NaN解決了Float/Double的某些場景的業務問題,但是其他非數值類型,如今天涉及到的Boolean類型是沒有支持,從語義角度非數值類型也不應該有NaN的設計,所以關于非數值類型的Null的考慮還是值得進一步討論的。

下一篇聊什么?

我們希望每一篇都聊點用戶提到的問題,下一篇我們聊了InfluxDB和IoTDB如何解決下面這個朋友的問題:

圖片

如果你有答案,也可以提前留言,看看你和我的思考是否一樣... :) 我們今天就到這里,下次見。

作者介紹

孫金城,51CTO社區編輯,Apache Flink PMC 成員,Apache Beam Committer,Apache IoTDB PMC 成員,ALC Beijing 成員,Apache ShenYu 導師,Apache 軟件基金會成員。關注技術領域流計算和時序數據存儲。

責任編輯:張燕妮 來源: 孫金城
相關推薦

2022-07-06 15:41:55

數據庫

2022-07-07 12:23:29

數據庫

2022-07-11 10:45:12

數據庫分析

2022-07-11 11:12:32

數據分析

2022-07-06 15:50:04

數據計算

2022-09-23 07:44:48

時序數據庫物聯網

2017-11-20 11:37:19

時序數據數據存儲HBase

2021-03-08 10:18:55

數據庫數據Prometheus

2021-03-15 10:10:29

數據庫數據查詢

2021-09-26 10:08:33

TSDB時序數據庫壓縮解壓

2022-07-08 11:58:10

數據庫開發

2020-03-11 09:50:21

時序數據庫快速檢索

2022-07-08 12:17:07

數據庫

2022-12-18 19:38:31

時序數據庫數據庫

2021-03-01 10:20:52

存儲

2021-08-31 14:01:59

時序數據庫數據庫數據

2021-02-22 10:37:47

存儲Prometheus

2022-06-10 17:37:37

數據庫

2017-09-05 14:45:14

時序數據數據庫大數據

2018-06-26 09:37:07

時序數據庫FacebookNoSQL
點贊
收藏

51CTO技術棧公眾號

亚洲一区二区三区高清视频| 亚洲の无码国产の无码步美| 最新真实国产在线视频| 强制捆绑调教一区二区| 俺去啦;欧美日韩| 免费不卡av网站| av成人福利| 国产欧美在线观看一区| 91在线播放视频| 国产精品国产三级国产专区52| 中文字幕亚洲影视| 欧美一区二区三区在线观看| 91精品国产91久久久久麻豆 主演| 午夜在线视频免费| 久国产精品韩国三级视频| 色综合久久悠悠| 精品人妻一区二区三区香蕉| 深夜福利亚洲| 午夜精品在线视频一区| 亚洲mv在线看| 神马午夜一区二区| 国产一区欧美日韩| 欧美怡红院视频一区二区三区| 欧美日韩生活片| 国产福利一区二区精品秒拍| 欧美日韩国产一级| 国产黄色一级网站| 亚洲区欧洲区| 国产精品系列在线| 久久精品日韩精品| 性少妇videosexfreexxx片| 美女尤物久久精品| 欧美极品第一页| 日本欧美一区二区三区不卡视频| 欧美大胆视频| 欧美不卡一区二区三区| 日本高清久久久| 日韩一级二级| 精品毛片三在线观看| 日韩video| 秋霞午夜在线观看| 中文字幕欧美日韩一区| 欧美久久电影| 三级黄视频在线观看| 成熟亚洲日本毛茸茸凸凹| 国产这里只有精品| 又污又黄的网站| 日韩在线播放一区二区| 午夜精品久久久久久久白皮肤| 欧美特级一级片| 天天久久综合| 日韩一区二区三区国产| av黄色在线免费观看| 西瓜成人精品人成网站| 日韩久久免费电影| 三级男人添奶爽爽爽视频 | 性金发美女69hd大尺寸| 爱爱视频免费在线观看| 亚洲影视一区| 九九精品在线视频| 免费在线视频观看| 亚洲激情偷拍| 久久人人爽人人爽人人片av高清| 久久久久久天堂| 日韩午夜免费视频| 欧美一级淫片播放口| 97久久久久久久| 丝袜诱惑制服诱惑色一区在线观看| 欧美重口另类videos人妖| 丰满人妻老熟妇伦人精品| 美女诱惑一区| 国产日本欧美一区| av小说天堂网| 福利电影一区二区| 精品无码久久久久国产| 久久综合九色综合久| 国产日产欧美一区| 宅男噜噜99国产精品观看免费| 国产在线1区| 亚洲国产欧美一区二区三区丁香婷| 国产中文字幕乱人伦在线观看| av免费不卡国产观看| 疯狂做受xxxx欧美肥白少妇| 大香煮伊手机一区| av在线精品| 亚洲国产免费av| 青娱乐国产视频| 午夜影院欧美| 97不卡在线视频| 免费黄色一级大片| 国产一区三区三区| 美国av一区二区三区| www在线免费观看| 亚洲一区免费视频| 能看的毛片网站| 亚洲一二av| 亚洲理论在线a中文字幕| 中文字幕伦理片| 黄色在线一区| 国产精品久久久亚洲| 性猛交xxxx乱大交孕妇印度| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲精品一区三区三区在线观看| 在线电影国产精品| 久久精品女同亚洲女同13| 日韩成人a**站| 91chinesevideo永久地址| 在线观看视频二区| 99精品偷自拍| 亚洲天堂第一区| 日韩经典一区| 日韩av中文字幕在线播放| 欧日韩不卡视频| 一本一本久久| 99re视频在线观看| 日本三级在线视频| 欧美视频精品一区| 五月天丁香社区| 久久影视一区| 国产精品国语对白| 十八禁一区二区三区| 亚洲精选视频在线| 天天爽夜夜爽一区二区三区| 欧美绝顶高潮抽搐喷水合集| 欧美乱大交xxxxx另类电影| 国产精品51麻豆cm传媒| 99久久免费国产| 日韩精品免费一区| 日韩免费大片| 日韩中文字幕欧美| 老熟妇一区二区三区啪啪| 91农村精品一区二区在线| 丁香婷婷综合激情| 国产高清亚洲| 日韩一区二区精品视频| 中文人妻熟女乱又乱精品| 久久久噜噜噜久久中文字幕色伊伊| 免费超爽大片黄| 在线播放一区二区精品视频| 久久精品人人爽| 91亚洲精品国偷拍自产在线观看| 中文av一区二区| 成人性生交免费看| 日韩黄色大片网站| 国产精品久久久久秋霞鲁丝 | xvideos亚洲| 亚洲天堂777| 国产精品亲子乱子伦xxxx裸| 国产裸体免费无遮挡| 精品在线手机视频| 国产精品96久久久久久又黄又硬| av女名字大全列表| 欧美日韩裸体免费视频| 一级特级黄色片| 亚洲深爱激情| 欧美一区二区三区电影在线观看| 神马电影网我不卡| 亚洲欧美日韩精品| 黄色av一区二区| 国产精品久久毛片| 国产不卡的av| 亚洲视频日本| 久久国产精品免费一区| 中文字幕在线中文字幕在线中三区| 亚洲精品www久久久| 国产成人精品网| 国产日韩欧美在线一区| 91亚洲免费视频| 久久精品久久久| 好吊色欧美一区二区三区| 色网在线免费观看| 永久免费毛片在线播放不卡| 一区二区三区免费在线| 亚洲精品免费电影| 中文字幕乱码一区| 日日骚欧美日韩| 裸体裸乳免费看| 国产美女撒尿一区二区| 热草久综合在线| 一级日本在线| 精品国产99国产精品| www.com国产| 国产精品成人免费在线| 久久久久中文字幕亚洲精品| 免费永久网站黄欧美| 亚洲精品日韩在线观看| 亚洲一区 二区| 国产91色在线|| 中文字幕免费高清电视剧网站在线观看| 精品动漫一区二区三区在线观看| 国产又大又黄又粗| 亚洲精品国产a| 男人天堂av电影| 国产乱子伦视频一区二区三区| av之家在线观看| 天天超碰亚洲| 欧美日韩精品中文字幕一区二区| 亚洲欧洲专区| 欧美亚洲成人免费| 中文字幕在线播放网址| 亚洲人成啪啪网站| 国产 日韩 欧美 综合| 欧美在线看片a免费观看| 欧美日韩国产精品综合| 欧美国产日韩在线观看| 国产人成视频在线观看| 久久精品免费观看| 国产三区在线视频| 欧美人与禽猛交乱配视频| 欧美理论一区二区| 久久伊人影院| 国产一区二中文字幕在线看| 免费看男女www网站入口在线| 久久手机免费视频| 久草在线青青草| 亚洲精品wwwww| 亚洲成人久久精品| 欧美巨大另类极品videosbest | 麻豆免费在线| 欧美成人亚洲成人| 麻豆网在线观看| 在线观看亚洲区| 免费在线视频一级不卡| 精品乱人伦一区二区三区| 91中文字幕在线视频| 91国偷自产一区二区开放时间| 色播视频在线播放| 亚洲一区在线视频| 中文字幕影音先锋| 亚洲人成网站在线| 亚洲伦理一区二区三区| 国产精品嫩草影院av蜜臀| 新91视频在线观看| 久久欧美中文字幕| 制服丝袜第二页| 99久久综合精品| 老熟妇精品一区二区三区| 国产成人av自拍| 日本人妻一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 久久久精彩视频| 欧美激情网址| 久久久久久久久久久久久9999| 精品三级在线观看视频| 国产91社区| 狠狠久久伊人| 国产乱码精品一区二区三区日韩精品 | 三级精品在线观看| 日本老熟妇毛茸茸| 男人的天堂久久精品| 粉色视频免费看| 国内成+人亚洲+欧美+综合在线 | 99精品久久免费看蜜臀剧情介绍 | 久久蜜桃av一区精品变态类天堂| av无码av天天av天天爽| 99精品黄色片免费大全| 亚洲区免费视频| 国产日韩欧美亚洲| 日本激情视频一区二区三区| 一色屋精品亚洲香蕉网站| 日韩三级在线观看视频| 亚洲精品免费在线| 国产午夜精品一区二区理论影院| 欧美日韩国产区| 国产午夜无码视频在线观看| 欧美性极品少妇| 国产精品视频在线观看免费| 欧美成人性战久久| 日本韩国免费观看| 亚洲天堂男人天堂女人天堂| 色开心亚洲综合| 久久久久亚洲精品国产| 亚洲欧洲日本韩国| 国产精品综合久久久| 中文字幕久久精品一区二区| 精品久久sese| 日本欧美视频| 欧美中日韩在线| 日韩亚洲国产欧美| 男人插女人下面免费视频| 国产自产高清不卡| 亚洲一区二区观看| 国产精品伦一区二区三级视频| 欧美三根一起进三p| 欧美性猛交xxxx| 国产乱码精品一区二三区蜜臂 | 国产一区精品| 欧美俄罗斯性视频| 日韩一区二区三区在线免费观看| 91香蕉电影院| 九色精品国产蝌蚪| 日韩视频一二三| 视频在线在亚洲| 国产精品一区二区在线免费观看| 国产亚洲精品久| 久久综合激情网| 精品视频123区在线观看| 刘亦菲久久免费一区二区| 亚洲网址你懂得| av免费在线视| 91精品视频网站| 欧美人妖在线| 国产午夜大地久久| 国产又黄又大久久| 免费看黄色av| 亚洲成av人**亚洲成av**| 一区二区视频网站| 日韩国产精品亚洲а∨天堂免| 国产区在线观看| 国产精品高潮在线| 噜噜噜狠狠夜夜躁精品仙踪林| 亚洲综合五月天| 久久亚洲欧美| 人妻无码中文久久久久专区| 亚洲精品国久久99热| 亚洲精品国产欧美在线观看| 日韩精品视频在线观看免费| 污污网站在线观看| 91久久久久久久久| 欧美精品尤物在线观看| 97国产精东麻豆人妻电影| 国产成人精品免费| 九九精品视频免费| 欧美三级电影一区| 久久精品蜜桃| 国产91对白在线播放| 给我免费播放日韩视频| 91免费视频黄| 激情欧美一区二区| 林心如三级全黄裸体| 色一情一伦一子一伦一区| 四虎精品一区二区三区| 亚洲精品久久久久久久久| 一级一级黄色片| 亚洲精品www| 日本欧美电影在线观看| 91久久在线视频| 先锋资源久久| 99精品视频国产| 成人免费一区二区三区在线观看| 亚洲视频久久久| 最近2019中文字幕第三页视频| 神马久久资源| 亚洲精品国产精品国自产观看| 三级一区在线视频先锋| 懂色av蜜桃av| 在线电影国产精品| 中文字幕有码在线观看| 国产精品xxxx| 99热精品在线| 在线 丝袜 欧美 日韩 制服| 欧美性猛交xxxx黑人| 狠狠狠综合7777久夜色撩人| 日本成熟性欧美| 日韩极品一区| 超碰91在线播放| 亚洲一级二级三级在线免费观看| 亚洲AV无码成人片在线观看 | 看黄网站在线观看| 91青草视频久久| 中出一区二区| 人妖粗暴刺激videos呻吟| 午夜精品久久一牛影视| 久久久久久青草| 国产男人精品视频| 在线成人超碰| 亚洲国产综合视频| 色噜噜夜夜夜综合网| 91porn在线观看| 91精品国产高清久久久久久91裸体| 欧美1级日本1级| 波多野结衣一二三区| 欧美性生交大片免网| aaa在线观看| av激情久久| 男人的天堂亚洲| 国产精品视频看看| 精品国产乱码久久| 成人黄色免费短视频| 致1999电视剧免费观看策驰影院| 国产高清不卡一区二区| 97免费在线观看视频| 三级精品视频久久久久| 国产一级成人av| 亚洲一级片网站| 亚洲成av人综合在线观看| 国产黄色片在线观看| aa日韩免费精品视频一| 久久国产欧美| 久草视频手机在线观看| 国产亚洲xxx| 超碰cao国产精品一区二区| 欧美性猛交久久久乱大交小说| 亚洲人成亚洲人成在线观看图片| 少妇性bbb搡bbb爽爽爽欧美| 成人美女av在线直播| 亚洲一区日韩| 麻豆changesxxx国产| 在线精品高清中文字幕| 久久视频在线观看|