Passer au contenu principal
Voir Types de données pour des informations générales.
L’encodage des types numériques correspond à l’organisation en mémoire des processeurs little-endian comme AMD64 ou ARM64, ce qui permet un encodage et un décodage très efficaces.
TypeEncodage
Entiers (Int/UInt)8, 16, 32, 64, 128 ou 256 bits en little-endian
Flottants (Float32/Float64)Représentation binaire IEEE 754
StringTableau de chaînes sous la forme (len, value)
FixedString(N)Tableau de séquences de N octets
IPv4Alias de UInt32, représenté sous forme de UInt32
IPv6Alias de FixedString(16), représenté en binaire
TupleTableau de colonnes encodées de manière contiguë. Exemple : Tuple(String, UInt8) = deux colonnes contiguës
MapMap(K, V) = trois colonnes : Offsets ColUInt64, Keys K, Values V. Nombre de lignes dans Keys/Values = dernière valeur de Offsets
ArrayArray(T) = deux colonnes : Offsets ColUInt64, Data T. Nombre de lignes dans Data = dernière valeur de Offsets
NullableNullable(T) = deux colonnes : Nulls ColUInt8, Values T avec le même nombre de lignes. Nulls est un masque : 1=NULL, 0=valeur
UUIDAlias de FixedString(16), représenté en binaire
EnumAlias de Int8 ou Int16, chaque entier étant associé à une valeur String
LowCardinalityLowCardinality(T) = deux colonnes : Index T, Keys K où K est UInt8/16/32/64. Index contient les valeurs uniques, Keys contient les index vers Index
BoolAlias de UInt8 : 0=false, 1=true
Exemple : encodage Nullable
To encode [null, "", "hello", null, "world"]:
  Values: ["", "", "hello", "", "world"] (len: 5)
  Nulls:  [ 1,  0,       0,  1,       0] (len: 5)
Exemple : encodage LowCardinality
To encode ["Eko", "Eko", "Amadela", "Amadela", "Amadela", "Amadela"]:
  Index: ["Eko", "Amadela"] (String)
  Keys:  [0, 0, 1, 1, 1, 1] (UInt8)
Dernière modification le 25 juin 2026