I'm looking for information about DB4O object database. I know it has client/server mode, but I have no idea how scalable it is. I'm a big lover of object db idea, but still couldn't find an appropriate OODB to use in any of my projects. So my questions are:
- I'm interested if anyone deployed DB4O in a multi client environment and how does it perform compared to RDBMS?
- Is any web app to date powered by DB4O?
- Can I use DB4O as a replacement for SQL Server (SQL Express at least)?
- How many concurrent client can DB4O support in practice?
- Does performance degrades when DB size increases?
Thanks
P.S. I'm interested in C# edition.
I in general agree with Vagaus and the other comments. db4o can replace in some cases, but it really depends on your scenario. An object database is only one tool and doesn't fit all needs. You probably should try it out.
I just want to add a few comments:
- multi client environment: db4o's focus is on the embedded mode. The client/server mode is more a addon and not really the default mode. db4o expects that the client and the server are 'strongly' coupled: The client and the server need the same classes, otherwise disaster strikes. Also the db4o server doesn't support stuff like multiple databases, user-management etc.
- Replacement for SQL Server (SQL Express at least): Certainly not for the big SQL Server. There more powerful object database than db4o are needed. db4o is more an equivalent for the express edition.
- Does performance degrades when DB size increases: Yes it does, like all databases. db4o is built for small databases. Around 2-16 GB are a good size for db4o.
- Concurrency-Control: db4o has very limited concurrency-controls for client-server mode. It only supports the relatively weak 'Read Committed' isolation mode.
As said, db4o is designed for embedded scenarios. For bigger client server databases you probably need to look at other (object) databases.