Various architectural components of ORION-1 and ORION-1SX are described, and, where appropriate, a review of the current implementation is provided. The message handler receives all messages sent to the ORION system. The object subsystem provides high-level data management functions, including query optimization, schema management, long data management (including text search), and support for versionable objects, composite objects, and multimedia objects. The transaction management subsystem coordinates concurrent object accesses and provides recovery capabilities, using locking and logging techniques, respectively. The storage subsystem manages persistent storage of objects and controls the flow of objects between the secondary storage device and main memory buffers. In ORION-1, all subsystems reside in one computer. The ORION-1SX architecture is significantly different from ORION-1 in the management of shared data structures and distribution of these subsystems and their components (henceforth to be called a module). An ORION-1SX module may reside completely in the clients or in the server, or some parts of the module may reside in the clients and the remainder of the module in the server. This architecture is the consequence of the separation of memory address spaces between the server and clients, the dual-buffer management scheme, and the caching of objects and system structures.