Description |
Object intensive applications require persistence of complex objects. Many of these applications also use vast amounts of data, often exceeding a machine's virtual memory, MetaStore is a portable, persistent object system designed to solve these problems.; MetaStore uses the metaprogramming facilities of the metaobject protocol to add persistence to the Common Lisp Object System. This approach leaves the semantics of CLOS unchanged, requires only minimal syntactic changes to existing programs, and needs no compiler support. In the resulting language, programmers can define both classes and slots to be persistent. MetaStore then handles persistence at the metaobject level. MetaStore focuses on the persistence of passive data by providing a virtual object memory. It tries to keep an appropriate number of objects in memory to maintain system performance at an acceptable level, and allows programmers to tune performance by specifying object and slot clustering, MetaStore currently supports only limited aspects of class evolution. MetaStore addresses a range of issues in implementing persistence, including object identity, addressing mechanisms, shared objects and structures, dirty bits, queries, transaction management, version control. object base garbage collection, and object clustering. Based on the initial implementation of MetaStore, we show performance measurements and propose improvements to the metaobject protocol of CLOS. CDRS CAD system, an object-intensive application at Evans & Sutherland Computer Corp., will soon be ported to MetaStore. |