views:

405

answers:

2

Is using Db4o as a backend datastore for a Web site (ASP.NET MVC) a judicious choice as an alternative to MS SQL Server ?

+1  A: 

That depends, what kind of site your creating, the traffic your expecting etc...Are you going to handle a million requests a second, or 100 a minute...Does your domain justify using a Object Database? Do you really need it?

In general, most sites are not heavy hitters so they might not require all the scale out functionality (I believe and this is only a belief that traditional RDBMS have been tested and designed to handle extreme loads where as Object DB's might not have been given the same attention).

So then the question is does your domain justify this? Your going to base a core piece of your site on a technology that you will not find a lot of experts in. So how do you handle turn over rate? Are you willing to take the cost associated with training all current and future employees on this?

JoshBerke
+2  A: 

The main issue with DB4o is: Can you cut your object net in some useful manner? If not, then you'll keep too many objects in RAM for too long and your performance will suffer.

For example, in SQL, you can create a cursor and then easily traverse a huge set of results. You can also query for a small set of columns while DB4o always loads the whole objects (and its references and the references of the references). With DB4o, you must make sure that DB4o doesn't try to pull in all objects from the DB at once.

You'll also need to get used to querying things your "DB" by filling out example objects which feels weird in the beginning.

Aaron Digulla
According to db4o's documentation, it seems that db4o support "Lazy laoding" as "Activation Depth" and support Lazy queries in order to prevent heavy unwanted ram usage.My web site does'nt handle lot of data. But require high performance to handle huges requests a second. Standard Caching doesn't work for me, i need my data always updated so i can't use caching expiration topology
Yoann. B
It does; my point is that you must choose those values carefully yourself. With plain SQL, it is obvious what a query pulls in. With bad settings, surprising things can happen. The big plus of DB4o is that it can be much faster than an ordinary DB.
Aaron Digulla
However, the cons of DB4o is that we can't interact with the "database" out of the application running db4o like Management Studio for SQL Server in order to handle data mistakes by hand ... There is a solution called Object Management Enterprise for Db4o but seems to be not very "smooth" to hand on. So the application must be capable to manage (CRUD) all data by using a backoffice.
Yoann. B
Moreover i need full text search indexes, i'm planning to use Lucene.NET for that issue and it seems that Db4o support builtin Lucene.NET full text that should be a good point
Yoann. B