An in-memory storage manager represents
XML-compliant documents as a collection of objects in memory. The collection of objects allows the storage manager to manipulate the document, or parts of the document with a consistent interface and to provide for features that are not available in conventional
XML documents, such
as element attributes with types other than text and documents that contain binary rather than text information. In addition, in the storage manager, the
XML-compliant document is associated with a schema document which defines the arrangement of the document elements and attributes. The schema data associated with a document can contain a mapping between document elements and
program code to be associated with each element. The storage manager further has methods for retrieving the code from the element tag. The retrieved code can then be invoked using attributes and content from the associated element and the element then acts like a conventional object. Further, the storage manager allows real-time access by separate process operating in different contexts. The objects that are used to represent the document are constructed from
common code found locally in each process. In addition, the data in the objects is also stored in memory local to each process. The
local memories are synchronized by means of a
distributed memory system that continually equates the data copies of the same element in different processes.
Client-specified collections are managed by a separate collection manager. The collection manager maintains a
data structure called a “waffle” that represents the
XML data structures in tabular form. A
record set engine that is driven by user commands propagates a set of updates for a collection to the collection manager. Based on those updates, the collection manager updates index structures and may notify waffle users via the
notification system.