You are on page 1of 29

Efficient Adabas Access

ADABAS Access
* Select the correct access method. * Code it efficiently.

READ PHYSICAL READ BY ISN (GET) READ LOGICAL FIND HISTOGRAM

Natural Commands
READ Physical

Data Storage
Use when reading more than 20% of the records in a file Generally least expensive method to read all records Only update if Potential double updates will not be a problem

Restartability not a problem


Safest to run when file not being updated
3

ADABAS Access READ PHYSICAL

Access to Data Storage only. Records returned in the order they are stored physically in Data Storage

* Can results in 4 I/Os (1 per block) & 14 ADABAS Calls * Order of records returned: 2,1,14,3,5,12,4,6,7,8,11,9,20,21
4

Natural Commands
READ by ISN Address Converter

Data Storage

Use when reading more than 20% and some updating ISN use ensures no double updates & no missed updates ISN may be used as restart point Second fastest access method

Used when updating file but not one for one with the outside loop
5

ADABAS Access READ BY ISN

Access to Address Converter & Data Storage Records returned in ascending ISN order
125 128 128 125 126 126 0 127 125 126 0 127 0 127 0 127 0 128 0 0 128

Natural Commands
READ Logical
1

Inverted List
Address Converter
3

Data Storage

Use when reading 1 record or a small range of records Returned in sorted order by index read Be careful when updating read key fields
7

ADABAS Access READ LOGICAL

Returns records in sequence by Descriptor, Sub-, or Super-Descriptor Accesses Inverted List, Address Converter, and Data Storage Useful for reading small portion of a file Consistent performance
8

ADABAS Access - READ LOGICAL


LAST-NAME ADAMS BAKER BROWN CARLSON COUNT 3 1 2 3 2 4 1 3 ISNS 5 9 6 7

2 0 0

1 0

4 0

1 0

2 0

2 0

4 0

1 0

3 0

0 0

2 ADAMS 4 BAKER 8 CARLSON FREE PADDING 1 BROWN 6 BROWN 5 ADAMS PADDING

9 ADAMS 3 CARLSON

FREE
7 CARLSON FREE

Natural Commands
FIND

Memory Inverted List Address Converter


3 1 or 1 4 or 4

Work
2

Data Storage

10

Natural Commands
FIND

Useful for accessing small groups of records with

one or more selection criteria Returns records in *ISN sequence A FIND which selects a set of records > 51 will generate I/O to work part 3 Complex FINDs can generate I/O to work part 2

11

Natural Commands
FIND Simple find (algorithm 1):

LAST-NAME = BROWN
Moderate complexity (algorithm 2): LAST-NAME = BROWN OR JONES Complex FIND (algorithm 4): FIND PERSONNEL WITH AGE > #AGE AND SEX = #SEX AND VET-STATUS = V
12

ADABAS Access - FIND


Selects a set of records & returns that set in ISN sequence Access Inverted List & select set of records which meet search criteria If number of ISNs > 51, ADABAS uses Work DS Access Address Converter to obtain DS RABN
13

ADABAS Access - FIND


Read block from Data Storage & locate record Repeat for each ISN in the list FIND SORTED BY - avoid when possible Non descriptor search criteria - ensure it is not primary criteria

14

ADABAS Access - FIND


FIND PERSONNEL WITH NAME = ADAMS
Value ADAMS BAKER CHARLES DAVENPORT DAVIS Count 4 3 3 2 2 ----------------------ISNs---------------------------------------------------------------------------------- 2 7 9 12 1 3 20 5 6 8 11 21 4 14

125 128 128

125 126

126 0

127 125

126 0

127 0

127 0

127 0

128 0

0 128

15

ADABAS Access - FIND


FIND PERSONNEL WITH NAME = ADAMS
Value ADAMS BAKER CHARLES DAVENPORT DAVIS Count 4 3 3 2 2 ----------------------ISNs---------------------------------------------------------------------------------- 2 7 9 12 1 3 20 5 6 8 11 21 4 14

Access Inverted List for value ADAMS.

125 125 128 126 128

126 0

