3 research outputs found

    Updating Complex Value Databeses

    Get PDF
    Query languages and their optimizations have been a very important issue in the database community. Languages for updating databases, however, have not been studied to the same extent, although they are clearly important since databases must change over time. The structure and expressiveness of updates is largely dependent on the data model. In relational databases, for example, the update language typically allows the user to specify changes to individual fields of a subset of a relation that meets some selection criterion. The syntax is terse, specifying only the pieces of the database that are to be altered. Because of its simplicity, most of the optimizations take place in the internal processing of the update rather than at the language level. In complex value databases, the need for a terse and optimizable update language is much greater, due to the deeply nested structures involved. Starting with a query language for complex value databases called the Collection Programming Language (CPL), we describe an extension called CPL+ which provides a convenient and intuitive specification of updates on complex values. CPL is a functional language, with powerful optimizations achieved through rewrite rules. Additional rewrite rules are derived for CPL+ and a notion of deltafication is introduced to transform complete updates, expressed as conventional CPL expressions, into equivalent update expressions in CPL+. As a result of applying these transformations, the performance of complex updates can increase substantially

    Object-Oriented Query Language Design and Processing

    Get PDF
    This thesis proposes an object-oriented query language that is more powerful than many existing query languages. The language is formally specified and its expressive power is demonstrated by giving four translation schemes from other prominent object-oriented query languages. Further, this query language can be supported by a query algebra and both the query language and query algebra can be optimised using meaning preserving transformation rules. Object-Oriented Query Languages. The functional requirements of high-level object-oriented query languages are identified and they combine as well as supplement features found in existing object-oriented query languages. Effectively they formulate a query model against which existing query languages can be evaluated and compared. An evaluation of four representative query languages chosen from research prototypes and commercial products shows that none satisfies all the requirements. On the basis of the requirements a new query language, object comprehensions, is developed to provide a concise, clear, powerful, and optimisable query language for object-oriented databases. Some optimisation opportunities for the novel features are identified. A set of translation schemes from the query languages studied to object comprehensions is presented. Such translations demonstrate that object comprehensions are at least as powerful as these query languages and a system supporting object comprehensions can potentially support multiple query languages by providing translations to object comprehensions. Algebraic Support. The canonical algebra provides an abstract execution engine with which object comprehension queries can be expressed using algebraic operations. The translation scheme from object comprehensions to the canonical algebra is very simple and is no for supporting queries involving mixed collection classes The canonical algebra shares many operations with other query algebras and is formally specified. A set of transformation rules that can be used for optimisation is presented whose validity can be verified given the formal specification. Formal Data Model. The data model which forms the basis of investigation is formally defined using the specification language Z. This reference data model captures all the essential features of existing object-oriented data models including multiple inheritance. However, unlike existing data models, it also supports a generalised form of method over-loading. Static type checking of such overloaded methods is studied in this thesis
    corecore