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

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

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


1、集合数据类型基本介绍

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

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

  • associative array
  • VARRAY
  • nested table

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

        Node collection_type{

        Type node_type

        Range type_name

        Int element_limit

        Type element_type

        Type index_type

}

2、Vastbase集合数据类型的创建与使用

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数据库语句有效兼容、无需进行修改。简化了数据库迁移的应用改造难度,使得应用迁移过程更加平滑顺畅,为用户提供更加良好的使用体验。

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值