全部產品
Search
文件中心

ApsaraDB for SelectDB:資料類型

更新時間:Mar 28, 2025

為表欄位選擇合理的資料類型,不僅能夠提升資料庫的效能和儲存效率,還能有助於維護資料庫資料的完整性和可讀性,並增強資料庫的安全性和一致性。本文為您介紹ApsaraDB for SelectDB所支援的資料類型。您也可以通過SHOW DATA TYPES;語句,快速查看SelectDB支援的所有資料類型。

數實值型別

類型名稱

位元組數

描述

BOOLEAN

1

布爾值。

0:false

1:true

TINYINT

1

有符號整數。

值範圍:[-128, 127]

SMALLINT

2

有符號整數。

值範圍:[-32768, 32767]

INT

4

有符號整數。

值範圍:[-2147483648, 2147483647]

BIGINT

8

有符號整數。

值範圍:[-9223372036854775808, 9223372036854775807]

LARGEINT

16

有符號整數。

值範圍:[-2^127 + 1 ~ 2^127 - 1]

FLOAT

4

浮點數。

值範圍:[-3.4*10^38 ~ 3.4*10^38]

DOUBLE

8

浮點數。

值範圍:[-1.79*10^308 ~ 1.79*10^308]

DECIMAL

4/8/16

高精度定點數。

定義格式:DECIMAL(M[,D])

  • M:

    • 表示一共有多少個有效數字(precision)。

    • 值範圍:[1, 38]

  • D:

    • 代表小數位有多少數字(scale)。

    • 值範圍:[0, precision]

      • 0 <= precision <= 9時,佔用4位元組。

      • 9 < precision <= 18時,佔用8位元組。

      • 16 < precision <= 38時,佔用16位元組。

日期類型

類型名稱

位元組數

描述

DATE

16

日期類型。

取值範圍:['0000-01-01', '9999-12-31']

預設輸出格式:yyyy-MM-dd

DATETIME

16

日期時間類型。

定義格式:DATETIME([P])

說明

P:

  • 表示時間精度。

  • 預設值:0

  • 取值範圍:[0, 6],即最多支援6位小數(微秒)。

取值範圍:['0000-01-01 00:00:00[.000000]', '9999-12-31 23:59:59[.999999]']

預設輸出格式:yyyy-MM-dd HH:mm:ss.SSSSSS

字串類型

類型名稱

位元組數

描述

CHAR

M

定長字串。

定義格式:CHAR(M)

說明

M代表的是定長字串的位元組長度。

佔用空間大小:1~255個位元組。

VARCHAR

不定長

變長字串。

定義格式:VARCHAR(M)

說明
  • M代表的是變長字串的位元組長度。

  • 變長字串是以UTF-8編碼儲存的,因此通常英文字元佔1個位元組,中文字元佔3個位元組。

佔用空間大小:1~65533個位元組。

STRING

不定長

變長字串。

預設佔用的最小空間:1048576位元組(1 MB)

最大佔用的空間大小:2147483643位元組(2 GB)

重要
  • 可通過參數string_type_length_soft_limit_bytes調整其空間大小。

  • STRING類型僅支援定義Value列,不能定義Key列和分區分桶列。

半結構類型

類型名稱

位元組數

描述

ARRAY

不定長

由T類型元素組成的數組。

定義格式:ARRAY<T>

說明
  • T為基礎資料類型。

  • T支援的類型:

    BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, DECIMAL, DATE,
    DATEV2, DATETIME, DATETIMEV2, CHAR, VARCHAR, STRING

使用注意事項:

  • 不支援定義Key列。

  • 僅支援在Duplicate和Unique模型的表中使用。

MAP

不定長

由K,V類型元素組成的Map。

定義格式:MAP<K,V>

說明

K,V支援的類型:

BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, DECIMAL, DECIMALV3, DATE,
DATEV2, DATETIME, DATETIMEV2, CHAR, VARCHAR, STRING

使用注意事項:

  • 不支援定義Key列。

  • 僅支援在Duplicate和Unique模型的表中使用。

STRUCT

不定長

由多個Field組成的結構體,也可被理解為多個列的集合。

定義格式:STRUCT<field_name:field_type, ... >

說明
  • field_name: Field的標識符,不可重複

  • field_type: Field的類型

使用注意事項:

  • 不支援定義Key列。

  • 僅支援在Duplicate模型的表中使用。

JSON

不定長

採用二進位JSON格式儲存,通過JSON函數訪問JSON內部欄位。

預設支援的空間大小:1048576位元組(1MB)

最大支援的空間大小:2147483643位元組(2GB)

說明

可通過參數jsonb_type_length_soft_limit_bytes調整其空間大小。

VARIANT

不定長

動態可變資料類型,專為半結構化資料如JSON設計,可以存入任意JSON,自動將JSON中的欄位拆分成子列儲存,提升儲存效率和查詢分析效能。VARIANT類型特別適用於處理複雜的嵌套結構,而這些結構可能隨時會發生變化。

使用注意事項:

  • VARIANT類型僅支援定義Value列,不能定義Key列和分區分桶列。

重要

要求SelectDB核心版本4.0.0或以上,如不滿足,請升級核心版本

彙總類型

類型名稱

位元組數

描述

HLL

不定長

HLL是模糊去重,在資料量大的情況效能優於Count Distinct。

使用注意事項:

  • 存在誤差:通常在1%左右,有時會達到2%。

  • 建表時不能定義Key列,且彙總類型必須為HLL_UNION。

  • 不需要指定長度和預設值,其長度根據資料的彙總程度系統內控制。

  • 查詢或使用必須通過hll_union_agghll_raw_agghll_cardinalityhll_hash函數才會生效。

BITMAP

不定長

用於精確去重,如 UV 統計,人群圈選等情境。

使用注意事項:

  • BITMAP類型可以定義Aggregate表、Unique 表或 Duplicate 表中的列,且必須為非Key列。在Aggregate表中使用時,還需配合彙總類型BITMAP_UNION使用。

  • 無需指定長度和預設值,其長度根據資料的彙總程度系統內控制。

  • BITMAP列只能通過配套的bitmap_union_countbitmap_unionbitmap_hashbitmap_hash64等函數進行查詢或使用。

QUANTILE_STATE

不定長

用於計算分位元近似值的類型。

在匯入資料時會對相同的Key列,不同Value進行預彙總。

  • Value數量 <= 2048:採用明細記錄所有資料。

  • Value數量 > 2048:採用TDigest演算法,對資料進行彙總(聚類)儲存聚類後的質心點。

使用注意事項:

  • 建表時不能定義key列,且表的彙總類型必須為QUANTILE_UNION。

  • 無需指定長度和預設值,其長度根據資料的彙總程度系統內控制。

  • 僅支援通過配套的QUANTILE_PERCENTQUANTILE_UNIONTO_QUANTILE_STATE等函數進行查詢或使用。

AGG_STATE

不定長

彙總函式。

用於彙總計算加速,且只能配合state/merge/union函數組合器使用。

使用注意事項:

  • AGG_STATE不能作為Key列使用,建表時需要同時聲明彙總函式的簽名。

  • 無需指定長度和預設值,其實際儲存的資料大小與函數實現有關。

IP類型

重要

以下資料類型,僅SelectDB核心版本4.0.0或以上支援,如不滿足,請升級執行個體核心版本,如何升級,請參見升級核心版本

類型名稱

位元組數

描述

IPv4

4位元組

以4位元組二進位儲存IPv4地址,配合ipv4_*系列函數使用。

IPv6

16位元組

以16位元組二進位儲存IPv6地址,配合ipv6_*系列函數使用。