Posts tagged: Microsoft

Database Systems Compared

My first experiences of a computer started with DBase III+ which is now dBASE, then went on to Foxpro, now Microsoft Visual Foxpro. I have since used Filemaker Pro, Microsoft Access, Microsoft SQL Server, MySQL, PostgreSQL, SQLite and HSQLDB. I have not yet used IBM DB2, Oracle. Wikipedia has a list of database systems.

Having worked with this range of database systems and having done copious amounts of research into DB2, Oracle and other DB systems I have not mentioned, I like answering the age old questions. Which is the best database system?

Ah! if only it was that simple. There is no database system that is appropriate for any given requirement. But then, if you have been in the technology sector long enough, you would already know that. It’s all about using the right tool for the job.

I separate these systems into two broad categories and Oracle. There are the Desktop based database systems:

  • DBase
  • Foxpro
  • SQLite
  • HSQLDB
  • Filemaker Pro
  • Microsoft Access
  • MySQL

DBase, FoxPro, Filemaker Pro and Microsoft Access are essentially a GUI frontend that has a database backing.

Access is the best choice for this purpose under the majority of circumstances. Filemaker Pro is relevant in some. The usual reason to use DBase or FoxPro is simply that the developer is used to it. This is not a good enough reason.

I have used DBase III+ for developing an office management suite back in 1994. I have since used Filemaker Pro to develop a simple contact management database in 1998, Microsoft Access to develop a patient management system for a clinic.

SQLite, HSQLDB and MySQL are database engines that are to be utilised by popping a frontend on top; sometimes the frontend is Microsoft Access. Microsoft Access can also be used for its database engine.

Access is usually the worst choice for this except as a stopgap. There are exceptions to this. One is for a web frontend if the site is not too busy and its running on a microsoft platform. You don’t have to go to the hassle of installing anything on the server. The drivers will take care of it all.

HSQLDB becomes an obvious choice for a light java based application and SQLite for any other lightweight applications.

MySQL is substantially more powerful and scales a lot better. I include it in this section because it is a server grade database system that can also work well in a desktop environment.

I have used Access for several web based systems and I have used HSQLDB for unit testing hibernate and for a quick and dirty MP3 library that linked into musicBrainz. I have used SQLite in passing to be utilised by open source products.

I have used MySQL with an Access frontend as a management suite for a website as well.

And we have the server based database systems:

  • MySQL
  • Microsoft SQL Server
  • IBM DB2
  • PostgreSQL

MySQL was used as the backed database system for the edFringe.com website. This was the perfect choice since the most important requirement was speed. Particuarly with the Query Cache and Master Slave replication, MySQL was the best choice.

SQL Server was used as the backend system for an online course for the Scottish Enterprise around 1999/2000. While MySQL would have been a good choice this, it was not of production quality at the time.

We have also used Ms SQL Server for an insurance company since all the infrastructure was based on Windows and PostgreSQL did not have a viable Windows version at the time.

We use PostgreSQL for megabus. While speed is absolutely critical, it is a ticketing system which means that transactionality is absolutely critical.

While MySQL now has transactionality with innodb, it is still nowhere near as good as the transactionality provided by PostgreSQL through MVCC (Multi-version Concurrency Control). We could have used Ms SQL Server but the cost savings are dramatic.

To summarise, each system has a specific use, specific strengths and weaknesses and which should be used is highly dependent on what it is to be used for. I am hopeful that the summary of what we have used each of these systems for us useful in determining which one is best placed to solve any specific problem 😀

We have not yet used Oracle and it was a strong contender for megabus but the serious heavyweight functionality provided by Oracle comes at a price and it is not yet a cost effective option.

Master Jack

Everybody knows the old adage – “Jack of all trades, master of none”. I agree with this. So does the whole open source movement (in general). Thunderbird is a good example of an application that does one thing but does it well. Compare that to the old Mozilla suite that did mail, newsgroups and web browsing and one integrated applications and all the problems that came with that.

