什么是复杂数据类型

2020-12-30



什么是复杂数据类型(Complex Data Types)?
 
我们从定义开始。复杂数据类型时由原始数据类型组成的内嵌数据结构。这些数据结构也可以由其他复杂数据类型构成。一些复杂数据类型的例子,包括结构(行),数组/列表,图和并集。
 
基本所有编程语言都支持复杂数据类型,包括Python、C++和Java。也有一些数据库支持复杂数据类型,比如PostgreSQL,在其8.0版本就包含了复杂数据类型。
 
当然,Vertica也是支持的。我们所做的,不仅仅查询ORC和Parquet中的复杂数据类型,是一个更加丰富,完整的支持,更加快速,不需要首先把这些文件转换成一个更大的行或者列格式。
 
复杂类型例子:
 
Array-array是一个相同数据类型的元素的集合。可以是int、float或者任何一种字符串(string、char、varchar这些)或者其他复杂类型。Array这个数据类型和Java的arraylist非常类似。



Map-map数据类型是一些键值对。这种数据类型给键赋予了一个值。举个例子,一个城市会被赋予一个邮政编码或者说电话号。
 
在Vertica中,map中的键和值的数据类型不必相同。然而键只能是基础数据类型(不能是复杂数据类型)。而值可以是任何一种array支持的数据类型。



Array和map的复杂数据类型也被叫做“collections”。
 
Struct-struct是一种复合的数据类型,可以包括其他复杂和简单数据类型。Struct中的数据类型不需要相同(和array一样)。这种灵活性使得用户可以在同一个名字下将多种数据类型结合起来。

这是一个struct的例子,SimpleCustomer是一个struct,其中包含了varchar类型的name和int类型的id。




内嵌复杂数据类型
 
即使你觉得这样已经够复杂了,不妨设想一下,在复杂数据类型中,再嵌套复杂数据类型。



现在,你是不是明白他们为什么叫复杂数据类型了?