ClickHouse 架構概述之Field介紹
盛年不重來,一日難再晨,及時當勉勵,歲月不待人
盡管如此,有時候也可能需要處理單個值。表示單個值,可以使用 Field
。Field
是 UInt64
、Int64
、Float64
、String
和 Array
組成的聯合。IColumn
擁有 operator[]
方法來獲取第 n
個值成為一個 Field
,同時也擁有 insert
方法將一個 Field
追加到一個列的末尾。這些方法並不高效,因為它們需要處理表示單一值的臨時 Field
對象,但是有更高效的方法比如 insertFrom
和 insertRangeFrom
等。
Field
中並沒有足夠的關於一個表(table)的特定數據類型的信息。比如,UInt8
、UInt16
、UInt32
和 UInt64
在 Field
中均表示為 UInt64
。
Field對應的代碼目錄位置在dbms\src\Core下的Field.cpp和Field.h
Field的作用在於可以將Null、UInt64、Int64、Float64、UInt128、Int128、String、Array、Tuple、Decimal32、Decimal64、Decimal128和AggregateFunctionState這些類型都用Field模板類來表示,達到更通用和高效的目的。
支持等於、小於、大於、小於等於、大於等於、==和不等於等算法,對應的類如下圖所示: