My directions for 2008
I will do some major changes when it comes to technology in 2008. Being an independent consultant (contractor) is not
all about being totally independent, of course. As in any business you need to adapt and be able to offer what your clients need. Not what you might consider the best/optimal (you can of course always come with suggestions), but in the end the client makes the decision about which platform and solution to choose, and things like existing ardware/software/knowledge often plays an important role in it. Therefore I have been doing a lot of ASP.NET, C# against MSSQL Server. However, if it was just up to me, and not taking any old luggage into consideration, I'd actually switch the MS SQL backend to MySQL!
Which is the direction I will try to take for this year. Lately I've been doing a image gallery system for a client, and since I had the freedom to choose the architechture I went for ASP.NET, C# and MySQL. Even though I live and bread MS SQL server and sps I can't say I made the wrong choice. Yes, some initial problems, no doubt, but, I must say there are certain things making MySQL the optimal database engine for a web solution.
+ price of course. Nothing more to say. The SQL 2005 Express limitations needs to be removed ASAP in my opinion, cause to me it's very much a developers database...
+ built in full text index. I have never needed full text index until a project I entered a few months ago. I looked at getting it up and running on my SQL 2005 Express development box. However, an extra download of 250 MB was needed. I also *think*
+ paging. My favorite! This is SOOO typical a web application. Implementing paging in MSSQL is not fun at all. Getting acceptable performance out of it is possible, but coding hard to generlize and reuse. In MySQL it's a matter of adding LIMIT X,Y to the end of the select statement. And not to talk about SQL_CALC_FOUND_ROWS. Cause typically you need to get the page of rows but also the total number of rows, as if we were not using the limiting. Typically you do
two queries, one select count(*)... and one select * limit x,y. But with SQL_CALC_FOUND_ROWS you get that anyway.
Yes, might not be SQL standard, but I don't care. I don't get paid by creating the most standardized solution, I get paid by delivering a solution with good performance and preberable a low footprint. I have published an article on this, ASP.NET, MySQL and efficient paging.
On the minus side:
- Microsoft default medium trust configuration. Medium trust is a good thing, it's not about that, I just feel that a lot of webhosts has no idea about what it's about. They take the default configuration (recommended by Microsoft) and uses that. And the default medium trust configuration only allows for MSSQL database access...I've had numerous of conversations with webhosts about it and many, I say many, still doesn't understand what it's about. Sure they advertise on their website of supporting asp.net, mssql, mysql etc, but still when firing up your ASP.NET 2.0 app you get the
ecurity exception cause they are not allowing MySQL from medium trust...A lot of respectable webhosts has indeed made the changes needed, GoDaddy
is one of them. Hat off for them!
AdMentor PRO will always have a SQL Server driver and I will still do a LOT of SQL server gigs, since I have a lot of clients using it, but for myself and my own servers I will make the transition.
- I might be wrong here - SQL2005 installs some extra services and stuff. In MySQL it was just a matter of specifying it in the create table statement and start querying...You do need a decent stemmer though, making words in normal form.