Ims Db 简明教程

IMS DB - Secondary Indexing

当我们想访问数据库而不使用完整的串联键,或者当我们不想使用顺序主键字段时,将使用辅助索引。

Index Pointer Segment

DL/I 在单独的数据库中存储指向索引数据库段的指针。索引指针段是辅助索引中唯一一种类型。它由以下两个部分组成 -

  1. Prefix Element

.

  1. Data Element

Prefix Element

索引指针段的前缀部分包含指向索引目标段的指针。索引目标段是可使用辅助索引访问的段。

Data Element

数据元素包含构建索引的索引数据库中段的关键值。这也称为索引源段。

以下是有关辅助索引的重点注意事项 -

  1. 索引源段和目标源段不必相同。

  2. 当我们建立辅助索引时,它将由 DL/I 自动维护。

  3. DBA 会根据多个访问路径定义许多辅助索引。这些辅助索引存储在单独的索引数据库中。

  4. 我们不应该创建更多的辅助索引,因为它们会对 DL/I 施加额外的处理开销。

Secondary Keys

重点注意事项:

  1. 建立辅助索引的索引源段中的字段被称为辅助键。

  2. 任何字段均可用作辅助键。它不必是段顺序字段。

  3. 辅助键可以是索引源段内单个字段的任何组合。

  4. 辅助键值不一定是唯一的。

Secondary Data Structures

重点注意事项:

  1. 当我们构建辅助索引时,数据库的明显层次结构也会改变。

  2. 索引目标段变为明显的根段。如下图所示,即使工程段不是根段,它也变为根段。

  3. 由辅助索引造成的数据库结构的重排被称为辅助数据结构。

  4. 辅助数据结构不会对磁盘上存在的数据库主物理结构做出任何更改。它只是一种在应用程序之前改变数据库结构的方法。

secondary data structure

Independent AND Operator

重点注意事项:

  1. 在辅助索引中使用 AND (* 或 &) 运算符时,它称为受控 AND 运算符。

  2. 独立的 AND (#) 允许我们指定依赖 AND 不可能完成的限定条件。

  3. 该运算符只能用于索引源段依赖于索引目标段的辅助索引。

  4. 可以使用 SSA 编码独立 AND 来指定,根据两个或多个依赖源段中的字段来处理目标段的发生。

01 ITEM-SELECTION-SSA.
   05 FILLER           PIC X(8).
   05 FILLER           PIC X(1) VALUE '('.
   05 FILLER           PIC X(10).
   05 SSA-KEY-1        PIC X(8).
   05 FILLER           PIC X   VALUE '#'.
   05 FILLER           PIC X(10).
   05 SSA-KEY-2        PIC X(8).
   05 FILLER           PIC X   VALUE ')'.

Sparse Sequencing

重点注意事项:

  1. 稀疏排序也称为稀疏索引。我们可以使用稀疏排序从索引中删除一些索引源段,使用辅助索引数据库。

  2. 稀疏排序用于提高性能。当不使用索引源段的一些发生时,我们可以将其删除。

  3. DL/I 使用抑制值、抑制例程或两者来确定是否应对段进行索引。

  4. 如果索引源段中顺序字段的值与抑制值相匹配,则不会建立索引关系。

  5. 抑制例程是评估段并确定是否应为其编制索引的用户编写的程序。

  6. 当使用稀疏索引时,它的函数由 DL/I 处理。我们不需要在应用程序中为它做出特殊规定。

DBDGEN Requirements

如前面模块中所讨论的,DBDGEN 用于创建 DBD。当我们创建辅助索引时,涉及两个数据库。DBA 需要使用两个 DBDGEN 创建两个 DBD,用于在已编制索引的数据库和辅助索引数据库之间建立关系。

PSBGEN Requirements

为数据库创建辅助索引后,DBA 需要创建 PSB。面向程序的 PSBGEN 指定 PROCSEQ 参数中数据库的正确处理顺序的 PSB 宏。对于 PROCSEQ 参数,DBA 编码辅助索引数据库的 DBD 名称。