Efficient Adabas Access 2 ADABAS Access READ PHYSICAL READ BY ISN (GET) READ LOGICAL FIND HISTOGRAM...

29
Efficient Adabas Access

Transcript of Efficient Adabas Access 2 ADABAS Access READ PHYSICAL READ BY ISN (GET) READ LOGICAL FIND HISTOGRAM...

Efficient Adabas Access

2

ADABAS Access

• READ PHYSICAL

• READ BY ISN (GET)

• READ LOGICAL

• FIND

• HISTOGRAM

* Select the correct access method.

* Code it efficiently.

3

Natural CommandsREAD 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

4

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* 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* Order of records returned: 2,1,14,3,5,12,4,6,7,8,11,9,20,21

5

Natural CommandsREAD by ISN

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

Address Converter

6

ADABAS Access - READ BY ISN

• Access to Address Converter & Data Storage• Records returned in ascending ISN order

125 125 126 127 126 127 127 127 128 0128 126 0 125 0 0 0 0 0 128128 …

7

Natural CommandsREAD Logical

Inverted List

Address Converter 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

1

2

3

4

8

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

9

ADABAS Access - READ LOGICAL

2 1 4 1 2 2 4 1 3 00 0 0 0 0 0 0 0 0 00 …

LAST-NAME COUNTADAMS 3 2 5 9BAKER 1 4BROWN 2 1 6CARLSON 3 3 7 8

ISNS

4 BAKER 8 CARLSON FREE2 ADAMS PADDING1 BROWN 6 BROWN 5 ADAMS PADDING9 ADAMS FREE3 CARLSON 7 CARLSON FREE

10

Natural CommandsFIND

Inverted List

Address Converter

Work

Data Storage

Memory1 or 1

2

3

4 or 4

11

Natural CommandsFIND

• 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

12

Natural CommandsFIND

• 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’

13

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

14

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

15

ADABAS Access - FINDFIND PERSONNEL WITH NAME = ‘ADAMS’FIND PERSONNEL WITH NAME = ‘ADAMS’

125 125 126 127 126 127 127 127 128 0128 126 0 125 0 0 0 0 0 128128 …

Value Count ----------------------ISNs---------------------------------------------------------------------------------- ADAMS 4 2 7 9 12 …

BAKER 3 1 3 20

CHARLES 3 5 6 8

DAVENPORT 2 11 21

DAVIS 2 4 14

16

ADABAS Access - FINDFIND PERSONNEL WITH NAME = ‘ADAMS’FIND PERSONNEL WITH NAME = ‘ADAMS’

125 125 126 127 126 127 127 127 128 0128 126 0 125 0 0 0 0 0 128128 …

Value Count ----------------------ISNs---------------------------------------------------------------------------------- ADAMS 4 2 7 9 12 …

BAKER 3 1 3 20

CHARLES 3 5 6 8

DAVENPORT 2 11 21

DAVIS 2 4 14

Access Inverted Access Inverted List for value List for value ADAMS.ADAMS.

Results in ISN Results in ISN list of 2, 7, 9, 12list of 2, 7, 9, 12

17

ADABAS Access - FINDFIND PERSONNEL WITH NAME = ‘ADAMS’FIND PERSONNEL WITH NAME = ‘ADAMS’

125 125 126 127 126 127 127 127 128 0128 126 0 125 0 0 0 0 0 128128 …

Value Count ----------------------ISNs---------------------------------------------------------------------------------- ADAMS 4 2 7 9 12 …

BAKER 3 1 3 20

CHARLES 3 5 6 8

DAVENPORT 2 11 21

DAVIS 2 4 14

Access Address Access Address Converter to Converter to obtain RABN.obtain RABN.

18

ADABAS Access - FINDFIND PERSONNEL WITH NAME = ‘ADAMS’FIND PERSONNEL WITH NAME = ‘ADAMS’

125 125 126 127 126 127 127 127 128 0128 126 0 125 0 0 0 0 0 128128 …

Value Count ----------------------ISNs---------------------------------------------------------------------------------- ADAMS 4 2 7 9 12 …

BAKER 3 1 3 20

CHARLES 3 5 6 8

DAVENPORT 2 11 21

DAVIS 2 4 14

Access Data Access Data Storage to Storage to retrieve record.retrieve record.

19

ADABAS Access - FIND

• 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!

FIND IN PERSONNEL WITH LAST-NAME = ‘ADAMS’ FIND IN PERSONNEL WITH LAST-NAME = ‘ADAMS’ THRU ‘DAVIS’THRU ‘DAVIS’

20

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.

21

Natural CommandsHISTOGRAM

Inverted List

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

• Use for validation of data

22

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 they’re in the inverted lists.

Sex Value Count -----------ISNs------------------------------------------------------------------------------------------------------------------

F 234 2 3 7 9 10 11 15 16 17 21 25 …

M 293 1 4 5 6 8 12 13 14 18 19 20 …

1. Returns value 1. Returns value of ‘F’ and of ‘F’ and *NUMBER = 234*NUMBER = 234

23

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

24

Direct CallsHow records are accessed by ADABAS

Direct Call Action Performed

L1 READ by ISN

L2 READ physical

L3 READ logical

L9 HISTOGRAM

25

Direct CallsHow records are accessed by ADABAS

Direct Call Action Performed

L4 READ by ISN w/ hold

L5 READ physical w/ hold

L6 READ logical w/ hold

26

Direct CallsHow records are accessed by ADABAS

Direct Call Action Performed

S1 FIND

S4 FIND w/ hold

A1/A4 UPDATE

N1/N4 STORE

E1/E4 DELETE

27

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

28

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.

29

Questions

?