Otis wrote:
Geoff, you're not leaving us, are you?
Absolutely NOT, LLBLGen Pro is currently being used across 3 projects that I am building; all of which are high end transactional systems and I wouldn't use anything else for them. LLBLGen Pro is the bizz
DB4O is going to be used for another application in the making where it's database schema will change often and I want to take advantage of automatic refactoring of the database as well as it being light weight. Let me explain a little about the application:
It's basically going to be a hobbyist catalogue system in which you can store your music and movie collections but one thing I hate about other completitor software is that music is not just about storing CD's and LP's, many collectors also store information about Memorabilia like t-shirts, badges and even ticket stubbs, etc and this is not really taken into account. For example: When you store data you give each music entity a format code which is just a lookup table like CD, LP, 2CD and there will be one for T-Shirt. The problem is that most of the software and database is written is such a way that it thinks that every music item entered into the database has a track listing associated with it but we all know a T-Shirt doesn't have a track listing! - It's not just their UI, it's also their database table holding the music item that has a reference to a track listing.
So you might say, you can get around that by specifying in the format table whether or not the format has a track listing, right? Well, you are right of course but then you start down that road of having to create a lot of cross-reference tables to keep things properly abstracted. There are a lot of variations, LP's have a condition for the sleeve and the label but that information is redundant for non-vinyl.
What I wanted to do is to describe every characteristic of a music item as an entity and base the format code on that entity. So for example a Music DVD is completely different to a Movie DVD, Why? you may ask; well a Music DVD is associated with a Music Artist whereas a Movie DVD is not, they do however have region information. Another example would be a Music CD and a Music Classical CD, they both have track listings but a Music CD has an Artist associated with it and a Music Classical CD has a Composer, they are completely two different things when it comes down to describing the entity in full, it goes on and on and on.
Now back to why I am looking at DB4O for this. Well I am going to pre-build the classes for the Music/Movie entities that can be stored upfront, e.g. CD, DVD, LP, etc; all the well known ones and I will call them format types. Users will be allowed to request new format types whenever they like, all I have to do is create/modify the class, change the UI and redistribute the application. There is absolutely no database maintenance on my part.
Another good reason is that my application is truely pluggable from a database point of view. e.g. A user could be licensed for Music only but if later purchased Movies; all I have to do is open up the classes to the UI and the database will start storing Movie information automatically.
There are a couple of other reasons; built in client/server, same database works in .NET and JAVA.
Look forward to some comments.
Geoff.