Object Repository Overview

An Object Repository is a Heap object containing zero or more bindings. Each binding is composed of an AIS Word data value and followed by an object reference key, allowing ObjectRepository values to be referenced and modified by object key. The ObjectRepository values are NOT stored in memory; instead, they are stored on disk. (Note: ObjectRepository key values are NOT restricted to Symbol objects, and may be references to any AIS heap object).

An Object Repository may be created with the following syntax:

(setq gor (new ObjectRepository: "myarchive.odb"))

When to Use

The ObjectRepository data type is used to save any object closure of any size and complexity.

Constant Form

The Object Repository Native data type is a container that holds a Word data value and an object reference key. It has no constanct form, but its contents may be modified or deleted using Object Repository Transactions.

Object Data Types

The ObjectRepository is a Heap Object or an Object Data Type. The Analytic Information Server Object Types are stored in the Heap and are managed by the Heap manager. The Analytic Information Server Heap manager supports object resizing, garbage collection, and anti-fragmentation algorithms so that the user may concentrate on the analysis and modeling of data rather than on memory management. Without exception, all of the Object types are identified by an object id. The object id identifies a block of memory, managed by the Lambda Information Server memory manager, in which the Object's data is stored.

The Analytic Information Server Heap Object and Native Data types can be saved and loaded to and from persistent (disk file) storage at any time. Containers with immediate data are saved on disk in fixed length records equal to the size of the container. Containers with Heap object references are saved in fixed length records, which are automatically expanded to include the contents of the Heap object, and any objects referenced by the Heap object, etc. This feature is called Object Closure Management and is automatic with every Analytic Information Server container database save.

Analytic Information Server containers may be loaded from any database repository record at any time. If the data in the record is immediate, the database load fills the container with the immediate data. If the data in the record is an object closure, the database load fills the container with a Heap object reference, and all of the objects in the record are loaded back into the Heap with the same referential relationships they had when they were saved in the repository.


Data Type Functions

The ObjectRepository object can be demonstrated by the following functions.

abortTransaction addMethod attachLibrarian beginTransaction
checkPointTransaction clear commitTransaction compareEQ
compareGE compareGT compareLE compareLT
compareNE compare comparison defmethod
delete detachLibrarian exportTab importTab
inspect isIdentical isImmediate isTransaction
isType length loadRepository methodsOf
new refLibrarian ref rename
saveImmediate saveRepository send set
setf setq sizeof type


Data Type Examples

The ObjectRepository object can be demonstrated by the following examples.

Example_ObjectRepository_abortTransaction_001 Example_ObjectRepository_addMethod_026 Example_ObjectRepository_attachLibrarian_001 Example_ObjectRepository_beginTransaction_001
Example_ObjectRepository_checkPointTransaction_001 Example_ObjectRepository_clear_002 Example_ObjectRepository_commitTransaction_001 Example_ObjectRepository_compareEQ_021
Example_ObjectRepository_compareEQ_022 Example_ObjectRepository_compareGE_021 Example_ObjectRepository_compareGE_022 Example_ObjectRepository_compareGT_021
Example_ObjectRepository_compareGT_022 Example_ObjectRepository_compareLE_021 Example_ObjectRepository_compareLE_022 Example_ObjectRepository_compareLT_021
Example_ObjectRepository_compareLT_022 Example_ObjectRepository_compareNE_021 Example_ObjectRepository_compareNE_022 Example_ObjectRepository_compare_021
Example_ObjectRepository_compare_022 Example_ObjectRepository_comparison_021 Example_ObjectRepository_comparison_022 Example_ObjectRepository_defmethod_023
Example_ObjectRepository_delete_013 Example_ObjectRepository_detachLibrarian_001 Example_ObjectRepository_exportTab_001 Example_ObjectRepository_importTab_001
Example_ObjectRepository_inspect_002 Example_ObjectRepository_isIdentical_019 Example_ObjectRepository_isImmediate_001 Example_ObjectRepository_isType_021
Example_ObjectRepository_length_016 Example_ObjectRepository_loadRepository_001 Example_ObjectRepository_methodsOf_023 Example_ObjectRepository_new_014
Example_ObjectRepository_refLibrarian_001 Example_ObjectRepository_ref_030 Example_ObjectRepository_ref_031 Example_ObjectRepository_ref_032
Example_ObjectRepository_ref_033 Example_ObjectRepository_ref_034 Example_ObjectRepository_rename_001 Example_ObjectRepository_saveImmediate_001
Example_ObjectRepository_saveRepository_001 Example_ObjectRepository_send_026 Example_ObjectRepository_setf_001 Example_ObjectRepository_setf_002
Example_ObjectRepository_setq_027 Example_ObjectRepository_sizeof_027 Example_ObjectRepository_type_024