Flex 表

Flex 表是一种不同类型的数据库表,专为加载和查询中的非结构化数据(又称半结构化数据)而设计。Flex 表允许您将具有不同架构或不断发展的架构的数据加载到单个表中。然后,您可以浏览这些数据并从中实现实际列。

如果您知道数据中的某些列,则可以定义它们。具有实际列的 Flex 表称为混合表。Flex 表和混合表均为受到全面支持的表,存储为投影,并具有与您的数据库相同的 K-safety。

创建 Flex 表后,无需指定架构即可快速加载数据。这允许您加载任意 JSON 数据、日志文件和其他半结构化数据并立即开始查询。

创建 Flex 表与创建其他表类似,只不过列定义是可选的。创建 Flex 表时,无论该表有没有列定义,Vertica 都会将一个名为 __raw__ 的实际列隐式添加到表中。此列存储所加载的数据。__raw__ 列为带有 NOT NULL 约束的 LONG VARBINARY 列。其中包含适用于其所属数据类型的已记录限制(请参阅 长数据类型)。__raw__ 列的默认最大宽度为 130,000 字节(具有 32,000,000 字节的绝对最大值)。您可以借助 FlexTableRawSize 配置参数更改默认宽度。

如果您创建没有其他列定义的 Flex 表,该表包含第二个默认列 __identity__,声明为自动递增的 IDENTITY (1,1) 列。如果没有定义其他列,Flex 表将 __identity__ 列用于分段和排序。

将数据加载到 Flex 表中可将记录编码为 VMap 类型并填充 __raw__ 列。VMap 属于标准的字典类型,以虚拟列的形式将键与字符串值配对。

Flex 表术语

Flex 表具有以下特殊词汇:

  • VMap:内部映射数据格式。

  • 虚拟列:Flex 表 __raw__ 列中包含的键值对。

  • 实际列:除了 flex (VMap) 列之外定义的显式列。

  • 已提升列:已被实体化为实际列的虚拟列。

  • 映射键:VMap 数据中的虚拟列名。