% File:    dbplenv.tex
% Author:  F. Matthes, JWS, Peter Niebergall
% Date:    18-AUG-1991
% Title:   DBPL System and Environment; DAIDA book chapter
%
\documentstyle[lncs,xple_indnt,epsf]{article}


\newcommand{\nfnf}[1]{NF$^2$}
\newcommand{\e}[1]{{\em #1\/}}
\newcommand{\kw}[1]{{\sl #1}}
\newcommand{\k}[1]{{\bf #1}}
%MAC \newcommand{\pictures}[4]{\mbox{%
%MAC \special{picture #3 scaled #4}\hspace*{#1}\rule{0cm}{#2}}}

\pagestyle{empty}

\title{DBPL: The System and its Environment}
\author{Florian Matthes \and Joachim W.\ Schmidt}
\date{{\small University of Hamburg \\
      Department of Computer Science\\
      Schl\"uterstra{\ss}e 70 \\
      D-2000 Hamburg 13, FRG \\
      \verb$matthes,schmidt@dbis1.informatik.uni-hamburg.de$}}

\begin{document}
\maketitle
\footnotetext[1]{This work was supported by the European Commission under
ESPRIT contract~\# 892 (DAIDA).}

\begin{abstract} 
The DBPL system and its environment support the modular implementation of
advanced data-intensive applications based on integrated database and
programming language technology. It provides state-of-the-art system support
at application compile-, link- and run-time as well as tools for incremental
application evolution.
\end{abstract}
\thispagestyle{empty}

\section{System Support for Data-Intensive Applications}

Databases have proven to be the keystones for the majority of application
systems with a wider functionality, utilization and availability.
Therefore, the development of integrated language and system support for the
definition, execution and maintenance of data-intensive applications gained
substantial interest over the past years
\cite{BJMSV89,BMSW89,DAIDA88,JMW*90,AtBu86}. Essentially, this support
concentrates on three major goals:  
\begin{itemize}
\item	improved data integrity;
\item	enhanced program efficiency;
\item	increased user productivity.
\end{itemize}

As expected, substantial progress towards these goals requires contributions from
several key areas of computer science, in particular from  
\begin{itemize}
\item	language and compiler technology;
\item	optimization strategies in searching, computing and scheduling; and 
\item	formal specification schemes for relevant properties of data and programs.
\end{itemize}

The database programming language project DBPL approaches the above goals
essentially by the 
\begin{itemize}
\item	linguistic quality of the DBPL interfaces for data definition and manipulation;
\item	distinctiveness of the DBPL system implementation; and
\item	richness of the DBPL environment.
\end{itemize}

It turns out to be crucial for data-intensive applications to distribute the
supported tasks appropriately over \e{time}. While application \e{design time}
profits from the availability of powerful abstraction mechanisms for data and
transaction definition, \e{compile time} support is essential for (partial)
correctness and consistency, proper error reporting, interface checking and certain
classes of optimizations. \e{Run time} support is vital for global efficiency within
and among transactions as well as for long-term data integrity. Finally, the
extremely long \e{lifetime} of most data-intensive applications requires permanent
support for incremental data and program modification and partial redesign.

While the DBPL language is discussed elsewhere (see, 
e.g.~\cite{MaSc89,ScMa90,ScMa90a} and the chapter on ``Modular and Rule-Base
Database Programming in DBPL'' in this volume), this paper concentrates in
section 2 on the presentation of DBPL's compile time support and in
section 3 on the DBPL run time system. Section 4 describes how advanced
incremental compilation technology can be exploited for long-term program
and system evolution in a tightly coupled interactive programming
environment. Further details of the system components are described in DBPL
and DAIDA technical reports (e.g.~\cite{DAIDA1,DAIDA2,NiSc89}). The paper
closes with an outlook on current research in next-generation DBPL
environments.

As of today, the DBPL system exists in two fully source code compatible
implementations, VAX/VMS DBPL and Sun DBPL. Both are written entierly in Modula-2
and consist of a compilation and a run time environment. The run time system is
highly portable and runs under VAX/VMS 6.1, SunOS 4.1, IBM AIX 3.1 and IBM OS/2. All
operating system dependend code is factored out into four modules for main
memory management, block-oriented file input and output, exception handling
and error message handling. The DBPL compilers generate native code for VAX,
respectively Sparc, Motorola and Intel architectures. Both DBPL systems can be
integrated deeply into the DAIDA environment and into commercially available
software development environments (NSE \cite{NSE89}, SCCS, CMS).

\begin{figure}
\centerline{\epsfxsize=\textwidth\epsfbox{dbpl-compiler.ps}}
\caption{Overall DBPL system architecture}
\label{dbpl-system} \end{figure}

\begin{figure}
\centerline{\epsfxsize=12cm\epsfbox{dbpl-sizes.ps}}
\caption{Relative DBPL system component sizes}
\label{dbpl-sizes} \end{figure}

Figure~\ref{dbpl-system} depicts the overall DBPL system architecture. The left
hand side of Fig.~\ref{dbpl-system} sketches how a DBPL program module is
first translated by the DBPL compiler then linked with other compiled DBPL
modules yielding executable object code. This object code interacts through the
interface module \kw{DBPLRTS} with the various layers of the DBPL run time 
system (\kw{PSMS, CTMS, CPMS, CRDS, SMS}; see Sec.~\ref{run-time}). Database
objects are stored in files accessed through operating system calls issued by
the layer \kw{SMS}.

Fig.~\ref{dbpl-system} also outlines the interaction between two DBPL
applications running against shared databases. This sharing is achieved
by importing the same database module(s) into two different programs. Concurrent
access to database objects requires a synchronization that is achieved by
explicit message passing at three layers of the DBPL system (\kw{CTMS, CRDS, SMS})
via \kw{LMS} services. A centralized scheduling process guarantees serializable
transaction execution for DBPL applications, possibly running on different network
nodes in a DECnet or TCP/IP local area network.

% -------------------------------------------------------------------

\input{dbplenv2}

\input{dbplenv3}

\input{dbplenv4}

% -------------------------------------------------------------------

\section{On Next-Generation DBPLs}

The DBPL system demonstrates how very expressive and orthogonal database
programming languages can be implemented by a judicious combination of
today's programming language and database technology, achieving a high
degree of data integrity, program efficiency and user productivity. 

Recent advances in  programming language research towards expressive type
systems, user-defined iteration abstractions and highly effective
compilation schemes indicate that it may be possible for next-generation
DBPLs to support specific database programming requirements (declarative
bulk data manipulation,  transparent persistence management, concurrent
transactional database updates) without resorting to massive built-in
functionality like in the DBPL system.

In our current work in database programming language design and system
implementation we therefore investigate \e{systematic} approaches to
support typical database requirements (data independence, global query
optimization) for user-defined, generalized bulk data structures (lists,
trees, dictionaries, collections of two-dimensional objects)
\cite{MaSc91b,MaSc91}. A challenging research issue is to find adequate
linguistic support to smoothly integrate database application and database
system programming in order to assist the methodical construction of system
extensions that are necessitated by database language extensions.

{\small
\bibliographystyle{florian} 
\bibliography{florian}
}
\end{document}

