News for hackers. Stuff that matters.

Ask HN: Object Oriented databases?

What is everyone's opinion on object oriented databases?

I see a lot of talk about NoSQL unseating incumbent SQL players, but is something like db4o important at all?

Thanks for clearing it up!

( 4 comments | 6 points | on HN )
Re:Ask HN: Object Oriented databases? by fractallyte on Saturday December 24, 2011 @04:09AM (#3388594)
OODBs negate the need for ORM. You can program in your OO language, and have your data stored 'natively'. This can be a huge advantage (removal of a bottleneck in translating between data storage paradigms), but one also loses data portability (the OODB tends to be uniquely tied to the language it's developed in).

One outstanding example is GemStone, a high performance OO database: the development environment (Smalltalk) is the database; data is 'just' persisted.

Smalltalk also has Magma DB, which is mature, open source, and under active development.

Why Smalltalk? Pure objects, elegant syntax; one of the best languages ever.

Re:Ask HN: Object Oriented databases? by karmajunkie on Saturday December 24, 2011 @08:57AM (#3388888)
gemstone is also used with a ruby implementation called Maglev that hit 1.0 recently.
Re:Ask HN: Object Oriented databases? by kls on Friday December 23, 2011 @10:24PM (#3388055)
At one point in time the OODB's where making quite a bit of buzz but it quickly died down when most of the database vendors added features to allow similar storage options. We used one a long time ago and it leaked memory bad, it was a horrible experience keeping the thing together and running. I am sure they have improved since then, but with the features now available in existing databases, I really don't see the value in investing the effort to go over to a pure OODB.
Re:Ask HN: Object Oriented databases? by PythonDeveloper on Friday December 23, 2011 @09:12PM (#3387940)
db4o is not unique in the claims it makes. I can store objects from any language in any database. The only requirement, and the reason why db4o only supports java and .NET, is that the language must support serialization of the object in both directions.

I have used this methodology along with Memcache (as a real-time database) in C#, PHP, Python, and Java, as well as storing those objects to PostgreSQL databases.

That said, I don't think I would use db4o simply based on it's claim to be able to store serialized objects. PostgreSQL, my database of choice, has trillions of user hours on it and is well supported by hundreds of thousands of users.

NoSQL databases store the tuples (or tuple-like structures) in indexed form, which is convenient but can be inefficient. I prefer to store only the pertinent tuples for indexing, and the serialized blob by itself as a non-indexed element.