At Kraya, we believe in being able to do one thing and one thing well. Ironic since we do so many things. Kraya has become more like an operating platform for building a whole set of tools on top. Similar to running multiple applications on your computer. They all do one thing and one thing well (unless we are talking about something like Microsoft Outlook which does loads of things badly).

Then there is the synergy between the different teams that is sometimes absolutely crucial to the success of some of the projects.

As an organisation, we are a little off the wall and don’t really follow the mainstream. We believe that tools and technologies have a specific space they are meant to fill (yes, including microsoft products). They really have no competition as far as desktop operating systems are concerned for users who are not entirely technically literate. Sure the Apple Mac’s are great (and potentially better than Windows) but they have effectively priced themselves out of the mainstream market.

Linux, while fantastic is just not user friendly enough for the masses. My argument with Microsoft is in it trying to fill gaps with products that just can’t handle it. The Server platform while a good product, is not ideal for the range of circumstances under which it is deployed. Microsoft products are very easy to set up and use which also means that the products are generally very easy to set up wrong as well.

Products like Linux (yes, I am generalising) can be a lot more complex to set up but once it is set up, it can usually run without any issues for years. I have servers & desktops that have not been restarted for years (apart from the odd hardware upgrade / change). This is a testament to the sturdiness of the software.

Microsoft Server software is getting there. I remember the days of NT, when I was responsible for a couple of servers. They had to be restarted every fortnight, without fail before it would just fail to work. It was like clockwork…

Part of the reason why we do so many things is that we are different enough and wish to work with companies who can accomodate our very specific needs and there are very few (none that we felt could do that job as well as we could or better).

This has lead us down the path of setting up teams specialing in each area.

  • Software Engineering (which is split up in several areas as well, Java, PHP, Web, Desktop, Middleware and so on),
  • Systems (again split into multiple areas, Web systems, Office Server Infrastructure, Linux Server, Windows Servers and so on),
  • Technical Support (again, Windows based desktops, Mac based desktops, Linux based desktops, Laptops, Hardware and so on).

Krish has set up a film production company to follow his passion for making films and this will be launching with a splash over the next few weeks / months. We have already won a couple of small projects,  he is working on a few projects of fiction and music videos.

Kraya’s new R&D department is involved in developing 2 products and a third project completely unrelated to software.

So, how are we not the jack of all trades and master of none. Well, we are good at technology and all the other things we do as a coincidence. We are good at getting to understand needs, then going out there and finding all the tools that needs to be put together to solve the problem in the most effective manner.

We are currently in the process of putting together some case studies that can demonstrate this in more details… 😀

Accepting Google

Jeff Atwood (Coding Horror) correctly points out that when we refer to search engines, we are really only referring to one – google. With its easy to use, efficient and most importantly effective search functionality, there really is no reason to use another search engine.

Jeff raises a couple of valid points. With no viable competition, where is the incentive for them to improve the functionality.  It’s pleasant to see that google still invests time and money into improving features including the ability to personalise your search results. However, the question of how long they will keep doing this is worth asking…

The more interesting point that Jeff raises is:

“I’m a little surprised all the people who were so up in arms about the Microsoft “monopoly” ten years ago aren’t out in the streets today lighting torches and sharpening their pitchforks to go after Google.”

My view on this is straightforward. Yes, google is a monopoly on the search market. There is no viable competition. Yes, it possibly uses this position in the market to push itself out more and more to the masses.

However, the reason microsoft got into the bad books (at least for me) is that while it provided (or provides) fantastic software – it doesn’t treat its customers fairly. Budling Internet Explorer with windows is fine IF it also bundled Netscape/Firefox which was/is a strong competitor and the only reason people did not use them was lack of experience / knowledge of the option.

The reason google is successful is because it is the only viable choice. There is no other option. If Internet Explorer had no competitor. Then, its fine to include that exclude the others.

