We’re looking for mentors to work with student teams in 6.171, Software Engineering for Internet Applications, from February 7, 2006 until May 18. If you’re a working software engineer, ideally in the Boston area, please visit http://philip.greenspun.com/teaching/6171/mentorship-program and apply!
There is still time to propose a client project for the course as well. This is especially useful for smaller businesses and non-profit organizations.
MIT students: Just a few days left in which to apply for the course.
Isn’t MySQL ACID compliant when used with InnoDB? Your students would benefit from a little MySQL experience.
I don’t keep up that much with MySQL. It always seems to have some deficiency, though they do keep improving it, I hear. I think the way that they implement views is not very flexible, for example, and views are the SQL programmer’s primary means of abstraction. PostgreSQL is a lot closer to industrial databases in terms of features and it is free and open source, unlike MySQL. So I don’t see why they would want to use MySQL except possibly that it can be higher performance for very simple queries? Ultimate performance isn’t an issue in this course.
I think that students use mysql simply because it is easy to set up and integrate with whatever framework they’ve chosen, and it’s good enough most of the time. Furthermore, some frameworks (Ruby On Rails comes to mind) default to mysql, along with reassurances that it’s easy to use a different db if you prefer. I’m sure this is true, but the path of minimum resistance goes through mysql.
By the way, I’m eager to see how the Ruby on Rails students do.
Well, it is a moot point for 6.171 because we won’t let them use MySQL!
MySQL is ACID compliant with the InnoDB engine… except that 99% of the shared hosting providers in the Linux/PHP world don’t support InnoDB, so in practice it’s as if it didn’t.
Really, the triumph of MySQL over Postgres is just yet another one of those MS-DOS-over-everything else, C-over-LISP, worse-is-better stories that happen so frequently in the computing world.
I started learning how to do web applications with MySQL, not because I sat down and consciously picked the best database system, but because, as has been said, it was the path of least resistance. MySQL was already installed on my Linux web server (not sure if PostgreSQL was at the time or not), and books and online documentation for using MySQL with <scripting-language-de-jour> were in ready abundance.
This situation is probably like most in software. If you’re totally clueless about a given technology, and try to pick which one to use based on proliferation of books or users, you will very likely pick something that is suboptimal but yet oddly popular. I would have NEVER chosen to favor Lisp based on the book selection at the local Borders store, nor would I have chosen Apple/Unix/Amiga based on the software selection at Best Buy. In retrospect, why in the world I used this methodology for picking my first database system is quite mysterious. 🙂
Despite my ambivalence about continuing the pointless and boring MySQL discussion, I am going to comment here.
The point is that the objective of the course is to teach students how to build sophisticated web services. Don Shade says above that Philip’s students would benefit from MySQL experience, but it is hard to imagine how they would benefit from experimenting with MySQL in its current state when there are commercial products such as Oracle and MS SQL Server freely available to them through MIT.
In terms of future career benefits for students in having MySQL experience, I don’t see this either. Most of the sites running MySQL seem to be either too small to afford Oracle or MS SQL Server, or too large to afford Oracle or MS SQL Server (LiveJournal, Wikipedia).
In any case, students would be better off spending the limited time they have learning the intricacies of complex SQL queries rather than evaluating whether the semi-ACID MySQL is better than the proven alternatives the instructors recommend they use (SQL Server, Oracle, and PostgreSQL).
I think it will be an interesting experience for the students, maybe a little bit of a wild card as they scramble to integrate at the end. They’ll use mysql on their laptops for development, even if you warn them about it, and then they’ll try to integrate with a different database later. This will teach them why it’s so important to keep code modular, and will help them identify vendor lock down later in their careers.
Gee Bee: We’ve taught the course quite a few times before. No student has ever run MySQL on his or her laptop, as far as I know. Most of them don’t even have laptops. They install all of their dev tools on a PC hard-wired in their dorm or frat and connect to that machine remotely if necessary. As Alex points out, they are going to be looking for jobs after spending $160,000 on an education. I would imagine that few aspire to be $10/hour MySQL/PHP monkeys.
Phil – I know you’ve done the class before (from the Java is the SUV of programming tools post way back when). I vaguely recall that the PHP students did alright in that class – it was the J2EE kids who had to drop out. I seriously doubt those students aspired to be PHP monkeys – they were just using a simple tool to build a simple webapp. As for the (third?) time around… I think Ruby is going to capture a lot of those Java students, and it’s going to be a great test of the framework. I hope you post the results. I stand by my claim that some of the students will use mysql to write a simple first rails app. At some point, they’ll move on. If you’re really interested, take an informal poll (ie, ask the students who have used mysql in a purely development environment to raise their hands – while you’re at it, ask how many of them have laptops). I’ve known plenty of CS and math students who would raise their hands for both, but UC San Diego students pay a mere 20K for their educations, so perhaps they’re in a better position to afford it (the laptop, not the ten buck an hour job).
Open source solutions (OSS) are in vogue among many CIOs. However even these CIOs know Oracle is a must for mission-critical OLTP applications requiring full ACID compliance. Where a professional solutions architect differs from a low-paid LAMP monkey is in recommending the correct high-ROI technology. Oracle licenses its customer-facing databases based on CPU. If Google had chosen Oracle for its 100,000-plus (who knows, maybe a million-plus) servers, ORCL would have closed at $471 and GOOG at $12 today. Instead, Google chose to write its own special-purpose RDBMS. Of course, Google is an extreme case. After building the operational application using Oracle (and JBoss/Hibernate for the J2EE-inclined), I would allow (no, require) students to choose PostgreSQL or MySQL for the read-only datamart. Read what Jeremy Zawodny at Yahoo!thinks about this idea.
GeeBee: We don’t care if they use PHP for glue code. They already know how to use programming languages such as Lisp and Java. We want them to learn SQL and the RDBMS; 6.171 is a database course in disguise (there is no actual database course at MIT). That’s what the course is about. It is not about read-only or read-mostly databases as at Google. An MIT graduate ought to know how to manage transactions and concurrency with the RDBMS, which is the fundamental tool of most organizations that have high-value data. There is no point in them using their time at MIT to learn a tool such as MySQL that has a tiny subset of the features of Oracle or PostgreSQL. That is like saying that Olympic swimmers ought to spend time in 2-foot-deep pools because they might want to get a job as a lifeguard at a pool for kindergarteners and need to understand the special characteristics of baby pools.