Ask Slashdot: Pure Object Databases in Linux?
ramkal asks:
"I would like to know if there are any good "pure" object
databases (free or commerical) for Linux. No I don't have
Oracle 8 (or Informix IDS) in mind. I would hear from those
who have succesfully implemented ODs in a decent project
(100k + lines of c++ code). True, ODs are no longer as hot
as they used to be a couple of years ago but they have
their own advantages as I have seen in a financial
industry setting."
We are using Gemstone at work. It is very nice.
It works with Smalltalk, C++ and Java. Gemstone
has two flavors of this object DB.
Gemstone/S - Works with Smalltalk, C, C++
Gemstone/J - Works with Java (May also work with others, but I am not sure.)
We use Gemstone/S and VisualWorks Smalltalk.
Both Gemstone and VisualWorks are available for
non-commercial use. They both work on Linux.
VisualWorks Smalltalk also has a pretty neat
GUI builder tool and is portable 100 % between
Linux, Solaris, Mac, NT, Win98, Win95.
Please checkout these sites:
ObjectShare(Makers of VisualWorks): www.objectshare.com
Gemstone: www.gemstone.com
An RDBMS defines tables, ie field definitions, and stores data instances as rows in a table.
When you write an application if you want to manipulate that data you have to read a relational row into datastructures available in your programming language.
In an OODBMS you build up the object model for your system, the OODBMS stores your objects for you, and they appear to you as native objects in your programming language. i.e you don't have to map from your programming languages data structures to relational structures.
When you have complicated object heirarchies, the time spent mapping between the object structures and the realtion structures, can take up allot of programmer time, (at least that's what the OODBMS vendors want you to believe)
--dan the person
Objectivity has released a linux version of Objectivity/DB for Linux last year. Objectivity is an very scalable, page-based OODBMS (and normal commercial software).
So far I have only used the Solaris and NT versions and the Java binding. The Java bindungs on Linux are not finished yet. Objectivity works pretty well with JDK 1.2, but with JDK 1.1 we had a lot of crashes that suddely disappeared when we switched to 1.2. Probably not Objectivitys fault, but made it almost unusable.
To my mind there were 4 groups of people doing fairly dissimilar things. They all called their research "oodbms" work.
1) relational people wanting to support structured fields (break 1st normal form)
2) persistent programming people wanting transaction / query facilities
3) AI expert systems people wanting a persistent rulebase
4) functional data modelling people experimenting with polymorphism
The outcome are two major strands: persistent object stores and object relational systems. In principle they can do the same, but in practice they excel in different areas: if you let the DBMS know about your data types (ADTs - abstract data types) then the query optimiser can make use of that information. That's the great strength of ObRel systems. On the other hand, if you look at how rel systems are used, you find that many introduce lots of surrogate keys (simplistically: serial numbers with no meaning in reality). An OODB would be able to replresent those by object references, which cuts down on the pointer indirections by a factor 2 or three. If all you ever do is chasing pointers that may be a great help. Look at CAD software.
There are two papers that I can highly recommend: the oo database manifesto and the (empire strikes back) 3rd generation database manifesto. Look over at dblp.uni-trier.de and type in manifesto.
AceDB, which is the OO database used by the Human Genome Project is Open Source _and_ supported on Linux. There's an article in the latest Perl journal about it, and this is the faq.
If you're looking for a free, cross-platform, open-source Object DB, take a look at Zope. It's actually a complete object-oriented web application server, but as it is open source, you could pull out the ODB part for your own use. It's written in Python, with a little C++ for performance critical code.
The real Webmaven is user ID 27463. I don't rate an imposter, because my ID is such a lame-ass high number.
I've worked on a distributed database project based on Postgres (Mariposa at UC Berkeley) and the postgresql source code is in a bit of a, how shall we say this, bad state. I wouldn't trust my data with it unless I could afford to lose it.
And MySQL....sheesh....have you read the source code for it?