亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • Influxdb中Select查詢請求結果涉及到的一些數據結構

Influxdb中Select查詢請求結果涉及到的一些數據結構

發布時間:2020-08-12 00:12:31 來源:ITPUB博客 閱讀:197 作者:HULK一線技術雜談 欄目:數據庫

女主宣言

本文將給大家介紹的是在Influxdb中Select查詢請求結果中涉及到的一些數據結構,對于Influxsql的查詢語句不太熟悉的同學,可以在先了解了解:

https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration

數據結構

1   Series

Influxdb中Select查詢請求結果涉及到的一些數據結構

Series其實就是measurement和tags的組合,tags是tag key和tag value的map.這個Tags的id是如何產生的呢,其實就是對tag key和tag value編碼到

[]byte: agkey1\0tagkey2\0...\tagvalue1\0tagvalue2\0...

具體實現定義在query/point.go中的encodeTags。

2  Row

Influxdb中Select查詢請求結果涉及到的一些數據結構

Row表示查詢結果集中的每一行, 其中的Values表示是返回的Fields的集合

3   bufFloatIterator

 

Influxdb中Select查詢請求結果涉及到的一些數據結構

bufFloatIterator相當于c里面的鏈表元素,itr指向下一個元素的指針,buf表示當前元素,即FloatPoint類型的鏈表的迭代器。

FloatPoint

FloatPoint定義在query/point.gen.go中, 表示一條field為float類型的數據

Influxdb中Select查詢請求結果涉及到的一些數據結構

Next實現

當前Iterator的值不為空,就返回當前的buf, 當前的值為空,就返回itr.itr.Next(),即指向的下一個元素

Influxdb中Select查詢請求結果涉及到的一些數據結構


unread: iterator回退操作

Influxdb中Select查詢請求結果涉及到的一些數據結構

4   floatMergeIterator

floatMergeIterator組合了多個floatIterator

Influxdb中Select查詢請求結果涉及到的一些數據結構

因為要作merge, 這里需要對其管理的所有Interator元素作排序,這里用到了golang的container/heap作堆排。

因為要用golang的container/heap來管理,需要實現下面規定的接口,

Influxdb中Select查詢請求結果涉及到的一些數據結構

floatMergeIterator定義中的floatMergeHeap即實現了上面的接口,我們主要來看一下比較函數的實現,比較的其實就是FloatPoint。

Influxdb中Select查詢請求結果涉及到的一些數據結構

比較的優先級先是FloatPoint的measurement名,然后是tagset id, 最后是time,將這個比較函數我們就可以知道.

結構

Influxdb中Select查詢請求結果涉及到的一些數據結構

Next函數的實現

一張長圖

Influxdb中Select查詢請求結果涉及到的一些數據結構

結合上面的Less函數可知,針對所有的FloatPoint, 排序的最小單位是Window(由measurement name, tagset id, time window組成),屬性同一Window的FloatPoint不再排序。如果是按升級規則遍歷,則遍歷的結果是按Window從小到大排,但同一Window內部的多條Point,時間不一定是從小到大的。

5

floatSortedMergeIterator

Influxdb中Select查詢請求結果涉及到的一些數據結構

同樣它也借助了golang/container中的heap, 與floatMergeIterator相比它實現了全體Point的排序遍歷,我們來看一下是如何實現的;

pop函數:

Influxdb中Select查詢請求結果涉及到的一些數據結構

對所有Iterator包含的所在FloatPoint,都從排序,沒有Window的概念.

6   floatIteratorScanner

floatIteratorScanner將floatIterator的值掃描到map里。

Influxdb中Select查詢請求結果涉及到的一些數據結構

ScanAt

在floatIterator中找滿足條件的Point, 條件是ts, name, tags均相等,實現比較簡單

Influxdb中Select查詢請求結果涉及到的一些數據結構

7   floatParallelIterator

Influxdb中Select查詢請求結果涉及到的一些數據結構

在一個單獨的goroutine里面循環調用floatIterator.Next獲取FloatPoint,然后寫入到chan中:

Influxdb中Select查詢請求結果涉及到的一些數據結構

使用的時候,調用Next, 從上面的Chan中讀數據:

Influxdb中Select查詢請求結果涉及到的一些數據結構

8   floatLimitIterator

限制在每個window中讀取的Point個數

Influxdb中Select查詢請求結果涉及到的一些數據結構

next

Influxdb中Select查詢請求結果涉及到的一些數據結構

9   floatFillIterator

運行在select中的Group by time fill(...), 在當前的interval的window中,如果沒有查詢到值,則使用相應的添充規則生成相應的值

具體可參見:

group-by-time-intervals-and-fill

定義:

Influxdb中Select查詢請求結果涉及到的一些數據結構

10  floatInterruptIterator

每遍歷N條數據后,檢測下遍歷是否需要中斷

定義:

Influxdb中Select查詢請求結果涉及到的一些數據結構

Next

Influxdb中Select查詢請求結果涉及到的一些數據結構

11   floatReduceFloatIterator

對每個interval內的數據作reduce操作

定義:

Influxdb中Select查詢請求結果涉及到的一些數據結構

reduce()

返回處理后的points, 函數較長,但邏輯比較簡單

Influxdb中Select查詢請求結果涉及到的一些數據結構

Influxdb中Select查詢請求結果涉及到的一些數據結構

Influxdb中Select查詢請求結果涉及到的一些數據結構

12   CallIterator

CallIterator實現了聚合函數的Iterator: count, min, max, sum, first, last, mean, distinct,Median....主要是使用我們上面介紹的一系列的ReduceIterator,提供相應的Reducer, 實現AggregateFloat和Emit這兩個函數

13   IteratorOptions

構建Iterator時用到的一些配置選項, 包含的內容較多

定義:

Influxdb中Select查詢請求結果涉及到的一些數據結構

14  Cursor

select后會得到這個cursor,用來遍歷查詢結果

定義:

Influxdb中Select查詢請求結果涉及到的一些數據結構

Scan


Influxdb中Select查詢請求結果涉及到的一些數據結構

15   floatIteratorMapper

*IteratorMapper系列, 主要作用是遍歷cursor

定義

Influxdb中Select查詢請求結果涉及到的一些數據結構

我們來看一下Next接口, 對當前的cursor作scan來返回FloatPoint

Influxdb中Select查詢請求結果涉及到的一些數據結構

總結

以上就是Influxdb的select查詢請求結果涉及到的一些數據結構

HULK一線技術雜談

由360云平臺團隊打造的技術分享公眾號,內容涉及云計算數據庫大數據監控泛前端自動化測試等眾多技術領域,通過夯實的技術積累和豐富的一線實戰經驗,為你帶來最有料的技術分享

原文鏈接:https://mp.weixin.qq.com/s/GzfNWEZ4wOOFVd8yrQpQOQ
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

磐石市| 铜陵市| 阿拉善右旗| 大庆市| 黑山县| 于田县| 永定县| 黄大仙区| 德阳市| 乌兰浩特市| 乌海市| 临湘市| 集贤县| 平顶山市| 弥渡县| 忻州市| 泗洪县| 宁津县| 大埔县| 筠连县| 彰化县| 谢通门县| 中宁县| 宝鸡市| 鹤峰县| 建宁县| 常山县| 宁河县| 达孜县| 泗洪县| 惠水县| 德州市| 三江| 广德县| 普洱| 通城县| 精河县| 奉贤区| 蒲江县| 纳雍县| 南投县|