Hello. Another round of "have I got it right".
Object-oriented databases versus SQL databases.
OODBs are based upon the object model - there are classes, objects,
attributes. SQL DBMSes are based upon the relational algebra.
An OODB stores objects. An SQL DBMS stores tables (relations), rows and
columns (attributes); data in columns are of simple types - string,
integer, float, date/time, currency.
OODB advantage: there is no impedance mismatch between the OODB and the
programming language - the OODB stores language objects.
OODB disadvantage: the OODB is oriented toward one and only one programming
language.
SQL advantage: there is a specified (and often documented) protocol between
a frontend and a backend; you can write an implementation of the protocol
in any programming language or link with client libraries. Thus a client
can be written in any programming language - the server does not care until
the FE/BE protocol is fullfiled.
SQL disadvantage: one always have to go through FE/BE protocol, encode the
queries one wants to pass to the server, decode the returned values and
convert them to the programming language's data types.
SQL advantage: you have the full power of the relational algebra; there are
tables with normalized data and joins of all kinds.
SQL disadvantage: you have to understand at least the basics of the
relational algebra and rules of data normalization.
OODB advantage: you can directly manipulate with objects in you preferred
programming language.
OODB disadvantage: you have to manipulate with objects; for example, if you
need to select a subset you have to iterate over the entire set of objects.
SQL advantage: you can formally describe what subset of rows from what
Cartesian product you want to select.
SQL disadvantage: you have to formally describe what subset of rows from
what Cartesian product you want to select; you have to select a subset of
one row even if you know the direct ID of the row.
SQL disadvantage: you are constrained by the set of data types and
functions the DBMS provides for you; however rich the set is often
insufficient, and SQL DBMSes seldom allow a user to extend it, and even if
they allow - the language to write extensions is usually a different
programming language, often proprietary and not portable among DBMSes.
Oleg.
--
Oleg Broytmann http://phd.pp.ru/ phd@phd.pp.ru
Programmers don't die, they just GOSUB without RETURN.