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."
In conjunction with ObjectShare's VisualWorks for Linux, GemStone gives you an unbeatable pure object solution for an unbeatable price. The icing on the cake is that one can take the resulting solution and deploy it in a variety of heterogeneous environments and platforms with no code changes whatsoever. Download this stuff now - you'll never want to do C++ again!
Apparently CA's jasmine is being ported to Linux. We do some heavy development on it in NT, and I've been bitching alot about it. =)
MinneStore [http://www.objectcomposition.com] has been ported to Squeak Smalltalk. The port to Squeak 2.4b is available from ftp://ftp.create.ucsb.edu/pub/stp/OODB/MStore-2.4b .
the issue of a linux port of ODI's ObjectStore has been brought up a couple of times on their mailing lists, and the ODI people have either stated they have no plans to port to Linux, or else they have ignored the posts completely. their low-end OODB, PSE/PSEPro, is 100% Java (so works on Linux) and pretty decent, though. but i doubt it would scale to higher commercial needs.
Object to relational mapping is a difficult time consuming task. The OODBMS vendors don't need to spend anytime convinving me! /etc/issue to a what is currently in my customer database. i.e. everything (and let the OODBMS implementors deal with the problems). In the mean time I'll just put CORBA interfaces on everything.
Estimate; worlds data - 70% in file systems, 20% in relational databases.
From the perspective of a system implementor I would much prefer to deal with persistant object stores for everything from what is currently in
files, RDB tables, yech - I dont want to deal with these abstractions, give me objects to deal with!
... But it is being fixed. Check the pgsql-hackers
mailing list at www.postgresql.org if you
don't believe me.
If you can find a better, free, open-source
SQL database (real database, with transactions),
let us know.
-- cary
try coldC.
yeah, baby, yeah!!
Watch those pointers defererence!!!
(much faster than JOINs over a massive file)
At my workplace we're using the O2 Object Database System for a project. See www.ardentsoftware.com. We choose O2 because it offers the best adherence to the ODMG standards including a very complete OQL implementation. I believe it was also the first commercial OODBMS for Linux.
If you're interested in using an object database on Linux, don't waste your time with ObjectStore. In my opinion this company is either trying to kiss up to Microsoft and/or its cheerleaders/believers. A few months back their pages for ObjectStore were cluttered with Designed for Microsoft Back Office and Microsoft Enterprise Development Partner logos everywhere. And their continued denial of the demand for Linux is quite telling when you consider that nearly all their competitors are now offering Linux support. Furthermore, last I checked, ObjectStore still didn't support OQL. To add further injury, their graphical admin tools are only available for Windows!
I can't believe the number of posters proposing things like Oracle and PostgreSQL as object databases. At their core these products are still relational databases. One of the most important aspects of an OODBMS is the bluring of code and data storage into one. In an object oriented database, programming takes on a much greater importance. These object-relational systems do not really do this. They're just relational databases with support for data structures that are slightly more complex than simple tables. I would argue they break the relational model theory without really offering the advantages of a true OO database.
Anyway check out O2, as it is one of the technically stronger OODBMSes out there. The biggest negative I can think of about it is the high license cost (and of course the fact that its not open source).
Hello!
... (add list1 to list2, whatever)
... but uses the commercial version (and the free one @home of course ~8] ) )
You may want to look at http://Www.bmsg.de/ for details about a product named "HyperWork".
This thing is a client/server-based object-orientated database. The linux-version is
free, you get 3 users with it. (Current version has problems with german umlauts in object-names)
The base-version with programs plus empty db will probably use about 10 or 15 megs.
It has an "own" language which probably has some similarities with C, can fabolously handle lists
An Anomymous Coward,
(who dont work for that firm
what's bad about MySQL code? Just curious.
I haven't looked at it myself.
Since then, CA have realised that OORDBMS is impossible. They decided to keep the classical RDMS strain (ingres, Open Ingres, Ingres II), and create a *pure* Object DBMS (Jasmin) .
The other vendors (Oracle, Informix) are still trying to get a decent OORDBMS going. It will disappear, just like the plug-in/datablade stuff. Call it buzzware. Maybe fuzzware.
Yes I am totally fed up with the pseudoobject paradigm as well. If it's not going to be truly OO, then why even bother pretending? Fake objects can definitely inflate small problems into critical problems in any large project.
Some of the ugliest code I've had the misfortune to deal with could best be described as "glue". Perhaps 20% of the code in a certain large ERP system written in CA-OpenROAD exists solely to manage the mapping between the application's business objects and the hundreds of highly normalized RDB tables. It's an ugly kludge of a foundation upon which to base a serious package.
The remaining 80% of the code can then of course, only be partially object oriented. The entire package suffers, just so that salespeople can boast as a part of their pitch that, "The back end is open - it will run on any database." Which of course means you're also stuck with the good old MS-SQL limitation of 15 tables per join while you're writing this glue... Can you say, "SQL stored procedures?" Those become the true face of your software.
Then when customers try to modify the package and find out what an uncontrolled, sparsely organized kludge of a mess they bought, they very often complain & refuse to pay in entirety.
You might want to check out GOODS for C++:
http://www.ispras.ru/~knizhnik
At least take a look at the table on his pages which compare a bunch of OODBMS's.
A Dylan hacker
try www.postgresql.org for linux its free
and not as fat as DB2 and oracle-db2 still has bugs for linux....
but i never did any thing with distributed databases...so i dont know how postgres will perform
the license is more liberal than gpl.
postgres improved alot from previous years
postgres is OO and sql, id use mysql but mysql doesnt have rollback...
it also has real good c++, c , and python
interface libs
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
Also CocoBase Enterprise Jasmine may be of interest.
What Computer Associates & Fujitsu have done with Jasmine is rewritten core parts of the database, added a sophisticated GUI front-end, a web page generator (like a simple combination of ASP & ADO) and done extreme testing on performance and reliability and have come out with a product that is FAR FAR superior to ODB-II. There are also some excellent Java bindings available.
I no longer work for any related company but I do think Jasmine is an excellent choice for data that is suited for an OODBMS. Whether this suits your data or not is your decision.
Posted by FascDot Killed My Previous Use:
What's the deal with AS lately? The frontpage box hasn't updated in well over a month despite frequent story additions. And now a new question shows up on the front page but out of order from the rest (i.e. second from the top, instead of at the top).
However, neither Oracle or any of the other database systems mentioned would be what I, personally, would call an OO database. In fact, hunting through still other OO dbms systems over on src.doc.ic.ac.uk, I'm beginning to think that the OO DBMS movement hasn't a clue as to what an object or a database is.
Half of them are programmer kits only, so they're more libraries than applications, the other half are object-BASED, -NOT- Object Oriented, and none that I've seen would be capable of generating a direct 1-1 mapping to an OO n-dimensional spreadsheet.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
but Object Design is considering a Linux port and are currently investigating this.
Although there is no schedule nor official commitment to it.
Black holes occur when God divides by zero.
AceDB is the OO Database used by the Human Genome Project.
Life is like an egg better scrambled than fried. -- Ken Sawatari
as a postgresql user, and someone interested in storing java objects without the usual jumping through hoops associated with storing them in a relational system, i'd be really interested to see that list of changes. (hint)
/. user info.
BTW do you write in PCW magazine? i couldn't get your mail address from your
-vinny
We have developed a server designed for maintaining and managing NIS and DNS information. It's not designed as a full-fledged object database, but the server does include logic for transactions, namespaces, and journalling, as well as a customizable schema.
The URL is http://www.arlut.utexas.edu/gash2
- jon
Ganymede, a GPL'ed metadirectory for UNIX
The newer offerings of the commercial vendors also offer query facilities using the OQL (Object Query Language) - approximately a superset of SQL, I believe. There are relevant standards for OQL and various language bindings
http://www.odmg.org/ would be the place to look
no taxation without representation!
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.
Itasca is the best at dynamic schema modification and so on, as it's written in Common Lisp. They have interfaces for C, C++, CL and Java. It is now owned by IBEX Object Systems, which is in turn owned by HPI (Hermes Precisa International, a holding). I don't know if they have a Linux version. But if it's something you'd like to buy, you should tell them.
Checkout JACOB http://www.jdbms.org/
it's a object-oriented database written in pure java...
;dc
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.
The "Texas Persistent Store", developed at the University of Texas, is an object persistence database similar to ODI's ObjectStore. I've never used Texas myself, and it may not have been kept up to date, but I've done considerable programming with ObjectStore, and it's a great way to store and retrieve C++ objects.
Objectstore has a couple of very appealing features: first, it requires no modifications at all to the class definitions of stored objects, and requires no special inheritance. Second, it's fast -- objects are paged into memory, there's no overhead to access them.
ObjectStore probably isn't available for linux, but if Texas has been kept up to date with g++, then it's worth at least a look.
See texas* at ftp://ftp.cs.utexas.edu/pub/garbage/"
--JT
http://www.datastage.com/database/object/product/
We had a lecture on it, as an example of ODs, and we had some practical work using it, on Linux.
Of course I didn't use it enough to tell you what it's really worth...
Zope is excellent.
--
Moodle http://moodle.com/
They offer object-oriented features like inheritance but still give access to the searching power of SQL. Take your pick, buy Oracle or download the Open Source PostgreSQL.
--
Michael Dillon - E-mail: michael@memra.com
Michael Dillon - E-mail: michael@memra.com
Check the website for my Internet
Forgive me for being young, but what exactly *is* an "object database"? How does it differ from a traditional relational database? How does it differ from fields dimensioned as an "object" data type using programs like MS Access (and certainly other databases as well)?
Thanks in advance,
Ryan
Has anyone received the Linux version of Oracle 8i yet? A few weeks ago I received the Sparc version and yesterday the NT version tumbled through my mail slot. But what I really waiting for is the Linux version....
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.
Postgres has 90% of what's needed to make a true object database. Unfortunately that missing 10% is pretty critical as far as making postgresql be able to do what Versant or ObjectStore or Objectivity does. One day I'll have to put together a list of changes that would need to be made. I doubt it would be much work, but it would be needed.
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'm not certain if it's what you're looking for or not, but I've been playing with Metakit a bit lately. According to it's author, "MetaKit is a class library for storage and transport of highly structured containers. Using a truly simple API, you can create very small and efficient stand-alone database applications for Windows, Mac, Unix, and VMS. The datafiles are platform independent, self-repairing, very compact, and can be instantly reorganized. This product has been used in a number of financial applications, CDROM-based catalogs, internet utilities, statistical tools, etc. CatFish and OSAX are both based on this general-purpose database library."
It's also available in versions for Tcl & Python. I've been using the Tcl version & have been quite impressed with it's simplicity & speed. It's distributed as shareware, so it's even inexpensive: $165 for all platforms (includes C++ source code).
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?