/rdb: the UNIX style relational database management system
There are many relational database management systems running under UNIX, but
/rdb is still the only one that runs *with* UNIX. /rdb *adds* over 130 commands
to your UNIX system, enhancing it with database capabilities without abandoning
the UNIX environment.
Just like UNIX, /rdb's relational operators and utilities are small, efficient
programs which are invoked by the UNIX shell; relations (or tables) are ASCII
files that can be read and processed by any UNIX utility, as well as /rdb
commands and special-purpose user programs. Familiar UNIX features and all of
UNIX's power remain at your fingertips with /rdb as you create, develop and use
your applications. Because your applications call only those /rdb and UNIX com-
mands needed to accomplish specific tasks, they don't degrade the performance of
time sharing systems -- unlike traditional database systems which operate in
CPU-intensive environments.
/rdb utilities read from the standard input and write to the standard output.
Customized views, reports and complex applications are quickly created with a
few /rdb and UNIX commands connected with pipes and implemented as shell pro-
grams. The /rdb software package includes fast access methods, utilities which
sort and join tables, a menu shell, arithmetic and date computation, a report
writer, and a vi-like table editor.
Close integration with UNIX allows /rdb to go wherever UNIX goes. /rdb can be
used in windowing systems, shared among workstations, and spread over networks
and multi-vendor systems. /rdb can be installed on any computer that runs UNIX.
/rdb runs on over 40 different computers from iX86 Coherent to SPARC, DECsta-
tion, and RS6000 to the Cray super computers. A powerful subset of /rdb tools
is also available for DOS systems.
what's a relational data base?
A relational database is a collection of tables or *relations* that allow you to
maintain logically separate information in different tables. Data in these
tables can be updated, extracted or combined with data from other tables as
needed without having to work with all of your data at the same time. Relation-
al data bases are easy to learn, easy to use, and transportable from environment
to environment.
what's a table?
A /rdb table is an ordinary UNIX file with records, or rows, separated by new-
lines and fields, or columns, separated by a tab character. Here are 2 tables,
*customers* and *orders*, which share a column named *id*:
$ cat customers
id customer street
-- -------- ------
1 J.P. Banano 234 W. Market St.
2 APEX Foods 10 Commerce Lane
3 Corner Deli Rynex Corners Rd.
$ cat orders
id date qty item price paid
-- ---- --- ---- ----- ----
1 4/21 237 plain brown .45
2 4/22 300 plastic pint .62 X
3 2/22 51 10 gallon 1.01 X
3 4/30 150 wax sandwich .55 X
With these tables and /rdb, it's easy to write a form letter to all customers
who have not yet paid:
$ cat form_letter
<! date +%D !>
<customer>
<street>
On <date>, you ordered <qty> <item> bags
at $<price> each, for a total of $<total>.
Won't you please pay up? Thank you.
ACME Bags Inc.
$ row "paid !~ /X/" < orders |
> jointable - customers |
> addcol total |
> compute "total = price*qty" |
> report form_letter
/rdb commands read tables from the standard input and write tables to the stan-
dard output. This means that we can build simple functions into database appli-
cations by linking them with pipes. First, we use *row* to *select* rows in
which the *paid* column has not been checked with an `X'. Then, we use *joint-
able* on the *id* column of the resulting table and the *customers* table to get
the customer name and address. Next, we need to figure out the total amount due
on each order, and store this figure in a separate column. We use *addcol* to
add the *total* column, and *compute* to multiply the *qty* column by the
*price* column. Finally, *report* is used to execute the shell commands and re-
place the column markers in *form_letter* with data. The result:
12/18/94
J.P. Banano
234 W. Market St.
On 4/21, you ordered 237 plain brown bags
at $.45 each, for a total of $106.65.
Won't you please pay up? Thank you.
ACME Bags Inc.
what about performance?
Most database systems require proprietary interfaces, complicated indexing and
internal data transformation procedures to accomplish the simplest task; routine
queries are as cumbersome as complex applications. By using UNIX files and
shell level utilities, /rdb avoids the system (and human) overhead of this ap-
proach. The result is that /rdb is fast on normal sized databases with no in-
dexing at all. For large database applications, truly outstanding performance
is achieved with /rdb's several fast access methods.
Other performance gains with /rdb are more subtle but just as important for most
database applications. With /rdb, you never have to wait for the database sys-
tem to `come up' or for the files to `load'. Because /rdb is integrated with
UNIX your UNIX system is your database engine, and is *always* available.
The most important performance gain, however, is yours. It took you a long time
to become proficient with UNIX. With /rdb you don't have to learn a whole new
system, a new programming environment and a new way of thinking or working -- a
way that's useful in only one context. Not reinventing the wheel is the basis
of the /rdb approach. Your UNIX knowledge is database knowledge and your data-
base experience teaches you more about UNIX.
what'll it cost me?
For Linux, FreeBSD and NetBSD the price is US$249.
All others are $495.
Transfers of expiring licenses from one binary-compatible host to
another are without charge. Quantity, embedded and educational
discounts are generous.
how about a demo?
/rdb is often used to connect databases to the World Wide Web.
The /rdb documentation page is at http://www.rdb.com
and will point you to many demos and the latest developments.