What is your favorite database?

Yet another poll post on Friday. What, you think I’m getting lazy? Probably. What are you going to do about it. You are getting a poll today, and that’s that. I have another good one that is bound to incite some interesting flame wars in the comments. Let’s talk about databases!

What is your favorite database engine. One that you find yourself turning to, time and time again for most of your projects. Which database is the one you know like the back of your hand, and you can install and configure in your sleep.

For me, it has to be MySQL. And yeah, I know, they kinda suck now cause they decided to actually make money on their database. So they put all the cool stuff into the Enterprise version, and the public version gets neglected here and there. Still, I’ve been using it for years and have seen it grow from a little database project that could into one of the most widely used free DB engines in the world.

I used Oracle back in school – that’s what they were teaching us on. It was Java + Oracle all the way. Then me and my friend decided to jump ship and do our final project in MySQL and PHP – cause it was an online shopping cart kind of thing. At the beginning we like “WTF is this shit, you can’t do nested queries, and it’s like retarded”. But it was free, and we eventually fell in love with it – at least I did. MySQL came a long way since then and I many times in my adventure with it I would go: “Oh wow, I can do this now? Awesome!”

Some people have a lot of love for Postgress – which is apparently more free and more awesome than MySQL but I have personally never really had a chance to use it extensively. Some swear by Oracle, and some poor lost souls will use nothing but Microsoft SQL Server. What is your favorite?

I almost voted for MS SQL Server since that’s what I’ve learned on and I know the most…plus I figured it wouldn’t get much love around here. However, I had to go with MySQL in the end since that’s the one I’ve used the most outside of school.

SQLite. Simple, compact, fast, ACID compliant, though yes I am aware that as an “embedded” solution, it may not be viable for some web applications. But from my benchmarking, is faster than MySQL, at least the newer fangled MySQL that includes SQL features that I desire.

Oracle is a monsterous, proprietary morass of unnecessary bloat and complication. Requiring dedicated DBA support and frequent vendor servicing is just not kosher in the 21st century.

If I had to use MySQL, would opt for Postgres instead as the model is much more in the spirit of F/OSS, and again, it’s flavor of SQL includes Oracle power that MySQL lacks.

Finally, there is one you neglected that you might want to explore – CouchDB. Relational model is passe now. Better just to throw objects/object graphs into a data store and retrieve by index. It’s nice to see another option besides relational DB models – early in my career, back when the dinosaurs roamed, our databases on mainframe systems (even going back to the “Burroughs” age) were hierarchical (i.e., IBM IMS) with child/parent or master/slave relationships between data segments. Sort of like XML except all of your schema was defined up front and to change it meant you needed to run an assembler macro as well as write code to “pepper” your revised DB records.

At work, I help to develop a product with Oracle (and DB2) as a backend. In order to develop it and test it, I need to maintain several Oracle instances personally. I can attest that Oracle is byzantine and arcane. However, most of the reason for this is it’s ungodly number of features and level of flexibility. Oracle can be used to maintain and organize huge quantities of data.

At home however, I prefer PostgreSQL. It’s much simpler and lighter than Oracle (not to mention cheaper :P) It’s much easier and more intuitive for me to maintain. I generally avoid MySQL, because I actually find it more arcane than Oracle, while having fewer features than Postrgres and barely even keeping the Relational Model.

@naum: The relational model is by no means passe. The object-hash table structure has been around forever and BerkleyDB has been available since the 80s. The relational model is still in wide use. The is completely ignoring the rash of object dbs that popped up almost a decade ago and still provide headaches for developers today (mainly in the form of poorly designed ORMs.) The relational model can guarantee things like consistency and prevent things like redundancy. The relational structure provides information to the DB engine that allows it to more efficiently process your data. Object systems require one to code the data access algorithms oneself.

Document DBs do offer more flexibility than relational systems. The chief advantage of CouchDB for example is that it provide some structure to the data it stores, while sill allowing for that structure to change. This kind of flexibility is very important in agile systems, and can be useful for applications like say, a website, but I wouldn’t use it to store financial records.

When I worked at a software startup, we used firebird & db2 as light weight, client-side databases. Our network appliances ran MSSQL, which was fine. However, when we needed a real database, to hold real amounts of data, we used postgresql. Mysql can’t touch it for speed, features, and compliance.

However, given how often I use sqlite – amarok, firefox, etc – I had to vote for that as my favorite, in that it does more stuff I care about than any other database (since I don’t know what db most of the sites I like use, I can’t vote based on that).

Your email address will not be published. Required fields are marked *

Comment

Name *

Email *

Website

Currently you have JavaScript disabled. In order to post comments, please make sure JavaScript and Cookies are enabled, and reload the page.Click here for instructions on how to enable JavaScript in your browser.