ing and maintaining complex systems.
The key observation was that programmers, who were very expensive,
had to rewrite large amounts of application software manually whenever the
content or physical organization of a
database changed. Because the application generally knew in detail how its
data was stored, including its on-disk
layout, reorganizing databases or adding new information to existing databases forced wholesale changes to the
code accessing those databases.
ILLUS TRATION B Y CELIA JOHNSON
Relational databases solved this
problem in two ways. First, they hid the
physical organization of the database
from the application and provided only
a logical view of the data. Second, they
used a declarative language to describe
the data of interest in a particular query, rather than forcing the programmer
to write a collection of function calls
to fetch the data. These two changes
allowed programmers to describe the
information they wanted and to leave
the details of optimization and access
to the database management system.
This transformation relieved programmers of the burden of rewriting application code whenever the database layout or organization changed.
Relational databases enjoyed tremendous success in the IT shops and
data centers of the world. Businesses
with large quantities of data to manage
and sophisticated applications using
that data adopted the new technology
quickly. Demand for relational products created a market worth billions of
dollars in licensing revenue per year.
Several RDBMS vendors arose in the
1980s to compete for this lucrative
business.
In the 20 years that followed, two
related trends emerged. First, the RDBMS vendors increased functionality
to provide market differentiators and
to address each new market niche as
it arose. Second, few applications need
all the features available in today’s
RDBMSs, so as the feature set size increased, each application used a decreasing fraction of that feature set.
This drive toward increasing DBMS
functionality has been accompanied
by increasing complexity, and most
deployments now require a specialist,
trained in database administration,
to keep the systems and applications
running. Since these systems are developed and sold as monolithic entities,
even though applications may require
only a small subset of the system’s
functionality, each installation pays
the price of the total overall complexity.
Surely, there must be a better way.