A strongly typed persistent object store
Malcolm P. Atkinson, Alan Dearle, Ronald W. Morrison
Abstract
Malcolm P. Atkinson, Alan Dearle, Ronald W. Morrison
Abstract
If we examine present day computer systems we find many dichotomies and discontinuities in their design. We contend that the present dependence on a plethora of mechamisms increases the cost of understanding and maintaining software for even the simplest of activities. It is important to remove this incoherence now since it is placing a considerable overhead on the users and developers of computer systems. We report on our current research on programming languages and environments and propose a Persistent Information Space Architecture (PISA) capable of integrating all activities. We have identified the following problems faced by users of current systems which when negated become requirements of modern systems in order to achieve simplicity and integration. These are controlling complexity, orthogonal persistence, controlled system evolution, protection of data and concurrent computation. We do not regard this list as exhaustive. The complexity of the system must be kept under control, so that developers and users can concentrate on the application rather than the complexity of the system. This depends on establishing consistent rules which apply throughout the design and being parsimonious in the introduction of new concepts into these designs. The discontinuity between the method of using data that is short term and manipulated by program and long term data that is manipulated by the file system or DBMS causes unnecessary complexity. We have defined the persistence of data to be the length of time for which the data exists and is useable. We aspire to systems where the use of data is independent of its persistence. The uses of data (including program) are neither limited nor predictable. It is necessary to support the construction of unanticipated software systems or databases which make use of pre-existing data (or program) even when the data and program were defined independently of one another. For large scale, widely or continuously used systems any alteration to part of the system should not require total rebuilding. We require a mechanism which will allow the programmer to control the units of reconstruction. Some large bodies of data are inherently valuable. It is necessary to protect them from misuse from hardware and software failure. This implies both a type and protection system to meet all users needs together with recovery mechanisms to limit the losses due to component failure. A large body of data requires a community effort for its construction and maintenance. Any useful body of data is likely to be of concurrent interest to many users, probably in dispersed geographic locations. Different models of concurrency and transactions may have to be accommodated by the underlying mechanism. We have designed and implemented the language PS-algol as a testbed for experiments on the above requirements. We report here on some results and propose further experiments in the search for better programming systems. Central to our aim of building a total system capable of providing for all programming activity in an integrated manner is our persistent information space. This space is made up of objects which may be simple or highly structured and are part of the universe of discourse defined by the type system of the PISA architecture. The type system must therefore be rich enough to satisfy all our requirements. This we recognise as a research challenge. The information is persistent; the programmer has no knowledge of where the data resides. This may be locally in main store or disk, or remotely in non-local stores. The programmer is relieved of the burden of organising the physical storage of data in the system and presented with a conceptually simple model of data. The mechanisms for binding in the persistent information space are those of the name space together with those used for introducing names in the architecture language. At present we feel that it is premature to construct mechanisms and protocols for concurrency and transactions. We subscribe to the view that it is more sensible to build in a primitive for synchronization and a mechanism for specifying non-deterministic parallel computation and to construct the required protocols out of them by layers of abstraction. The reason for this is that although all of the protocols may be built out of the primitives it is not obvious that they form a hierarchy. At a lower level the persistent information space is supported by a stable store mechanism for reliability. The stable store may be distributed over many storage devices and processors and it is currently the focus of some research to build such a system. The approach proposed is to design the environment and the language as a coherent whole. The initial steps outlined in this paper are sketches of the way certain facilities, such as flexible binding, reliable and long term storage currently provided by the operating system may be profitably specified as part of a language. Elsewhere we publish work where we demonstrate that this approach is feasible.
A significance statement is not available in the OpenAlex record.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
If we examine present day computer systems we find many dichotomies and discontinuities in their design. We contend that the present dependence on a plethora of mechamisms increases the cost of understanding and maintaining software for even the simplest of activities. It is important to remove this incoherence now since it is placing a considerable overhead on the users and developers of computer systems. We report on our current research on programming languages and environments and propose a Persistent Information Space Architecture (PISA) capable of integrating all activities. We have identified the following problems faced by users of current systems which when negated become requirements of modern systems in order to achieve simplicity and integration. These are controlling complexity, orthogonal persistence, controlled system evolution, protection of data and concurrent computation. We do not regard this list as exhaustive. The complexity of the system must be kept under control, so that developers and users can concentrate on the application rather than the complexity of the system. This depends on establishing consistent rules which apply throughout the design and being parsimonious in the introduction of new concepts into these designs. The discontinuity between the method of using data that is short term and manipulated by program and long term data that is manipulated by the file system or DBMS causes unnecessary complexity. We have defined the persistence of data to be the length of time for which the data exists and is useable. We aspire to systems where the use of data is independent of its persistence. The uses of data (including program) are neither limited nor predictable. It is necessary to support the construction of unanticipated software systems or databases which make use of pre-existing data (or program) even when the data and program were defined independently of one another. For large scale, widely or continuously used systems any alteration to part of the system should not require total rebuilding. We require a mechanism which will allow the programmer to control the units of reconstruction. Some large bodies of data are inherently valuable. It is necessary to protect them from misuse from hardware and software failure. This implies both a type and protection system to meet all users needs together with recovery mechanisms to limit the losses due to component failure. A large body of data requires a community effort for its construction and maintenance. Any useful body of data is likely to be of concurrent interest to many users, probably in dispersed geographic locations. Different models of concurrency and transactions may have to be accommodated by the underlying mechanism. We have designed and implemented the language PS-algol as a testbed for experiments on the above requirements. We report here on some results and propose further experiments in the search for better programming systems. Central to our aim of building a total system capable of providing for all programming activity in an integrated manner is our persistent information space. This space is made up of objects which may be simple or highly structured and are part of the universe of discourse defined by the type system of the PISA architecture. The type system must therefore be rich enough to satisfy all our requirements. This we recognise as a research challenge. The information is persistent; the programmer has no knowledge of where the data resides. This may be locally in main store or disk, or remotely in non-local stores. The programmer is relieved of the burden of organising the physical storage of data in the system and presented with a conceptually simple model of data. The mechanisms for binding in the persistent information space are those of the name space together with those used for introducing names in the architecture language. At present we feel that it is premature to construct mechanisms and protocols for concurrency and transactions. We subscribe to the view that it is more sensible to build in a primitive for synchronization and a mechanism for specifying non-deterministic parallel computation and to construct the required protocols out of them by layers of abstraction. The reason for this is that although all of the protocols may be built out of the primitives it is not obvious that they form a hierarchy. At a lower level the persistent information space is supported by a stable store mechanism for reliability. The stable store may be distributed over many storage devices and processors and it is currently the focus of some research to build such a system. The approach proposed is to design the environment and the language as a coherent whole. The initial steps outlined in this paper are sketches of the way certain facilities, such as flexible binding, reliable and long term storage currently provided by the operating system may be profitably specified as part of a language. Elsewhere we publish work where we demonstrate that this approach is feasible.
Key concepts: Computer science, Persistent data structure, Overhead (engineering), Data structure, Simplicity, Software, Software engineering, Distributed computing