Then there is the unfairness in how Microsoft priced the products in relation to the number of issues / bugs that were in the product. Not to mention the feeling that, as customers, you were paying for the privilege of beta testing software.

As a software engineer, I am well aware of the issue around bugs. They are present, and always will be. That’s the nature of software. The issue is not just the number of bugs that are present in software shipped but also the amount of time it takes to resolve them.

It’s not the monopolisation of the market that “got them”. It was their attitude. The monopolisation of the market was the tool used to get them. Kinda like Al Capone being arrested for Tax evasion instead of all the other crimes he commited since that was the only way to get him.

Controversy

We have never been shy about voicing our opinions or being controversial. While discussing some PR requirements recently with a potential agency, the question was asked about whether we would be willing to be controversial.

We are not necessarily controversial, just that we hold a view that is usually a little different from the mainstream views. It could be said that we bring the alternative to the mainstream.

But then, so did some world governments, bringing open source software into their work places, successfully or unsuccessfully in the last few years instead of Microsoft.

Someone recently suggested that we were anti-microsoft. I don’t think that is case. Microsoft has its place in a technology infrastructure. It is simply that its position is usually overrated or misplaced. As far as desktops for technically shy users are concerned, there is really no alternative but Microsoft Windows. I can hear the Mac users scream that Macs are also an alternative. Theoretically, yes but the fact is that they are too expensive for someone to dabble with it. This is precisely the reason that Microsoft Windows dominates the desktop market.

We support and use Linux. In fact, the majority of the desktops in the office run Linux (Ubuntu as it happens) but people who have a non-technical role use Windows. They could use Linux but Windows is better suited to their role.

This is not necessarily a cost-saving decision. Sure, we have saved thousands of pounds by sticking to Linux instead of using Windows but that is a co-incidence more than anything. In some ways, it is a testament to the skillset of the people who work at Kraya that they are comfortable with Linux. The mindset of Linux is in alignment with the mindset of a developer.

I used to develop in Windows and I often found myself fighting with Windows, whereas with Linux, it just fits. There are several reasons for this. One being that Linux forces you to understand what you (trying to ) do to a bit more depth instead of pretending its magically taken care of.

I am not, for one moment implying that developers who use or develop on the Windows platform is inferior or not as skilled. Simply that my experience was that the Windows platform made it easier to do things badly and more difficult to do things well.

Microsoft has done wonders in bringing technology to the masses and making it more accessible. However, there is still a massive barrier, even for people specifically in the technology sector to appreciate and use technologies which require a bit more experience or knowledge to use appropriately.

There are a couple of really good examples. PostgreSQL is a powerful outstanding database server that can easily compete with Microsoft SQL Server and Oracle. However, very few people know about it and even fewer use it.

MySQL on the other hand is also an open source database server but is much more widely used and accepted.

It surprises me when MySQL is used when PostgreSQL is, from a technical perspective better suited. MySQL is faster than PostgreSQL at the cost of poor transaction managment (at best). For any system where data integrity is even remotely important, PostgreSQL is a better choice. However, since there are better GUI tools for MySQL and since it is easier to get the hang of, it gets chosen.

This give technology and people in that sector a bad name. Every tool or software has its place, and should be used in an environment where its strengths are displayed, not its weaknesses. We have instances where we use multiple database servers within one project. PostgreSQL for all the data integrity sensitive areas and MySQL for the speed sensitive areas. Sometimes you want integrity and speed. In these cases, you have to make a choice based on which is more important or layer the databases to use the strengths of both.

Metaphorically speaking, MySQL is a hammer, and PostgreSQL is a sledgehammer. Would you use a sledgehammer to crack a nut, or a hammer to crack a slab of concrete?

