HP Large Objects System Management Manual

HP Large Objects System Management Manual – 543599.001
after updating the database. In such cases, the active transaction is aborted.
When the transaction was started by the caller, the API indicates that it has
aborted the transaction by setting the parameter *pCallerTransAborted
to “1” in addition to returning a return value more indicative of the specific
problem. This flag is useful as not all error conditions cause the caller’s
transaction to be aborted.
Whenever return code 100 – System Error is returned by an API call, the
calling application should call GetSystemErrorString to get suitable diagnostic
information.
5.1.3 Considerations for Object Storage
There are a number of features of the Large Object system that should be considered
by the caller:
Storing or retrieving objects in user defined chunks is less efficient than
allowing the Large Object system to optimise the storage.
An application should call OpenBuddyGroup once on start-up, and then run
continuously storing, retrieving and deleting objects for that BuddyGroup
alone.
An instance of the Buddymon program should be running for each
BuddyGroup. The purpose of the Buddymon program is to act as a central
monitor process for each BuddyGroup. Buddymon re-opens storage which
has been marked as full by the core APIs, and marks full storage as closed so
that new processes do not attempt to use it. In a batch processing
environment, where BuddyGroups could be opened and closed, there is the
additional benefit that Buddymon keeps all the files open, making calls to
OpenBuddyGroup by other applications faster.
The Large Object system only allows writes at even numbered byte offsets.
An application can only efficiently store objects in a single BuddyGroup.
Therefore, if more than one BuddyGroup is required the application needs to
have some method of determining which BuddyGroup to use for creating new
objects. A solution is to have a controlling server that determines in which
group to store the object, and then passes the request on to dedicated servers
for each BuddyGroup. The controlling servers could round-robin the storage
requests, or decide the correct BuddyGroup based on application defined
criteria, for example, customer number or domain. Alternatively, a batch
program could perform all the operations for BuddyGroup A, close it, open
BuddyGroup B, and perform all the operations there. The key is not to
frequently open and close BuddyGroups.
5.1.4 Limitations
The Large Object scheme is node specific. If an application wishes to have
multi-node Large Object storage, it is necessary to have one instance of the
Large Object system installed on each node. Performance could be adversely
affected if network transactions are required.
The Large Object scheme allows a maximum of 99 BuddySets to be created
per BuddyGroup.
The Large Object scheme supports segment sizes in the range power 5 (32
bytes) to power 31 (approximately 1.8 GB).
Page 31 of 37