Inventing a Database Server

A colleague of mine at Bell Labs, A. (Tax) Metaxides, was chair of the CODASYL task group on database management. He had been trying to interest people in the idea of using a specialized computer to do database management as a service for one or more mainframe computers. What he was proposing was the now common database server, clearly, in retrospect, a very good idea. However, he could not get anyone interested.

When Tax described his idea to me, I thought it interesting. This happened just when the executive director in charge of computer science research told me, Ken Thompson and Dennis Ritchie that Bell Labs would not support the development of a new operating system, e.g. UNIX. (I describe this in my previous post.)

I decided that Tax’s idea should be investigated, so I obtained permission to form a new research group for this purpose. The group was formed in November 1970 and soon became a full-fledged research department (I got promoted) with five members. Unfortunately Tax either never joined the group (probably because he was a theoretician, not an implementor) or left the group early, so his name is not on the published report on our work: A Back End Computer for Data Base Management.

SQL, now the standard database language, had not yet been developed at IBM. I now know they were working on SQL at about the same time (or shortly after) we built our database server. So we had to decide what database language to implement. The answer was obvious. We used the DBTG language designed by Tax’s CODASYL group. I quote from our report:

“At the time the XDMS project was started, there was considerable skepticism about whether the DBTG language could be implemented efficiently. There was also a need for implementation feedback to the DBTG committee. Thus, the selection of the DBTG language for the XDMS project had the fortunate result of not only providing the back-end system with an advanced data management language but also providing the DBTG effort with valuable implementation feedback”

The first thing I did was build a simulation of our proposed system in PL/1 to demonstrate feasibility. This convinced us we were on the right track. While I was working on this we chose our machines. For the mainframe we used the UNIVAC 1108, both because one was available and because we could piggyback on a DBTG implementation being built by UNIVAC for the 1108. For the back end machine we chose a very interesting microprogrammable minicomputer, the Digital Scientific META-4, a new machine (1969). By the time our META-4 arrived my simulation was finished and we were well into the code on the 1108.

Because I love hardware I immediately latched onto the META-4. I decided to implement some additional instructions in microcode, ones I thought would speed up database processing. To microcode the META-4 one first disassembled the microcode store, which consisted of a sandwich of glass plates with small metal foil squares glued on to implement the codes. The reason for this arcane arrangement was because the macrocode store needed to be very fast, and core memory and other read-only memory implementations were too slow. After disassembling the store, one removed or added metal squares corresponding to the bits of the desired instructions. The machine came with a generous supply of little squares, conveniently provided with an adhesive backing.

It turned out that the microcode idea was not a good one. My special instructions did not make any perceptible difference in the speed of our system. However, I had fun. Of course I also implemented major portions of the META-4 software, although I don’t remember the details. I do remember that one member of the team, Bob Harrison, built from scratch a very good simple operating system for the META-4. Bob was a brilliant programmer, who had been with me on the NIKE TSS project and who almost hired me away from Bell Labs to work for GE. Instead I hired him away from GE to work for me at Bell Labs. We worked together for several years. Bob had a very successful career at Bell Labs. All five of the team members stayed with me on my next project, the Programmer’s Workbench.

The database server we built worked very well, even though it was a prototype. Meanwhile, elsewhere in Bell Labs, the very large team building the ESS electronic telephone switching system was having trouble. I proposed that they expend a small amount of their effort on trying our database server on that project. The executive director declined, saying “I don’t believe in chasing two rabbits at once.” I think that was a bad decision, because the ESS system struggled with database problems. Much later in my career I tried to get the same executive director to sponsor another piece of research in my department. Again he refused. I think he was wrong then too.

Our database server first became operational in June 1972, 18 months after we started. Our report was published in the CACM in 1974.

– Rudd Canaday (

    – Start of blog: My adventures in software
    – Previous post: Building UNIX
    – Next post: Machines I Have Known (coming Sunday March 30)

Share this post:

This entry was posted in Rudd's Blog, Uncategorized and tagged , , . Bookmark the permalink.