精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

粉嫩久久99精品久久久久久夜| 一区二区美女| 亚洲一二三区不卡| 国产精品一区二区不卡视频| 日韩成人免费观看| 性欧美xxxx免费岛国不卡电影| 在线免费不卡电影| 国产激情片在线观看| 五十路在线视频| 美女网站一区二区| 欧美激情乱人伦| 免费看黄色三级| 爱爱精品视频| 欧美写真视频网站| 日本福利视频一区| 亚洲麻豆精品| 懂色av一区二区三区蜜臀| 国产精品久久久久久久app| 亚洲熟女www一区二区三区| 精品一区毛片| 亚洲成人国产精品| 欧美美女一级片| 亚洲伊人av| 亚洲一区二区影院| 亚洲人成网站在线观看播放| 日批视频免费播放| 久久69国产一区二区蜜臀| 国产91精品久久久久久久| 全程偷拍露脸中年夫妇| 成人av国产| 亚洲另类图片色| 成人做爰69片免费| 精品国产18久久久久久二百| 在线看日韩精品电影| 精品欧美一区免费观看α√| 亚洲综合伊人久久大杳蕉| 中文字幕电影一区| 免费在线成人av电影| 亚洲成熟女性毛茸茸| 极品少妇xxxx精品少妇偷拍| 国产精品福利小视频| 欧美三级一区二区三区| 国内一区二区三区| 另类专区欧美制服同性| 国产一级淫片久久久片a级| 九九热线有精品视频99| 日韩av有码在线| 又色又爽又黄18网站| 久久免费福利| 欧美一区二区在线播放| 一二三级黄色片| 少女频道在线观看高清 | av在线免费观看网站| 91麻豆国产福利精品| 久久99精品久久久久久青青日本| 丰满人妻熟女aⅴ一区| 国产成人精品午夜视频免费| 成人写真视频福利网| 一级片aaaa| 看国产成人h片视频| 国产裸体写真av一区二区| 欧美另类高清videos的特点| 日本成人中文字幕在线视频| 国产精品美女视频网站| 中文字幕av片| 久久99久久99精品免视看婷婷| 成人国产在线视频| 国内精品偷拍视频| 成人精品在线视频观看| 精品国产乱码久久久久久久软件 | 色婷婷**av毛片一区| 91成人精品一区二区| 欧美激情另类| 欧美日韩福利视频| 国产视频91在线| 老司机精品视频网站| 亚洲综合免费观看高清完整版在线 | 九色精品美女在线| 国产精品成人av久久| 国产精品日本欧美一区二区三区| 欧洲日韩成人av| 中文字幕在线播放日韩| 国产一区二区网址| 国产精品裸体一区二区三区| 亚洲欧美综合在线观看| 久久久激情视频| 日本福利一区二区三区| 日本中文字幕伦在线观看| 国产精品免费久久久久| 91精品国产毛片武则天| 欧美aa免费在线| 在线观看日韩电影| 在线观看欧美一区二区| 网红女主播少妇精品视频| 在线观看日韩av| 欧美成人精品欧美一级| 久久青草久久| 亚洲一区久久久| 视频二区在线| 亚洲色图在线视频| 免费黄色福利视频| 成人精品在线| 亚洲人成在线观| 老妇女50岁三级| 日韩精品色哟哟| 国产福利不卡| 日本不卡不卡| 欧美午夜久久久| 一道本在线免费视频| 成人激情自拍| 北条麻妃99精品青青久久| 欧美日韩中文字幕在线观看| 久久久久看片| 肥熟一91porny丨九色丨| 成人高清免费观看mv| 亚洲电影在线播放| 天天操天天干天天做| 日韩有码一区| 久国内精品在线| 中文字幕 人妻熟女| 成人av片在线观看| 青青草原国产免费| 免费观看成人性生生活片 | 五月婷中文字幕| 日韩美女视频一区| 999香蕉视频| 给我免费播放日韩视频| 久久综合电影一区| 中文字幕人妻一区二区在线视频 | 久久精品国产第一区二区三区| 国产综合第一页| 色www永久免费视频首页在线 | 热久久视久久精品18亚洲精品| 国产成人精品一区二区无码呦| 中文字幕乱码日本亚洲一区二区| 六月丁香激情网| 88久久精品| 久久91精品国产91久久久| 国产亚洲久一区二区| 久久久久久久网| 日韩人妻精品无码一区二区三区| 视频精品一区| 久久久精品网站| 91国偷自产中文字幕久久| 日本一区二区动态图| 久久婷婷国产精品| 欧美极品中文字幕| 日韩美女中文字幕| 黄色在线播放| 欧美伊人久久久久久午夜久久久久| 亚洲精品乱码久久久久久久久久久久| 国产欧美日本| 免费国产在线精品一区二区三区| 麻豆mv在线看| 亚洲精品日韩久久久| 亚洲午夜18毛片在线看| 91在线免费视频观看| 男人和女人啪啪网站| 欧美男人操女人视频| 欧美国产中文字幕| 亚洲狼人综合网| 亚洲国产va精品久久久不卡综合| 香港三级日本三级| 欧美亚洲一级| 久久久久免费网| 日韩不卡免费高清视频| 深夜成人在线观看| 国产人妖一区二区| 亚洲一区电影777| 国产精品伦子伦| 丝袜美腿亚洲一区| 最新国产精品久久| 91九色鹿精品国产综合久久香蕉| 超薄丝袜一区二区| 欧美在线精品一区二区三区| 欧美色视频日本版| 老司机深夜福利网站| 国产精品一区二区三区网站| 91精品国产91久久久久麻豆 主演| 人人香蕉久久| 国产日韩在线视频| 久久五月精品中文字幕| 精品在线小视频| 一级全黄少妇性色生活片| 一个色综合av| 国产手机在线观看| 国产在线国偷精品产拍免费yy| 国产精品久久久久久久久电影网| 亚洲精华一区二区三区| 国产有码一区二区| 黄色漫画在线免费看| 在线观看欧美日韩| 黄色av网址在线| 欧美曰成人黄网| 国产一级特黄aaa大片| 久久久99久久| 污视频在线观看免费网站| 夜夜精品视频| 综合网五月天| 亚洲精品小区久久久久久| 成人欧美一区二区三区黑人孕妇| 高清电影在线观看免费| 中文字幕日本欧美| 天堂成人在线视频| 91麻豆精品国产91| 9i精品福利一区二区三区| 亚洲精品免费看| 国产毛片欧美毛片久久久| 播五月开心婷婷综合| 午夜一级免费视频| 视频一区免费在线观看| 日韩一级性生活片| 午夜欧美在线| 少妇特黄a一区二区三区| 久久悠悠精品综合网| 91亚洲精品久久久| 秋霞国产精品| 国产69精品久久久久久| 色图在线观看| 久久精品一偷一偷国产| 国产视频二区在线观看| 亚洲国产日韩精品在线| 国产三级伦理片| 欧美性受xxxx黑人xyx| 影音先锋亚洲天堂| 亚洲一区二区美女| 精品国产视频一区二区三区| 久久久www成人免费无遮挡大片| 中文字幕人妻一区二区三区| 国产精品一二三在| 别急慢慢来1978如如2| 99riav国产精品| 韩日视频在线观看| 欧美特黄视频| 波多野结衣与黑人| 女人色偷偷aa久久天堂| 中文字幕中文字幕在线中一区高清| 国产一区二区三区四区五区传媒 | 成人三级做爰av| 久久99精品久久久久久| 视色视频在线观看| 日本亚洲欧美天堂免费| 无码人妻h动漫| 亚洲中字黄色| 免费在线激情视频| 亚洲精品偷拍| 国产精品一区二区免费在线观看| 最新亚洲一区| 日韩免费一级视频| 天堂蜜桃一区二区三区| 久久精品.com| 日韩av网站在线观看| 激情五月婷婷久久| 麻豆精品一区二区| 加勒比av中文字幕| 国产精品影视在线观看| 精品伦一区二区三区| 成人丝袜18视频在线观看| 性囗交免费视频观看| 91香蕉国产在线观看软件| 播金莲一级淫片aaaaaaa| 久久嫩草精品久久久精品一| 美女洗澡无遮挡| 欧美国产日本视频| 成人信息集中地| 亚洲综合色丁香婷婷六月图片| 久久综合成人网| 精品动漫一区二区三区| 秋霞av一区二区三区| 欧美日韩1区2区| a天堂在线视频| 亚洲成人久久一区| 青青操视频在线| 色婷婷av一区二区三区在线观看 | 亚洲一区二区三区四区在线观看 | 日韩av中文字幕一区二区 | 国产不卡在线一区| 中文字幕人妻一区二区三区| 久久久久久久久久看片| 久久99久久99精品免费看小说| 一区二区三区四区在线播放| 91精品国产乱码在线观看| 91国产免费看| 国产夫妻自拍av| 亚洲精品一区二区网址| 日本高清视频在线播放| 欧美精品久久一区二区| 国产精品亚洲一区二区三区在线观看 | 欧美日韩综合在线观看| 欧美性一级生活| 亚洲精品视频网| 国产一区二区三区视频| 亚洲小说区图片区都市| 热re99久久精品国产66热| 高清久久精品| 欧美在线3区| 欧美体内she精视频在线观看| 免费大片在线观看| 国产成人av影院| 国产毛片欧美毛片久久久| 亚洲高清视频的网址| 亚洲一区中文字幕在线| 日韩电影大全免费观看2023年上| 精品视频在线一区二区| 欧美一级电影在线| 一区二区三区视频免费视频观看网站| 欧美日韩高清在线一区| 国产精品mm| 蜜臀一区二区三区精品免费视频 | 久久免费视频播放| 欧美视频在线一区二区三区| 日韩在线视频免费| 久久久91精品| a成人v在线| 欧美不卡在线一区二区三区| 午夜久久tv| 国产日韩欧美久久| 国产亚洲欧美一级| 在线观看中文字幕视频| 日韩欧美中文字幕公布| av男人的天堂在线| 日韩美女主播视频| 免费成人三级| 青春草国产视频| 国产精品888| www色aa色aawww| 欧美日韩视频第一区| 精品美女视频在线观看免费软件| 国内精品视频一区| 中文字幕一区二区三区日韩精品| 中文字幕剧情在线观看一区| 日日摸夜夜添夜夜添国产精品| 亚洲黄色免费在线观看| 亚洲国产美女搞黄色| 国产av无码专区亚洲av| 久久伊人精品一区二区三区| 日韩免费在线电影| 一区二区三区观看| 美女诱惑一区二区| 九一在线免费观看| 欧美亚洲国产一区| 一本一道久久综合狠狠老精东影业| 国产盗摄视频在线观看| 久久99精品国产.久久久久| 超碰人人干人人| 欧美性猛交xxxxxx富婆| 国产视频第一区| 国产精品第1页| 欧美一区二区性| 搡女人真爽免费午夜网站| 日本一区二区免费在线观看视频| 亚洲成人av网址| 最近日韩中文字幕中文| 欧美黑粗硬大| 影音先锋男人的网站| 国产伦精品一区二区三区在线观看| 污污的视频在线免费观看| 欧美一区二区三区婷婷月色| 在线不卡日本v二区707| 国产高清一区视频| 一区二区三区精品视频在线观看| 国产精品九九九九九| 欧美影视一区二区三区| 麻豆视频在线| 粉嫩高清一区二区三区精品视频| 影音先锋中文字幕一区| www.免费av| 欧美视频三区在线播放| 欧美jizzhd69巨大| 高清国产在线一区| 中日韩视频在线观看| 国产精成人品免费观看| 欧美乱妇15p| 欧美xxxx做受欧美88bbw| 国产欧美欧洲| 日韩va亚洲va欧美va久久| 日本午夜在线观看| 亚洲国产精品va在线| 欧美日韩123区| 在线观看欧美一区| 成人综合婷婷国产精品久久蜜臀 | 97香蕉碰碰人妻国产欧美| 色呦呦日韩精品| bestiality新另类大全| 久久波多野结衣| 精久久久久久久久久久| 国产大片aaa| 中文日韩在线观看| 国产精品xxxav免费视频| 日本激情视频在线| 亚洲一区二区av电影| 国产三区四区在线观看| 2019国产精品视频| 爽好久久久欧美精品| 欧美日韩综合一区二区| 亚洲视频精品在线| jizz国产精品| 日本不卡一区在线| 精品magnet| 91麻豆免费在线视频|