Before someone jumps down my throat, I am not suggesting that PostgreSQL is better than MySQL or vice versa – just that they both have different goals, different strengths and weaknesses. They have spent a lot of effort to converge and strengthen their weaknesses but not matter the amount of convergence, their core goals are still different that they will never truly be able to remove their weaknesses without giving up some of their strengths as well. One tool cannot be both a hammer and a sledgehammer…

Censoring Law

Krish asks a good question about censorship & blogging.

Unsurprisingly, it was me who broke the rules and made an overtly political statement which Krish had to censor that raised this point.

Censoring is such a grey area. Less grey in a corporate environment but grey nonetheless. My last post about Tinkerbell is for the benefit of the Kraya crew and of course the Mascot himself. However, the question has to be asked as to how it will be perceived by our (potential) clients and our (potential) new staff…

Some of our clients (the ones for whom we do a lot of work) know that we are off the wall. In fact, the reason we are able to do some of the amazing things we have done is because we are a little crazy and off the wall… :-)

It has been made clear in Kraya that it is a lifestyle and not a job. The crew at Kraya are so fantastically good at what they do, it would be unfair (at best) to restrict them with rules, structure and guidelines. All geniuses were eccentric at best or outright crazy or insane. Take Van Gogh, Beethoven, Mozart, Einstein, Newton.

No matter what people say, technology is an under-appreciated art and some of the most creative people in the world today are in the technology sector. Simply because technology is so pervasive, it is simply taken for granted. The genius in the technology sector is easier to find because the desire to conform is in general far less. In fact, technology encouraged the people who were more traditionally in the sidelines and to let themselves loose and discover their potential in a field where they could still hide in the background but still make an impact.

Kraya is a good example of this.

In 2003, we built the first megabus site; in around 6 weeks. It is now a force to be reckoned with in the transport sector with over 100,000 visitors every day (across the uk & us).

We have our name on the site and we tell people that we are responsible for the site. However, it is impossible to convey the true genius behind the site. It handles around 5 or 6 searches every second (at peak), with each search being returned within a second or two. This does not seem that impressive but then that is because it is difficult to convey the complexity of the availability & pricing algorithm and the amount of data it has to deal with just to return one set of search results.

As another example, lets take the Edinburgh Festival Fringe website. Since launch, on the day of opening bookings, it has been unavailable for day(s) due to the sheer amount of traffic.

The first year that we took it on, without making any changes to hardware but by pretty much completely re-writing the internals of the site, we took the site live with disruption to service limited to a mere 2 hours.

This is difficult to notice from the public’s perspective since the site looked exactly the same. The fact that the site was now substantially faster, more responsive and reliable was just not registered!

For the Fringe website this year (2008), we organised a complete infrastructure revamp and carried out more work on the internals to ensure that the site would work and be completely available with NO disruption to service at all.

Unfortunately, due to issues with the ticketing system, this never went live as planned.

Kraya has largely stayed in the background through all of these. Like an artist, we signed our work (our name is there both on the megabus site and the Fringe site). However, like with all pieces of art, the beauty is in the eye of the beholder.

It is unfortunate, that organisations like Apache, GNU and even Microsoft, people like Linus Torvalds, Richard Stallman and even Steve Jobs or Bill Gates, and products like Linux that make a real difference in the world stay largely in the background while Tracey Emin’s Bed is so much better known.

It seems the best way to measure the success of a technology product is to see how much it is taken for granted. Google is the perfect example of this.

Are we now living in a world where “to use something” is the best way of saying “thank you.” In other words, is the best way to thank google to just use google?

To come back to my original point of censorship. I agree that as individuals in a community, and as an organisation in the marketplace, there are some things that would be inappropriate to say in a public blog. However, this is often hard to define. More importantly, I believe that each and every single one of us at Kraya are capable and sensible enough to decide what is (in)sensible to be in a blog. The person most likely to pop something into a blog that shouldn’t be there would be me.

I blame this on the fact that I have never differentiated my life in general from my life at Kraya!

WordPress Themes