Efficient Adabas Access ADABAS Access * Select the correct access method. * Code it efficiently. • • • • • 2 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 6 125 126 … 126 0 127 125 126 0 127 0 127 0 127 0 128 0 0 128 Natural Commands READ Logical 1 2 4 Inverted List Address Converter Data Storage 3 • 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 2 0 0 1 0 … 4 0 1 0 COUNT 3 1 2 3 2 0 2 0 ISNS 5 9 2 4 1 3 4 0 6 7 1 0 8 3 0 2 ADAMS 4 BAKER 8 CARLSON FREE PADDING 1 BROWN 6 BROWN 5 ADAMS PADDING 9 ADAMS 3 CARLSON 9 FREE 7 CARLSON FREE 0 0 Natural Commands FIND Memory 1 or 1 Inverted List 4 or 4 Work Address Converter 2 3 10 Data Storage 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 125 128 128 15 Count 4 3 3 2 2 125 126 … ----------------------ISNs---------------------------------------------------------------------------------- 2 7 9 12 … 1 3 20 5 6 8 11 21 4 14 126 0 127 125 126 0 127 0 127 0 127 0 128 0 0 128 ADABAS Access - FIND FIND PERSONNEL WITH NAME = ‘ADAMS’ Value ADAMS BAKER CHARLES DAVENPORT DAVIS 125 125 128 126 128 … 16 Count 4 3 3 2 2 126 0 ----------------------ISNs---------------------------------------------------------------------------------- 2 7 9 12 … 1 3 20 5 6 8 11 21 4 14 Access Inverted List for value ADAMS. 127 125 126 0 127 0 127 0 Results in ISN list 127 of 2, 7,1289, 12 0 0 0 128 ADABAS Access - FIND FIND PERSONNEL WITH NAME = ‘ADAMS’ Value ADAMS BAKER CHARLES DAVENPORT DAVIS 125 128 128 17 Count 4 3 3 2 2 125 126 … ----------------------ISNs---------------------------------------------------------------------------------- 2 7 9 12 … 1 3 20 5 6 8 11 21 4 14 126 0 127 125 126 0 127 0 127 0 127 0 128 0 0 128 Access Address Converter to obtain RABN. ADABAS Access - FIND FIND PERSONNEL WITH NAME = ‘ADAMS’ Value ADAMS BAKER CHARLES DAVENPORT DAVIS 125 128 128 18 Count 4 3 3 2 2 125 126 … ----------------------ISNs---------------------------------------------------------------------------------- 2 7 9 12 … 1 3 20 5 6 8 11 21 4 14 Access Data Storage to retrieve record. 126 0 127 125 126 0 127 0 127 0 127 0 128 0 0 128 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 they’re in the inverted lists. Sex Value F M 22 Count 234 293 1. Returns value of ‘F’ and -----------ISNs------------------------------------------------------------------------------------------------------------------ 2 3 7 9 10 11 15 16 17 21 25 =18 23419 20 1 4 5 6 8 12*NUMBER 13 14 … … 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 24 Direct Call Action Performed L1 READ by ISN L2 READ physical L3 READ logical L9 HISTOGRAM Direct Calls How records are accessed by ADABAS 25 Direct Call Action Performed L4 READ by ISN w/ hold L5 READ physical w/ hold L6 READ logical w/ hold Direct Calls How records are accessed by ADABAS 26 Direct Call Action Performed S1 FIND S4 FIND w/ hold A1/A4 UPDATE N1/N4 STORE E1/E4 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