Default Database

Topics: Database
Coordinator
Nov 29, 2007 at 6:08 AM
Ok, so SQL Server 2005 Compact Edition is annoying the heck out of me. It's just ridiculous that you need the totally bloated SQL Server Management Studio in order to manage these databases. I want something that is lightweight in both the db engine and admin tools.

I'm seriously considering SQLite. Subsonic has a provider for SQLite. I'm going to stick with SubSonic on the datalayer, cause it will allow us to switch databases if we want.

Anyways, comments?
Jan 3, 2008 at 8:22 PM
I was looking at the code and the first thing that I thought was to implement a provider model for the data access. Not to bad-mouth anyone else's work, but I REALLY hate the reliance on a third party (subsonic) for something as essential as data access.

A provider would allow for different data access libraries, and remove the 3rd party reliance, I would certainly be willing to help craft this, if the lead developer allows others to get involved.
Coordinator
Jan 4, 2008 at 1:30 AM
Edited Jan 4, 2008 at 1:31 AM
I was mostly talking about the default database when you start WheelMUD for the first time. I just need to create a SQLite db with the correct schema, then change the connection string. SubSonic already has a provider framework to do exactly what you asked for. I "plugged-in" a SQLite provider from a third party and compiled it for us. SubSonic already supports most of the major databases out of the box. You can change your db backend by just changing the connection string in the config file. The beautiful thing about SubSonic is that you don't have to recompile your db code when you change your connection string.

I'm a database guy at my day job, and I've written several database layers from scratch. I wanted to get away from having to do that with WheelMUD. I actually tested quite a few db frameworks before I settled on SubSonic. Here's a short list of the ones I tried; NHibernate, .netTiers, CSLA.NET, Castle ActiveRecord, LINQ. Plus I wrote a couple myself, just for WheelMUD.

The SubSonic code is available from here: http://subsonicproject.googlecode.com/svn/trunk/ Castle ActiveRecord was my close second choice. What swayed me was that the main guy for SubSonic is now at Microsoft, so learning it will be good thing for my career and anybody else that works with MS technologies.
Jan 12, 2008 at 8:02 AM
I spent some time looking at Subsonic, and although I thought it was great for asp.net, it became more less useful to me outside of that context. So`when I was using in it a wheelmud context it started to hold me bac (that was as much to do with my in experience as well though :) )

I have recent looked at Castle Active Record, CSLA.net and Ideablade. My current choice would be CSLA.net, as it has full access to the source code, has a built in persistence manager and good documentation. CSLA.net is also being re crafted to support LINQ. Subsonic is a great project , there was just something about using it that did not work for me. I then got myself tangled with not understanding how data would be persisted between the mud and the DB, again that was my inexperience that was the issue not the DAL :) Did you know that Castle Team are also working with Microsoft ? I also found CAR to be more flexible in working with projects outside of the asp.net framework, but is not being developed at the same rate as CSLA.net.

I agree with the sentiment about relying on a third party framework, as if if subsonic ever folds it would effect the project development. Unfortunately, I have neither the time or the experience to build a DAL/Persistence Manager from scratch. Hence why I need to rely on the tools listed above.

Although I am not very active on wheelmud right now ( i am working on WMI/AD project) I am very much lurking hoping things will get moving again. But the whole DAL/Persistence development, has become a sticking point for me.
Coordinator
Jan 13, 2008 at 10:05 PM

monkeyx wrote:
I spent some time looking at Subsonic, and although I thought it was great for asp.net, it became more less useful to me outside of that context. So`when I was using in it a wheelmud context it started to hold me bac (that was as much to do with my in experience as well though :) )
Yes, it does take some getting used to when using it in a WinForms or Library context. It's a bit more work to setup, but not tremendously so.


monkeyx wrote:
I have recent looked at Castle Active Record, CSLA.net and Ideablade. My current choice would be CSLA.net, as it has full access to the source code, has a built in persistence manager and good documentation. CSLA.net is also being re crafted to support LINQ. Subsonic is a great project , there was just something about using it that did not work for me. I then got myself tangled with not understanding how data would be persisted between the mud and the DB, again that was my inexperience that was the issue not the DAL :) Did you know that Castle Team are also working with Microsoft ? I also found CAR to be more flexible in working with projects outside of the asp.net framework, but is not being developed at the same rate as CSLA.net.
The issue I make for this is that of database portability. None of the other ones have much of a list of databases. Most everything targeted at MS technologies support SQL Server variants, and that's about it. I wanted something that had a larger list of supported databases. It's a personal pet peeve of mine. ;)

Yes, I know about the Castle people working with Microsoft. Rob Conery, the SubSonic main guy, was hired specifically to work on SubSonic on Microsoft's dime. He's also integrating SubSonic with LINQ and the Microsoft's version of MVC/MVP.

Here are some of my experiences:

CSLA.NET - I love this framework and had used it before in several enterprisy apps. This is way too heavy for something like WheelMUD. It also only supports SQL Server.

Castle Active Record - This has ease of use at the cost of multiple dependencies. This is built on top of NHibernate. As far as I can tell, it suffers from the same lack of database support as CSLA. As far as I know NHibernate supports MS Access, SQLite, MS SQL Server and Oracle.

Idea Blade - This has the most mature set of developer tools that I have seen, very impressive. It also suffers from only supporting SQL Server.

And the reasons for me choosing SubSonic are these; light-weight code, multiple database support, provider based database support, built-in tools for code generation, template based code, Microsoft supported, open sourced, and easy to fix if something doesn't work. Is it perfect? Not in the least. It was built primarily for web content. The base codebase comes with a lot of dependencies. Fortunately, we have access to the code, so we can remove and optimize it later on. Since the code is template-based, we can change the templates if we don't like how some part of it is generated. I really like not having the need for a third party app, like CodeSmith, to generate the code.


monkeyx wrote:
I agree with the sentiment about relying on a third party framework, as if if subsonic ever folds it would effect the project development. Unfortunately, I have neither the time or the experience to build a DAL/Persistence Manager from scratch. Hence why I need to rely on the tools listed above.
Honestly, this smacks me of "Not Invented Here" (NIH) syndrome. :p I want us to concentrate on MUD-related activities. I rather use a widely use framework for a specific part of the MUD functionality, than have us spinning our wheels and/or trying to re-invent the wheel. Been there, done that, got the t-shirt. I want to avoid wasting time on these sort of activities as much as possible. This will be an act of balancing the frameworks with their dependencies. I will remove and replace frameworks if they become a hassle to configure and/or use.

One thing that I would like to do, is have the different people decide on what they would like to specialize in. Something like a Subject Matter Expert (SME) for this project. Then they will become the go-to person if problems arise in their area of expertise. I want to specialize in the data management part, obviously. I will take care of anything related to the DAL.


monkeyx wrote:
Although I am not very active on wheelmud right now ( i am working on WMI/AD project) I am very much lurking hoping things will get moving again. But the whole DAL/Persistence development, has become a sticking point for me.

We appreciate any help that you can give us, even if it is just the occasional comment. :) As for the DAL, see above.
Jan 17, 2008 at 8:58 AM
I agree with Fasty. (Hector) Subsonic meets our needs quite well. At the end of the day this project is to build a mud server, and I personally want to work at a much higher level than data access.