Developed at the

Polish-Japanese Institute of Information Technology

Chair of Software Engineering

© Copyright by the ODRA team, © Copyright by PJIIT



Supported by European Commission under the 6th FP projects:

e-Gov Bus, IST-4-026727-ST

VIDE, IST 033606 STP




SBA and SBQL home pages, ODRA papers






(Object Database for Rapid Application development)

Description and Programmer Manual




by Kazimierz Subieta and the ODRA team






The document is a complete user manual for the object-oriented database management system ODRA  (Object Database for Rapid Application development), including its Virtual Repository Management System (VRMS). VRMS allows for virtual integration of distributed, heterogeneous, redundant and fragmented data and service resources into a centralized, homogeneous, non-redundant and non-fragmented whole. The specification includes installation and administration manual, general architecture of the software, integrated development environment, description of an object-oriented data model, specification of database query and programming language SBQL (Stack-Based Query Language), virtual updateable views, sessions and transactions, a client-server protocol, and various front end and back end interoperability facilities implemented for ODRA.



Table of Contents


1.  Introduction


2.  Overview of ODRA, SBQL and interoperability facilities

    2.1  Purpose and Scope of the System ODRA

    2.2  Architecture of ODRA and Applications Based on ODRA

    2.3  Overview of the ODRA Integrated Development Environment

    2.4  Overview of the ODRA Object-Oriented Data Model

    2.5  Overview of SBQL

    2.6  Overview of Virtual Updatable Views

    2.7  Overview of Back-End Interoperability Facilities

    2.8  Overview of Front-End ODRA Application Programming Interfaces


3.  Getting Started

    3.1  ODRA Operational Environment

    3.2  ODRA Installation Guide

    3.3  Your First Tiny Object Base

    3.4  Your First SBQL Queries and Programs

    3.5  Using Integrated Development Environment


4.  ODRA Object-Oriented Store Model

    4.1  Modules

    4.2  Objects, Nested Objects

    4.3  Structures

    4.4  Collections and Cardinalities

    4.5  Links

    4.6  Procedures, Functions and Transactions


    4.8  Classes, Inheritance, Polymorphism, Types and Schemata


5. ODRA Integrated Development Environment

    5.1  Text Editor

    5.2  Installing and Running

    5.3  General IDE Information

    5.4  Working with Projects

    5.5  Working with an ODRA Server

    5.6  Compiling and Running

    5.7  ODRA IDE CLI (Command Line Interface)

    5.8  More Samples


6. SBQL (Stack-Based Query Language) - Queries

    6.1 Basic Pragmatic, Syntactic and Semantic Assumptions

    6.2 Strong Type Checking

    6.3 Results returned by SBQL Queries

    6.4 Atomic SBQL Queries

    6.5 SBQL Operators - Summary

    6.6 Numerical and String Operators

    6.7 Comparison Operators

    6.8 Boolean Operators

    6.9 Date Operators and Comparisons

    6.10 Algebraic Operators on Collections

    6.11 Aggregate Functions

    6.12 Non-algebraic operators

    6.13 Auxiliary Naming Operators

    6.14 Explicit and Implicit Type Conversions and Dereferences

    6.15 Conditional operator (if…then…else…)

    6.16 Ordering Operator

    6.17 Range Operators

    6.18 Transitive Closures

    6.19 Function, Procedure, and Method Calls


7.  SBQL Imperative Statements

    7.1  Variable Declarations

    7.2  Object Creation

    7.3  Assignment

    7.4  Insertion

    7.5  Create and Insert

    7.6  Deletion

    7.7  Program Control Statements

    7.8  For Each Statement

    7.9  Exceptions



8.  SBQL Procedures

    8.1 Procedures and Functional Procedures

    8.2 Parameters of Procedures

    8.3 Local Variables

    8.4 Return from a Functional Procedure

    8.5 Examples of Procedures

    8.6 Functional Procedures as Database Views

    8.7 Recursive Procedures and Methods


9.  SBQL Classes, Methods and Bidirectional Pointers

    9.1  Class Invariants

    9.2  Syntax of Class Declaration

    9.3  Declaration of Class Instances

    9.4  Substitutability

    9.5  SBQL Operators Specific to the Object Model with Classes

    9.6  Bidirectional Pointers


10.  SBQL Updatable Views

    10.1  General Idea of SBQL Updatable Views

    10.2  Seeds of Virtual Objects

    10.3  Operators on Virtual Objects

    10.4  Nested Views (sub-views)

    10.5  Virtual Pointers

    10.6  Local Objects Within Views

    10.7  Syntax of SBQL Views


11.  Transactions


12. XML Importer and Exporter

   12.1 Introduction

   12.2 Importing XML Using CLI Command line

   12.3 XML Import Procedure

   12.4 Examples of XML Files and Queries


13. Web Services Backend and Frontend

   13.1 ODRA Web Services Proxies

   13.2 Web Services Dynamic Invocation Interface

   13.3 Web Services Endpoints


14. Generic Wrapper to Relational Databases

   14.1 Wrapper Architecture

   14.2 Adding and Querying Wrappers

   14.3 Top-Down Usage Scenario

   14.4 Bottom-Up Usage Scenario

   14.5 Type Mapping

   14.6 Wrapper Configuration and Running


15. Interoperability with Java and .NET

   15.1 Accessing Java Libraries via Reflection

   15.2 Java Object Base Connectivity (JOBC)

   15.3 .NET Object Base Connectivity for ODRA (NOBC)


16. ODRA Web Components

   16.1 Page Definition

   16.2 Data Source Definition

   16.3 Bar-Line Chart Component

   16.4 News Component

   16.5 Poll Component

   16.6 Table Component

   16.7 Text Label Component


17. ODRA Distributed Database

   17.1 The Idea of Distributed Databases

   17.2 Database Links

   17.3 Virtual Repository


18. ODRA Indexing

    18.1 General Idea of ODRA indexing

    18.2 Index Management – creating and removing

    18.3 Query optimization tips

    18.4 Examples


19.  ODRA Access Control

    19.1 The Main Idea of the Access Control Mechanism

    19.2 Roles and Logging

    19.3 Working in ODRA

    19.4 Permissions

    19.5 Implementation


Annex A: Methodology for Making a Virtual Repository under ODRA

    A.1 Design of the Virtual Repository Class Diagram Schema




Last modified: August 14, 2008