Natural-Adabas

Tuesday, June 20, 2006

Using Adabas

3
35
USING ADABAS
Generally, ADABAS uses between 10% and 50% of the data processing resources (disk storage,
CPU time, elapsed processing time) used by other database management systems. Since fewer
hardware facilities are used, more can be accomplished with less. Very large online applications
using several gigabytes of data have been successfully implemented, with thousands of terminal
workstations, and with the response times and the cost of much smaller systems.
Accessing a Database from Programs
ADABAS access is field-oriented: user programs access and retrieve only the fields they need.
User program statements invoke ADABAS search and retrieval operations automatically.
Direct Call Interface
ADABAS provides a powerful and flexible set of direct call commands for performing database
operations. ADABAS direct call commands provide a direct interface to the ADABAS database
when NATURAL or another fourth-generation database language is not being used.
The commands can be categorized by function:
􀀀 Database query
􀀀 Read (Data Storage or Associator)
􀀀 Database modification
􀀀 Logical transaction processing
􀀀 Special commands
ADABAS Concepts and Facilities 3
36
Database Query Commands (Sx)
Database query commands (S1/S4, S2, S5)) search for and return the ISNs of specified records
or record groups according to specified search criteria. Other commands in this category (S8,
S9) sort the resulting ISN lists in preparation for later operations.
The ISN lists resulting from any Sx command may be saved on the ADABAS Work dataset for
later retrieval during the user session.
In most cases, these commands do not actually read the database; ISNs are read directly from
the Associator’s inverted lists. Options allow the ISN’s record to be placed in hold status to
prevent it from being updated by other programs until the record is released; if desired,
additional field values contained in the first ISN’s record can be read from Data Storage.
Read Commands (Lx)
The L1 through L6 commands are used to read actual records from Data Storage. Depending
on the specified command and its options, records are read individually
􀀀 in the sequence in which they are stored;
􀀀 in the order of an ISN list created by one of the database query commands; or
􀀀 in logical sequence according to a user-specified descriptor.
See page 39 for more information about sequential access methods.
A hold option allows the database records to be locked until released by a separate command
or at transaction end.
The L9 and LF commands read information directly from the Associator inverted lists or File
Definition Tables (FDTs), returning either the inverted list values for a specified descriptor or
the field definitions for a specified file in the database.
Database Modification Commands (A1, E1, N1/N2)
Database modification commands (A1, E1, and N1/N2) change, delete, or add database records
and update the related Associator lists accordingly. ISNs can be assigned to new records either
by the user or by ADABAS.
The inverted lists and the Address Converter are automatically maintained by ADABAS. When
the user supplies a new value for a descriptor, either in a new record or as part of a record update,
ADABAS performs all necessary maintenance of the inverted lists. When a new record is added
or a record is deleted, the Address Converter is appropriately updated. These operations are
completely transparent to the user.
Using ADABAS 3
37
Logical Transaction Control Commands (ET/BT)
An ADABAS logical transaction defines the logical start (BT) and end (ET) of the database
operation being performed. If the user operation or ADABAS itself terminates abnormally,
these commands provide the capability for restarting a user, beginning with the last
unsuccessfully processed transaction. ET/BT commands
􀀀 define the transaction start and end;
􀀀 restore pretransaction conditions if a situation occurs that prevents successful completion of the
transaction; and
􀀀 read program-specified user data written during the transaction sequence.
Programs that use these commands are called ET logic programs. Although not required,
Software AG recommends that you use ET logic. See page 44 for more information about
transaction logic.
Special Commands
Special commands perform many of the “housekeeping” functions required for maintaining the
ADABAS database environment. Commands in this group
􀀀 open (OP) and close (CL) a user session (but do not control a transaction);
􀀀 write data protection information and checkpoints (C1, C5); and
􀀀 set (HI) and release (RI) record hold status.
In addition, the RC command releases one or more command IDs currently assigned to a user,
or deletes one or all global format IDs.
The RE command reads user data previously stored in an ADABAS system file by CL or ET
commands.
ADABAS Concepts and Facilities 3
38
Complex Searches
In many large database systems, the time required to process complex searches is often
excessive. ADABAS efficiently solves this problem. Many ADABAS applications are currently
in use with up to 150 complex selection criteria created dynamically. Data is retrieved
immediately from files with more than 50 million records.
Multifile Searching
It is often necessary to perform a multifile search in order to resolve an inquiry. Multifile
searching can be accomplished using multiple search commands, physically coupled files, or
soft file-coupling. See page 21 for information about coupled files.
Multiple search commands may be used in which a value retrieved in one command is used as
the search value for the next command. This process is not restricted to two files.
Multi-index Searching
“Fuzzy” matching (i.e., retrieving data based on similar rather than on exact search criteria)
can be implemented using hyperdescriptors. Hyperdescriptors allow multiple virtual indexes,
meaning that several different search index entries can be made for a single data field. See page
34 for information about hyperdescriptors.
Using ADABAS 3
39
Access Methods
ADABAS supports both sequential and random access methods. Different calls use different
ADABAS access paths and components; the most efficient method depends on the kind of
information you want and the number of records you need to retrieve.
Sequential Access
Physical sequence retrieves every record in a file in the order the records are stored in Data
Storage. You can limit the fields within each record for which values are to be returned. You can
also specify a “start” ISN: the sequential pass then begins at the first record physically located
after the record identified by the specified ISN.
ADABAS bypasses the Associator and goes directly to Data Storage, reading the first data block
(or the first record following a specified ISN) and continuing in consecutive sequence until the
last block is read. Physical sequence is the fastest way to process a large volume of records.
User
Program ADABAS
Nucleus
I/O Buffer
Work Area
Inverted
List
Data
Storage
Returns field values
Read
Physical
L2/L5
Address
1 Converter
4
2
3
Figure 2-9: Read in Physical Sequence (L2/L5)
ADABAS Concepts and Facilities 3
40
ISN sequence retrieves records in ISN order. ADABAS uses database query commands (Sx) to
build and sort ISN lists, which can then be read using L1/L4 commands with the GET NEXT
option. When reading, ADABAS uses the Address Converter to find the RABNs of each ISN
in the list and then reads and returns the records from Data Storage.
User
Program ADABAS
Nucleus
I/O Buffer
Work Area
(Sx ISN List)
Inverted List
Data
Storage
Returns field values
Read by ISN
Sx, L1/L4
Address
Converter
1
6
2
5
4
3
Figure 2-10: Read in ISN Sequence (L1/L4)
Logical sequence retrieves records by descriptor value. ADABAS finds the value(s) in the
inverted list, uses the Address Converter to find the RABNs of the ISNs related to the value, and
retrieves the records from Data Storage.
User
Program ADABAS
Nucleus
I/O Buffer
Work Area
Inverted
List
Data
Storage
Returns field values
Read Logical
L3/L6
Address
1 Converter
6
2
5
4
3
Figure 2-11: Read in Logical Sequence (L3/L6)
Using ADABAS 3
41
Reading in logical sequence retrieves all the records related to a single value or a range of values
of the specified descriptor. It returns the records sorted in ascending/descending order by
descriptor value, and in ascending/descending ISN order within each value. You can specify a
starting and ending value. You can also specify the field(s) for which values are returned. Read
logical is useful when you want the returned records sorted on a particular field.
ADABAS provides a special read command (L9) to determine the range of values present for
a descriptor, and the number of records that contain each value. Such a retrieval is called a
“histogram”. The L9 command does not require any access to data records, only to the inverted
lists stored in the Associator.
User
Program ADABAS
Nucleus
I/O Buffer
Work Area
Inverted
List
Data
Storage
Returns count of ISNs for each value
READ
VALUES FOR
descriptor
Address
Converter
1
4
2
3
Figure 2-12: Read Descriptor Values (L9)
Random Access
ADABAS uses the S1/S2/S4 commands to select records that satisfy a search criterion: the
count of the records found and a list of their ISNs is returned. The S1/S4 commands return the
ISNs in ascending sequence; the S2 command allows you to specify a sort sequence for the
returned ISNs.
The search criterion may comprise
􀀀 one or more fields in a single file;
􀀀 fields contained in two or more physically coupled files; or
􀀀 search, read, and internal list matching based on the soft coupling feature.
ADABAS Concepts and Facilities 3
42
A search criterion may contain one or more fields that are not defined as descriptors. If
nondescriptors are used, ADABAS performs read operations to determine which records to
return to the user. If only descriptors are used within the search criterion, ADABAS resolves the
query by using the Associator inverted lists; no read operation is required.
Random Access Using the ADABAS Direct Access Method (ADAM)
Note:
The ADAM feature is available on mainframe platforms only.
The ADABAS Direct Access Method (ADAM) improves random access performance on a
particular descriptor field in a file. ADAM uses the field value to compute the relative block
address (RABN) for record storage. The ADAM descriptor may also be used like any other
descriptor within a selection criterion, and for logical sequential processing as well. This option
may be selected for any given file when the file is loaded into the database.
Customer ID=17802
Customer–ID=
17802
Randomizer
ADAM
Data Block 1
Data Block 2
Data Block 3
Customer File
Data Storage
RABN
Figure 2-13: ADABAS Direct Access Method (ADAM)
Using ADABAS 3
43
Using Triggers and Stored Procedures
The ADABAS triggers and stored procedures facility is an integral part of ADABAS; however,
NATURAL (see page 102) and ADABAS ONLINE SYSTEM (see page 71) are required to use
the facility.
A procedure is a NATURAL subprogram that is written and tested using standard NATURAL
facilities.
􀀀 A trigger is a procedure that is executed automatically by ADABAS when a specified set of
criteria is met. The set of criteria is determined for each command sent to ADABAS and is based
on the target file number and optionally the command type and/or field. The command type
refers to the commands FIND, READ, STORE, UPDATE, and DELETE. The field must be in
the corresponding Format Buffer of the command.
􀀀 A stored procedure is executed by ADABAS, but is invoked directly by a special user call from
any of a number of applications that use it. Storing programs that are used by multiple clients
in an ADABAS file on the server reduces the amount of data traffic to and from the server.
The same types of parameters are passed to the subprogram whether it is a trigger or a stored
procedure.
The ADABAS facility for triggers and stored procedures allows you to implement and maintain
both types of procedures. It resides within ADABAS and provides an extension to an
application. It can be used to
􀀀 implement various security and auditing features for an application; and
􀀀 provide a consistent, central environment where data can be verified or manipulated, either
manually by the application or automatically by ADABAS when triggers are defined.
ADABAS Concepts and Facilities 3
44
Maintaining Database Integrity
ADABAS provides facilities to ensure the logical consistency of data in a competitive updating
environment and when a user or ADABAS session is interrupted.
Facilities are available for both online and traditional batch update. For online,
transaction-oriented processing, ADABAS ensures that the database is free of incomplete
transactions. For batch mode updating, ADABAS ensures restart in the event of failure by
providing checkpointing and backout/regeneration of updates.
Transaction Logic
ADABAS data protection, recovery, and user restart are based on the concept of a “logical
transaction”: the smallest unit of work (as defined by the user) that must be performed in its
entirety to ensure that the information contained in the database is logically consistent.
A logical transaction may comprise one or more ADABAS commands that together perform the
database read/update required to complete a logical unit of work. A logical transaction begins
with the first command that places a record in hold status and ends when an ET (end transaction),
BT (back out transaction), CL (close), or OP (open) command is issued for the same user.
The OP (open) or RE (read ET data) commands can be used to retrieve user restart data stored
by the ET or CL command. This data is also written to the ADABAS data protection log with
each checkpoint written by the transaction and can be read using the ADASEL utility.
The ET command must be issued at the end of each logical transaction. Successful execution
of an ET command ensures that all the updates performed during the transaction are physically
applied to the database, regardless of subsequent user or ADABAS session interruption.
Updates performed during transactions for which ET commands are not successfully executed
are backed out, either manually by issuing the BT command or automatically by the
Autobackout routine (see page 48).
Competitive Updating
Competitive updating is in effect when two or more users (in multiuser mode) are updating the
same ADABAS file(s). The ADABAS facilities used to ensure data integrity in a competitive
updating environment include record hold/release, avoidance of resource deadlock, and
exclusive control updating.
Using ADABAS 3
45
Record Hold and Release
The ADABAS Record Hold facility ensures that a record will not be updated by more than one
user at a time. A user can put the record in “hold” status (that is, the ISN of the record is put in
the Hold Queue) using the commands S4 (find with hold), L4/L5/L6 (read with hold), A1/E1
(update/delete) with the hold option specified, N1/N2 (add record with hold), or HI (hold
record).
If a record requested for hold status is already being held by another user or utility, the user
issuing the record hold command is put in “wait” status until the record becomes available, at
which time ADABAS reactivates the command. You may request that a response code be
returned if you do not want to be put in “wait” status.
Records in “hold” status can be accessed (found and read) by users who do not seek to hold the
record.
Records in “hold” status are released by issuing the ET or CL commands. Options are available
with ET and BT commands to release records selectively. The CL command releases all records
in “hold” status for the issuing user.
Avoiding Resource Deadlock
Resource deadlock occurs when two users are each waiting for a record held by the other user.
ADABAS protects against such a user deadlock situation by detecting the potential deadlock
and returning a response code to the second user after putting the first user in “wait” status.
Exclusive Control Updating
Users who use logical transaction commands (ET/BT) are called ET logic users.
Alternatively, a user can request exclusive control of one or more ADABAS files for the duration
of the user session. If the file or files for which exclusive control is requested are not already
opened for update by another user or utility, exclusive control is granted and the user becomes
an exclusive update (EXU) user. ADABAS treats EXU users as non-ET logic users.
ADABAS does not place an ISN in “hold” status for EXU users. ADABAS disables hold logic
processing for files being updated under exclusive file control.
Instead of using ET commands, EXU users can request checkpoints to act as reference points;
for example, updates applied after a checkpoint can be removed.
ADABAS Concepts and Facilities 3
46
Timeout Controls
ADABAS times out
􀀀 transactions that exceed a specified limit; and
􀀀 users who are inactive for a specified amount of time.
Transaction Time Limit
ADABAS provides a transaction duration time limit for ET logic users. The time limit is set with
the ADARUN TT parameter; an override for a specific user can be set using the OP command.
If a transaction exceeds the prescribed limit, ADABAS generates a BT (back out transaction)
command to remove all the updates performed during the transaction and release all held
records. The user can then either repeat the backed out transaction from the beginning or begin
another transaction.
Non-Activity Time Limit
All users are subject to a non-activity time limit; different limits can be set for different user
types and for specific users within each user type.
If a user exceeds the prescribed limit and the user is
􀀀 an ET logic user, ADABAS backs out the current transaction, releases all held records and
command IDs, and deletes the user’s file list.
􀀀 an EXU user, ADABAS deletes the user’s file list and releases all command IDs. The user loses
his EXU user status and becomes an access-only user.
􀀀 an access-only user, ADABAS deletes the user’s file list.
Using ADABAS 3
47
Backout, Recovery, and Restart
Backout, recovery, and restart may be required when a user or ADABAS session is interrupted
due to a timeout (see page 46); a program error when ADABAS determines that a transaction
cannot be completed successfully; an ADABAS, hardware, or operating system failure; or a
power failure.
A “user session” is a sequence of ADABAS calls optionally starting with an open (OP)
command and ending with a close (CL) command. A “user” is either a batch mode program or
a person using a terminal. The uniqueness of each user is assured by the user ID, a machine, an
address space, and a terminal ID.
An “ADABAS session” starts when ADABAS is activated and continues until ADABAS is
terminated. During this time, the ADABAS nucleus creates a sequence of protection entries in
exact historical sequence reflecting all modifications made in the database. The sequence of
protection entries is written to the Work dataset (part 1) and to a protection log in blocks. Each
block contains the nucleus session number, a unique block number, and a time stamp.
User Program Error
A user program that is in the middle of a transaction can detect that the transaction cannot be
completed successfully. In this case, a BT (back out transaction) command is used to remove
or “back out” the incomplete transaction.
If a user program error causes logical damage to the database, it may be necessary to recover
the affected files using the ADASAV and ADARES utilities.
ADABAS, Hardware, or Operating System Failure
After any failure that causes the ADABAS nucleus to terminate abnormally, an automatic
procedure is executed when ADABAS is reactivated to bring the database to a physically and
logically valid status. All partially executed update commands are reset; all incomplete
transactions are backed out.
The automatic procedure comprises three steps: repair the database, Autorestart, and
Autobackout.
􀀀 Database repair modifies the database to the status it would have had if a buffer flush had just
been completed at the time of failure. That is, all blocks in the database are at a status that
enables the nucleus to perform normally.
ADABAS Concepts and Facilities 3
48
􀀀 Autorestart backs out updates of single update commands that were partially executed when the
system failed. It resolves internal inconsistencies in the database and ensures physical integrity.
􀀀 Autobackout, which is performed only for ET logic users, backs out updates of user transactions
that were partially executed when the system failed. ADABAS performs an internal BT (back
out transaction) followed by Autorestart, and then informs the user that the last transaction has
been backed out.
The Autobackout routine is executed at the end of an ET session that was terminated with HALT.
It is also executed automatically at the beginning of the next ADABAS session to remove any
updates performed within transactions that did not complete successfully.
After Autobackout execution, the database contains updates only from logically complete
transactions.
Note:
ET users can manually back out an incomplete transaction at any time by issuing the BT (back
out transaction) command. See page 44.
If an ADABAS, hardware, or operating system failure results in physical damage to the
database, it may be necessary to recreate the database using the ADASAV and ADARES
utilities.
Power Failure
Depending on the hardware, a power failure during an I/O operation may damage the ADABAS
blocks that were being processed. This damage cannot be detected during Autorestart and
therefore can result in problems later such as unexpected response codes or lost database
updates.
If the ADARUN IGNDIB=YES parameter is set, the Autorestart routine checks whether a buffer
flush was active when the session interruption occurred. If a buffer flush was in process, the
Autorestart shuts down and ADABAS alerts the user to the potential problem and includes a list
of the files being updated when the buffer flush was in process. The DBA must then determine
whether a power failure occurred.
If the cause of a session interruption
􀀀 is a power failure, Software AG strongly recommends recovering the affected files using the
ADASAV and ADARES utilities.
􀀀 is definitely not a power failure and the integrity of the information on the output hardware can
be guaranteed, the database can be reactivated immediately. Database recovery is not necessary.

0 Comments:

Post a Comment

<< Home