|
Object Oriented
Technology & Services
In the last 10 years, object orientated techniques have changed the way we
program. Object oriented class libraries have dramatically simplified GUI
programming, allowing programmers to develop sophisticated systems with much
less effort. Because today's superior GUIs allow users to manage much more
complexity, many software systems have extremely complicated data models, which
take full advantage of the rich semantics of object oriented programming
languages. POET allows the developer to use a program's class design as the
schema for the database, and stores objects and their relationships in the
databases. It also provides full database functionality for these objects.
Relational databases, designed in the 1970s, originated in a time of much
simpler programs and less rich data models. Today's object oriented programs
are pushing the relational model beyond its design limits. Relational databases
have only one data structure, the two dimensional table, which makes it
difficult to express the complex relationships found in modern applications.
POET products reduce the time and cost of creating complex applications and
enable the rapid development of next generation applications that are difficult
or impossible to build using traditional database management technologies.
Object Oriented Databases
ODMG is the standards committee
for object databases. Almost all commercial vendors who have real object
databases are ODMG members -- this site has a complete list of member
companies.
Learn more about ODBMS at www.odbmsfacts.com
University/research projects:
The source code for these systems is available via anonymous ftp. There are lots
more that I have not listed here -- I know that the ones I have listed are
pretty good, and really are object oriented databases. I don't know about all
the others.
SHORE has been used to create a GIS system called
Paradise.
Object relational databases
Object relational databases are similar to object databases, but they use a
different approach: instead of adding database functionality to objects, they
extend SQL to make it more object oriented. They do not give you integration
with the objects you use in your OO programming languages.
University/research projects:
Postgres is the predecessor of Illustra, and is available in source code. There
is also lots of tech documentation on this system.
One of the most interesting things available on this site is the query optimizer
for Postgres. Like most modern query optimizers, it is rule based and easily
modified. Their query optimizer is written in LISP.
Distributed objects and ORBs
OMG is the standards committee for CORBA. For
more information on CORBA, see the Iona
home page.
PostModern Computing has
written an ORB in JAVA. You can download this from their web site.
Database researchers and research groups:
These groups are doing interesting database research. They are not all object
oriented or object relational. Alas, these links keep changing on me, so some
of them may be out of date.
Industry research groups:
IBM's Starburst query optimizer seems to be well regarded. For references on
Starburst, look at this.
University research groups, individual researchers:
Akmal's home page has been very popular in the ODBMS community. It includes
information on benchmarking.
There is also a
searchable bibliography for database-related papers.
Michael Ley also has a Bibliography Server on Database Systems and Logic
Programming which contains, among other things, a bibliography on the Volcano
query optimizer.
The University of Wisconsin has created the
oo7 benchmark for object databases.
The C++ programming language
The C++ Standard
is available online in .PDF format. This draft is from the April working
papers. The September working papers are available in .HTML format. You can
find them here.
A good starting point for C++ resources is available on
Yahoo's C++ reference page. If you are new to the C++ programming
language, you may want to take a look at the
C++ FAQ.
STL
Hewlett-Packard's official STL
ftp directory contains the original implementation of STL, which is
free, fascinating, and buggy. Want something reliable? Take a look at the
ObjectSpace STL<ToolKit>, a commercial product which is much
better tested, and runs on lots of platforms.
Rogue Wave has implemented STL as part of its
Standard C++ Library. You might want to take a look at
this program excerpt for an excellent example of how STL can simplify
programming.
There are two useful tutorials for STL.
D.R.Musser's STL Tutorial gives lots of links to other information and
is well written.
Mumit's STL Newbie Tutorial has lots of useful examples, and shows you
how to avoid some common problems.
Object oriented design
Here are some good starting points for info on OO design. Conspicuously absent
is a good design patterns web site. I have looked at several patterns sites,
but haven't found one I like yet. There must be one out there, so please let me
know where it is!
Design freaks may also enjoy looking at the design of
Fresco, a large project which uses the Design Patterns approach.
Cool web technology
The web seems to be driving a lot of the most interesting new ideas in computer
science. Suddenly, you easily can make information available to the whole
world, and the web has become a huge network of loosely related content. The
challenge is to organize it, to coordinate it, to make it searchable, to create
active objects. I believe that object oriented databases can play an important
role in this.
For general technical information on the web, my favorite starting place is
The Web Developer's Virtual Library. This is the place to look for info
on CGI interfaces, the HTML language, programming tools, etc. Of course,
another important starting point is the
NetScape home page which changes constantly and always has cool stuff.
(How can one company produce so many good things? And it all works!)
Java is an object oriented
programming language for the web. Java syntax looks a lot like C++, but the
type system is not as ugly, and it does not have pointers. Java lets you
develop small Applets, which are programs which can be easily downloaded and
validated to ensure that they do not contain viruses. Your web browser can
execute these programs if it supports Java. Don't confuse Java with JavaScript, which is simply a new name for NetScape's
LiveScript. JavaScript is not object oriented, but it is becoming an industry
standard, so it is also worth knowing about. In some ways, JavaScript is to
Java as C++ is to C. The two languages have similar type systems. Conveniently,
Java has metainformation for objects and classes, has a type system that is
very similar to C++, and has a similar syntax for class declarations.
Lotus and IBM have created the InterNotes
Web Publisher, which lets you create an interactive web site by
converting Notes documents, forms, views, and attachments into HTML. The
workflow aspects of this product are extremely interesting -- it lets you use
Lotus Notes to coordinate and collect web information from many sources
throughout your organization, then translates the documents and views into a
series of HTML pages. But work groups on the web are hot these days, and Lotus
has strong competition in Collabra.
The Excite Center has a
NetScape plugin which lets you use OLE controls as though they were Applets.
Their web site has some really cool demos.
EBT (Electronic Books Technology)
is a company that specializes in SGML and HTML technologies. They have
developed DynaWeb,
a web server which not only performs full text searches, but maintains the
structure of the document in the results. For instance, a search might return
the names of books. If you select a book, you can see which chapters contained
hits. To see this in action, look at
Novell's publications server, which uses DynaWeb. I find this much more
useful than the search results provided by most web search engines. When you
use this, think about it from a database standpoint. POET is going to be
supporting full text search, and we are doing a project which involves SGML
import for a client, so the technologies used for DynaWeb may not be that far
|