The line between database systems and programming languages gets a bit blurry at times. Consequently, I feel somewhat justified in including some database columns in my informal series on programming languages.

AnalytiCalc and AnalyRIM

The AnalytiCalc spreadsheet provides an address space of up to 32,000 rows, up to 32,000 columns, and up to 32,000 pages. Each cell may have one or more equations stored within it, and the cells can be displayed on screen in an unlimited number of windows. Cells may also reference external programs, access databases, control or be controlled by other applications. There are around 100 builtin functions (depending on how one counts variants) and around 10 cell address modes, with variants adding more.

User functions can be added internally or externally. Built in features cover all normal function, including things like built-in matrix math, FFTs, goalseeking in up to 8 dimensions, access to any number of datafiles, internal and external macros, journaling, free-form cell annotation, address math, as well as the usual math, business, statistical, logical, and time functions one expects in a full function spreadsheet.

A document integration feature also makes it simple to use AnalytiCalc as a text/numeric integration tool and an outliner. A substantial collection of additional routines which can be linked in with AnalytiCalc for specialized math or statistics is provided also, so that if for example you want a filter design function as a built-in, pick one out of the math libraries supplied, fill in a couple tables, and link it in.

AnalyRIM contains a complete relational DBMS as well as all AnalytiCalc functions. AnalyRIM permits disk-based storage of relational data. The data may be selected, sorted, operated on relationally, and relations or sections thereof can be moved between the spreadsheet screen and relations on disk at will. The command language for the DBMS is close to SQL and it may be driven by spreadsheet macros if desired.

AnalyRIM and AnalytiCalc are available from Glenn Everhart, everhart@arisia.gce.com. They are also available on "Prime Time Freeware for UNIX".

CORAL

CORAL is a declarative language based on Horn-clause rules with extensions like SQL's group-by and aggregation operators. It uses a Prolog-like syntax. Alternatively, you may wish to think of it as a deductive database or a logic programming system.

In any case, CORAL supports all sorts of nifty programming ideas, including a variety of evaluation techniques, modular programming, diverse data types, persistent storage (via EXODUS, descibed below), and more. It also has a sophisticated complement of documentation, including on-line help facility, a tutorial manual, and an "explanation" package, based on Interviews, that allows users to examine "derivation trees" for facts, using a graphical menu-driven interface. You can find CORAL in ftp://ftp.cs.wisc.edu/coral/.

Distributed SQL (DSQL)

DSQL is a simple client/server protocol to support remote access of SQL databases. DSQL was designed to be easy to implement, yet provide most of the functionality needed to support distributed applications which require access to centralized databases.

Servers exist for Unix/Informix and VMS/Oracle. Client implementations exist for Unix, Macintosh, MS-DOS, and MS-Windows. In addition, a set of Hypercard XCMDs has been written to allow use of the Macintosh DSQL client from Hypercard. DSQL is available in ftp://cgl.ucsf.edu/pub/.

E/EXODUS

The EXODUS Storage Manager (SM) is a multi-user object storage system supporting versions, indexes, single-site transactions, distributed transactions, concurrency control, and recovery. E is a persistent programming language based on C++ (implemented in a recent version of GNU g++). It uses the SM to store objects.

The EXODUS software includes the EXODUS Storage Manager and the compiler for the E persistent programming language. It may be found in ftp://ftp.cs.wisc.edu/exodus/.

INGRES

INGRES, developed at UC Berkeley, is a research Relational DBMS. Ingres Corporation supports a commercial version, with assorted front ends, performance and reliability improvements, etc. Nonetheless, "University INGRES" has a wide following at research and educational institutions.

The QUEL language is a predecessor to IBM's SQL and POSTGRES's POSTQUEL. Many Data Base experts consider QUEL to be superior to SQL, in spite of the latter's wide market acceptance. INGRES is available in ftp://s2k-ftp.cs.berkeley.edu/pub/ingres/.

LINCKS

LINCKS is an object-centred multi-user database system developed for complex information system applications where editing and browsing of information in the database is of paramount importance. The focus is on sharing of small information chunks which combine to make up complex information objects used by different users for different purposes.

The information chunks are semi-structured. They contain one part which is well-structured, to facilitate addition of AI processing within the system, and one part which is unstructured and suitable for management by the user. LINCKS may be found in ftp://ftp.ida.liu.se/pub/lincks/.

OBST and STONE

The persistent object management system OBST was developed as a contribution to the STONE project. An essential feature of STONE is that the object oriented paradigm is pursued consequently as a key concept. OBST is the common persistent object store for all tools within the STONE environment.

The OBST data model can be characterized by the following properties:

OBST may be obtained from ftp://gate.fzi.de/pub/OBST/. For more information on STONE, send email to stone@fzi.de.

OO7

OO7 is a benchmark for object-oriented database systems. The distribution implementations of the benchmark on several systems, test results, papers, etc. It can be found in ftp://ftp.cs.wisc.edu/OO7/. In point of fact, given the number of datbase-related systems on this site, a little judicious browsing is certain to be rewarding...