IMS database
IMS数据库是IBM公司开发的两种数据库类型之一;
一种是关系数据库,典型代表产品:DB2;
另一种则是层次数据库,代表产品:IMS层次数据库。
下面介绍下IMS层次数据库:
IMS概述Information Management System
IMS是最早的大型数据库管理系统,其数据库模式是多个物
理数据库记录型(PDBR)的集合。每个PDBR对应层次数据模
型的一个层次模式,用一个DBD定义。各个用户所需数据的
逻辑结构称为外模式,每个外模式是一组逻辑数据库记录型
(LDBR)的集合。LDBR是应用程序所需的局部逻辑结构。用
户按照外模式操纵数据。
IMS的数据定义
IMS的数据定义包括数据库模式定义和外模式定义。
IMS的数据库模式是物理数据库记录型的集合。每个物
理数据库记录型对应于层次数据模型中的一个层次模式,
由一个DBD定义。物理数据库记录型到存储数据库的映
射包含在这个物理数据库记录型的DBD定义中。
IMS的外模式是逻辑数据库记录型的集合。每个逻辑数
据库记录型由一个PCB定义。一个逻辑数据库记录型到
IMS数据库模式的映射包含在这个逻辑数据库记录型的
PCB定义中。用户是按照外模式操纵数据的。
下边分别介绍数据库模式定义和外模式定义:
1 数据库模式定义
2 外模式定义
数据库模式定义
IMS的数据库模式是一组物理数据库记录型(PDBR型),
每个PDBR型是由若干相关联的片段型组成的一棵层次树结构。
它的一个根片段值及其后裔片段值构成了该PDBR型的一个值,
即数据库记录或实例。
每个PDBR型通过一个DBD语句群定义其逻辑结构及其存储结
构映像,IMS数据库模式的定义是一组DBD定义的排列。
在DBD定义过程中各片段型出现的次序决定了数据库各片段值
的存储次序,从而会影响到某些DL/1语句的执行结果。要求这
种次序与片段型在PDBR型树的层次顺序(自顶向下,自左向右)
保持一致。
(1)教学数据库的PDBR型及其一个实例.
(2)PDBR型的DBD定义,
(3)PDBD型各片段型的型码和片段的层次顺序值
外模式定义
外模式是各个用户所需数据的局部逻辑结构,是应用程序的
数据视图,一般地只涉及数据库的一部分,故需在PDBR型
的基础上分别定义。一个数据库模式有若干外模式,允许多
个应用程序共享一个外模式,但每个程序只能启动一个外模
式。一个外模式是一组逻辑数据库记录型(LDBR型)的集合,
记为PSB。一个LDBR型是某个PDBR型的子树,由一个PCB
定义。
外模式的定义遵循如下规则:
‘若外模式包含某个片断型,则必须包含其父片断型。’
下边说明一个逻辑数据库记录型是如何定义的。
(1)教学数据库的一个LDBR型
(2)LDBR型的PCB定义
用PCB定义一个逻辑数据库记录型LDBR
(1)PCB type=DB,DBDname=TS,KEYLENGH=10
(2)SENSEG name=dept,PROCopt=G
(3)SENSEG name=course,parent=dept,procopt=all
(4)SENSEG name=student,parent=course,procopt=r
IMS的数据操纵语言是DL/1。
用户使用某种高级语言(称为宿主语言)编程,
通过嵌入DL/1语句实现对数据库的存取。
DL/1命令
GU 检索某片段
GN 顺序检索下一片段
GNP 在当前父片段内检索下一片段
GHU 同GU, 为删改作准备
GHN 同GN, 为删改作准备
GHNP 同GUP, 为删改作准备
ISRT 插入片段
REPL 修改片段内容
DELT 删除某片段及其后裔
LOAD 初始加载一个片段
CHKP 建立检查点
SCHD 调度PSB
TERM 释放PSB
IMS的存储结构
IMS提供四种存储结构:
以下各存储结构的示例均以教学数据库PDBR为模型。
1.HSAM: 层次顺序访问方法,片段按层次顺序作物理邻接存储。
2.HISAM:层次索引顺序访问方法,
非根片段按层次顺序值升序邻接存储,
根片段用顺序域索引的方法组织并指向下属区域。
3.HDAM: 层次直接访问方法,片段的存储采用离散分布方式,
根片段用顺序域HASH方法组织,从根片段出发用指针
按层次顺序值的顺序把物理上分散的从属片段链接起来。
4.HIDAM:层次索引直接访问方法,类似于HDAM,不同的是,
根片段采用顺序域索引技术组织,而不是HASH方法。
故是HDAM和HISAM两种方法的混合。
根片段 从片段
HSAM 顺序邻接 顺序邻接
HISAM 索引法 顺序邻接
HDAM HASH法 链表
HIDAM 索引法 链表
免责声明:本站文字信息和图片素材来源于互联网,仅用于学习参考,如内容侵权与违规,请联系我们进行删除,我们将在三个工作日内处理。联系邮箱:chuangshanghai#qq.com(把#换成@)