127 125

126 0

127 0

127 0

Results in ISN list 127 2, 7, 9, 12 0 128 of


0 0 128

16

ADABAS Access - FIND


FIND PERSONNEL WITH NAME = ADAMS
Value ADAMS BAKER CHARLES DAVENPORT DAVIS Count 4 3 3 2 2 ----------------------ISNs---------------------------------------------------------------------------------- 2 7 9 12 1 3 20 5 6 8 11 21 4 14

125 128 128

125 126

126 0

127 125

126 0

127 0

127 0

127 0

128 0

0 128

Access Address Converter to obtain RABN.

17

ADABAS Access - FIND


FIND PERSONNEL WITH NAME = ADAMS
Value ADAMS BAKER CHARLES DAVENPORT DAVIS Count 4 3 3 2 2 ----------------------ISNs---------------------------------------------------------------------------------- 2 7 9 12 1 3 20 5 6 8 11 21 4 14

Access Data Storage to retrieve record.


127 0 128 0 0 128

125 128 128

125 126

126 0

127 125

126 0

127 0

127 0

18

ADABAS Access - FIND


FIND IN PERSONNEL WITH LAST-NAME = ADAMS THRU DAVIS

Access Inverted List for ADAMS, BAKER, CHARLES, DAVENPORT, and DAVIS Form ISN list: 1,2,3,4,5,6,7,8,9,11,12,14,20,21. This merging is additional work not required by READ LOGICAL. Access Address Converter and Data Storage. Records NOT returned in name order!
19

ADABAS Access - FIND


Should only be used if no work file I/O is involved (<51 records). Useful for multiple, non-contiguous values of descriptor (NAME = SMITH OR = CARROLL OR = JONES). Trade offs between READ logical and FIND.
20

Natural Commands
HISTOGRAM Inverted List

Use when only descriptor, sub-descriptor or super descriptor components needed


Use for validation of data

21

ADABAS Access HISTOGRAM


Only has Access to the Inverted Lists. Returns two items: Value of descriptor Number of records which have that value ISNs are NOT returned to Natural even though theyre in the inverted lists.
Sex
Value Count 234 293

F M

1. Returns value of F and -----------ISNs------------------------------------------------------------------------------------------------------------------ 2 3 7 9 10 11 15 16 17 21 25 1 4 5 6 8 12*NUMBER = 234 13 14 18 19 20

22

ADABAS Access HISTOGRAM


Beginning and Ending Values Usually Specified. Efficient way to determine if a particular value exists for a descriptor. Efficient way to determine how many records have a particular value for a descriptor. If all data for requirements is available in Inverted List - Use HISTOGRAM or FIND

NUMBER
23

Direct Calls
How records are accessed by ADABAS

Direct Call
L1 L2 L3 L9

Action Performed
READ by ISN READ physical READ logical HISTOGRAM

24

Direct Calls
How records are accessed by ADABAS

Direct Call
L4 L5 L6

Action Performed
READ by ISN w/ hold READ physical w/ hold READ logical w/ hold

25

Direct Calls
How records are accessed by ADABAS

Direct Call
S1 S4 A1/A4 N1/N4 E1/E4
26

Action Performed
FIND FIND w/ hold UPDATE STORE DELETE

ADABAS Access - SUMMARY


GET - Reread Record HISTOGRAM - All required data available in
Inverted List

READ PHYSICAL - More than 20% of file and no


updates

READ BY ISN - More than 20% of file and updates FIND - Multiple, non-contiguous values of
descriptor; Small set of records; sequence not important

READ LOGICAL - Most others


27

Natural 4 and Adabas


Dynamic change of reading direction within an active READ or HISTOGRAM processing loop. Dynamic repositioning within a READ processing loop. New comparators LESS/GREATER THAN and LESS/GREATER EQUAL for READ and HISTOGRAM statements. Support of Multi-Fetch in FIND, HISTOGRAM and READ statements. New keyword TO that enables end of range condition (ENDING AT) to be controlled by the database itself. Support of the Adabas Transaction Manager.

28

Questions

?
29

You might also like