views:

98

answers:

5

I was planning to use db4o for a website. It's a microblog site with small posts and comments developed in java.

The thing is I contacted db4o support asking if db4o would be suitable for a website, and they answered me that only for websites with low concurrency. That means with few requests?

So, now I think db4o will not be a good choice.

Do you know if there is any object database for java suitable for a website?

A: 

If you need an object database you could look at PostgreSQL. It's free/opensource, and handles concurrency well.

NebuSoft
While I don't think this really answers the question, I can vouch for PostgreSQL easily - our company has a total of around 400 man years worth of experience with it so far and we've seen exactly zero crashes and with great performance and support for SQL standards.
Esko
@NebuSoftPostgreSQL is a relational database engine. If it's to be mentioned in the context of OO DBMSes, it's only because it supports a form of schema inheritence (between tables, for example). OO DBMSes are expected to take objects and persist them directly and transparently: PostgreSQL does not provide this kind of features.
Tomislav Nakic-Alfirevic
@EskoJust so we're clear, PostgreSQL is my no. 1 choice for a business information system (the kind of work I do every day), but that has little to do with the question.
Tomislav Nakic-Alfirevic
I personally don't use PostgreSQL, but it is listed here: http://en.wikipedia.org/wiki/List_of_object_database_management_systems as an object database management system, but I can see your point that is isn't transparent like Cache or some of the others.
NebuSoft
I would choose postgre or mysql as a relational database, but what I'm looking for is an object database. *No mapping neded*
Damian
A: 

There aren't that many choices out there, I think. Caché might make sense, although I've only heard of one team using it and their system failed so miserably performance-wise (especially as the number of concurrent users grew) that the project was canceled. You can have miserable performance with any DB, but I'd like to hear of a positive, real-life Caché-based system before I'd give it a try.

Tomislav Nakic-Alfirevic
A: 

Don't use an Object database. Many projects based on them fail. Relational databases are proven on many projects, so use MySQL, H2, Derby, Oracle, or any other relational database that meets your needs.

If you want to try something new, use a Map-Reduce based store or a document based store like Hadoop, Cassandra, CouchDB, et al. http://nosql-database.org/

LES2
Well, technically this doesn't answer my question... but after a lot of research, I found out you were right. So I decided to use a document based database: MongoDB (http://www.mongodb.org/)
Damian
A: 

I would use an ORM like hibernate to map to a traditional relational database.

James Westgate
+1  A: 

These are good java only solutions I guess you can use(no object database solutions, but I don't hear a lot about that so I would dismiss them).

  • Cassandra: Cassandra for sure scales really well according to the big players: digg,twitter, etc. I am also looking into this and I think you should also look into this. I don't think it is an easy solution, but learning this will surely work in your advantage.
  • FleetDB: FleetDB is a schema-free database optimized for agile development.
  • Neo4j: You can think of Neo4j as a high-performance graph engine with all the features of a mature and robust database. The programmer works with an object-oriented, flexible network structure rather than with strict and static tables — yet enjoys all the benefits of a fully transactional, enterprise-strength database.
  • Hbase: HBase is an open-source, distributed, column-oriented store modeled after Google' Bigtable: A Distributed Storage System for Structured Data by Chang et al.
  • H2: the Java SQL database
Alfred