首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Vast+产品展厅 | Vastbase如何处理集合数据类型?

集合数据类型是数据库系统中一种复杂的数据,它将基础类型组合成的元素按照内部组织进行存储。用户在使用时,可以通过内部函数或位置坐标来获取所需的数据,也可以进行相应的修改,该数据类型在Oracle应用中被广泛使用。

Vastbase提供了一个实现集合数据类型的技术方案,用户可以在Vastbase数据库中使用Oracle的集合数据类型,实现对Oracle数据库的高度兼容性。本文将详细介绍其实现原理。

集合数据类型中,数据存储的基本单位被称为数据元素,每个数据元素都是同样的数据类型,用户可以通过每个元素的唯一索引来访问该元素。

集合数据类型的三种子类型:

associative array

VARRAY

nested table

这三种子类型的存储及访问逻辑基本一致,可使用相同的内部结构进行存储。结构的定义如下:

      Node collection_type{

      Type node_type

      Range type_name

      Int element_limit

      Type element_type

      Type index_type

}

*node_type为集合数据类型

通过该类型区分三种子类型

子类型的差异

Vastbase数据库中,集合数据类型的创建和使用,与Oracle有一定相似性。

总体技术框架如图所示:

2.1

Vastbase集合数据类型的创建

类型创建使用三种不同的语法规则来实现,并将三种语法保存到存储结构中,之后统一进行处理。

三种类型的创建语法实现如下:

1

associative array

associative array类型只能作用于存储过程(函数)内部,声明语法如下:

TYPE type_name IS TABLE OF element_type INDEX BY index_type

语法说明

type_name:声明的类型名,用于保存类型名

element_type:其中的元素类型,用于保存元素类型

index_type:索引类型(可选数字或字符串),用于保存索引类型

node_type:通过宏定义为associative array类型

element_limit:表示总元素数,在该类型中未指定,赋值为-1,用于标识‍

通过上述操作,可将associative array的类型定义转换为内部的存储形式。

2

VARRAY

VARRAY类型可以作用于存储过程(函数)内部schema中,声明语法如下:

TYPE type_name IS VARRAY(element_limit)OF element_type

语法说明

type_name:为声明的类型名,用于保存类型名

element_type:为其中的元素类型,用于保存元素类型

element_limit:表示该类型中可以存储的总的元素数,表示总元素数

node_type:通过宏定义为VARRAY类型

index_type:用于保存索引类型,在该类型下默认为数字类型

通过上述操作,可将VARRAY的类型定义转换为内部存储的形式。

3

Nested table

Nested table类型可以作用于存储过程(函数)内部schema中,声明语法如下:

TYPE type_name IS TABLE OF element_type

语法说明

type_name:为声明的类型名,用于保存类型名

element_type:为其中的元素类型,用于保存元素类型

node_type:通过宏定义为nested table类型

index_type:用于保存索引类型,此类型默认为数字

element_limit:表示总元素数,在该类型中未指定,赋值为-1,用于标识‍

通过上述操作,可将nested table的类型定义转换为内部存储的形式。

获得集合类型的存储结构之后,使用统一的处理入口,根据节点类型的不同分别进行处理。

对于associative array类型,因为其只作用于存储过程或函数,所以将信息保存到存储过程的变量栈中;对于其他类型,则将信息保存到数据库的系统表中。

2.2

Vastbase集合数据类型的使用过程

使用过程中,对于三种子类型而言,在Vastbase数据库中基本一致,显著的区别在于associative array类型支持字符串类型的位置索引。

在数据库中,可通过下述流程增加字符串索引的处理,流程如图所示:

集合类型的其余操作均与Vastbase数据库中数组类型的操作一致。

通过上述方案,Vastbase数据库可以有效支持集合数据类型,用户进行数据处理时更加得心应手。

并且能够对含有集合类型的Oracle数据库语句有效兼容、无需进行修改。简化了数据库迁移的应用改造难度,使得应用迁移过程更加平滑顺畅,为用户提供更加良好的使用体验。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OkF3k639mquWW3E5TSEWGO6A0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券