Database, Shmatabase

Thursday, November 29, 2007

For those who care nothing about programming, you might want to skip these entries. I plan to keep a journal of my programming efforts to rewrite I do this for two reasons: first, whenever I program, I tend to come across a technical problem that I cannot solve with a simple Internet search. I figure there are other people on the interwebs who come across similar problems. My hope is for these entries to alleviate some of the pains of finding these solutions. Second, these entries provide me both an excuse and a topic for writing. While I rarely need an excuse to sit down and throw down words, I often flounder (a word I use more and more as I replace consternations with unorganized babbling) without a topic.

I’m developing NAIS (the New And Improved using PHP and MySQL, both running on Dreamhost’s servers. I’m not sure how much code I will use from the original codebase. I do hope to reuse the code I wrote for the Cast of Horribles rewrite.

Ideally, I want to use Microsoft servers and .NET through C#, not only out of corporate loyalty, but because there are excellent (and free!) development tools. The problem is the Windows Server hosting plans are awful. There is a huge opportunity for a Dreamhost-type hosting company to create a similar business model for Microsoft-hosted solutions. Here are some comparisons of Dreamhost against a few of the top search results for “windows hosting” (most of these hosts provide overpriced Linux hosting as well):


HostDisk StorageMonthly BandwidthMonthly PriceOS and Database
Dreamhost500 GB5 TB$5.95Linux and MySQL
AccuWebHosting1 GB10 GB$15.00Windows Server w/ASP.NET and Microsoft SQL 2005
JodoHost2.5 GB35 GB$18.95Windows Server 2003 and Microsoft SQL Server
iPowerWeb100 GB1 TB$9.95Windows Server 2003 and MySQL
Verio20 GB500 GB$19.95Windows Server 2003 (includes SSL and dedicated IP)


This is a very high level comparison that does not take into account all the different features or reliability of the different hosting companies. (I did a double take at iPowerWeb. If it provided Microsoft Exchange mail services, I would probably switch.) What I was trying to show is that the price per month of Windows-based services that support ASP.NET and Microsoft SQL Server are for the most part, not comparable.

Dreamhost is an exception even for Linux-hosting companies: they have a very strong business and understand the market forces. They freely admit that the oversell, i.e., they sell more bandwidth and disk space than they can supply because they know people like me will only use a fraction of the available space. I appreciate that. I also appreciate that it is there when my site one day gets more than five hits.

One of my biggest pet peeves with these hosting companies is available disk space. Disk storage is relatively inexpensive, even taking into account necessary backup storages. Services that limit me to 1-20 GB are completely unacceptable.

Before the Marathon this year, I started a database design to hold NAIS. I plan to move the sewcrates’ data store from flat files to a database. The big draw of the database was the ability to create extensible pages through templates. I wanted to create pages that showed individual and groups (in both full and thumbnail fashion) of: text posts, doodles, photographs, book reviews, reading lists, movie reviews, etc.

I hit my first roadblock after thinking through the database design to enable these templates. I sat down with my data dictionary from the database, and realized this was a much bigger project than I expected. It always works like this: I get these huge ideas, and then I get stuck. Once I work through the ideas, and start programming, I usually remove the stickiness (there are times, of course, where I end up giving up halfway through). I keep looking to WordPress and MoveableType and asking myself why I feel a need to reinvent a perfectly round wheel. I then remember that it’s because I can, and it keeps me occupied and happy and provides a strange contentment that is difficult to explain.