Through the years computer databases and systems
have developed with each succeeding database and system improving on the ones
before it. The next progression of database architecture is toward
object-oriented databases. Just like early file managers stored data, network
databases stored data and relationships, object-oriented database store data,
data relationships, and the behaviors of the data.
With the properties of encapsulation,
abstraction and polymorphism, object technology systems are moving toward a
unified data model which models the real-world far more effectively than
previous modeling techniques. Furthermore, a properly designed object-oriented
model promises to be maintenance free, because all changes to data attributes
and behaviors become a database task, and not a programming task.
Presently, the relational database model is the
most popular and widely used. This popularity is attributed primarily it's
innate flexibility and the ease of use that accompanies SQL. However, the
relational model has been with us for more than a dozens years, which is an
extremely long time for any computer architecture. Customer needs are changing
and the relational model needs to be updated to handle these changes. Just as
structured programming languages like PASCAL were first introduced to enforce
structured programming techniques, object-oriented databases have been designed
to handle the changing business needs of today.
Object-oriented systems development is a natural
extension of the structured programming approach. Just as structured
programming emphasized the benefits of properly nested loop structures,
object-oriented development emphasizes the benefits of modular and reusable
computer code, and the benefits of modeling real-world objects.
The object-oriented technology approach started
because some applications could not use traditional programming languages like
Cobol or Fortran. Unlike the ad-hoc nature of relational development, where
data items can easily be added to a model, object-oriented systems require
careful planning. In order to achieve the promise of low maintenance, these
systems need to be very well-defined become coding begins. Unfortunately, the
first object-oriented developer realized is that the object-oriented approach
was a very foreign concept for many procedural programmers. Object-oriented
systems require a new way of looking at the problem.
The object-oriented languages such as C++ and
Smalltalk have a very steep learning curve, but once mastered, the programmers
may be many times more productive. However, the object-oriented approach is
only 5% technology and 95% philosophy. In many cases, once the programmers are
trained to think in object-oriented technology terms, they find that existing
procedural languages can be used to accomplish many of the tasks which were once
thought to be exclusively for C++ and Smalltalk. For example, many
object-oriented technology features such as fully-reentrant procedures and
reusable code can be implemented with a classic language such as Cobol.
One of the main goals of object-oriented
technology is increased productivity. Organizations that are willing to
undertake the learning curve associated with object-oriented technology have
found tremendous benefits, both in reduced development efforts as well as less
ongoing maintenance costs.
Many programmers using C++ and Smalltalk store
their own complex objects in a file system of their own design. These
"home-grown" databases are generally linked-list data structures which serve to
store the objects, but they do not take advantage of the inherent benefits of a
database management system. Today, most systems professionals realize that it
is possible to incorporate object-oriented functionality into existing
relational database software, and some vendors are developing object-oriented
front-ends for relational databases.