For years, the MySQL project has been busy bolting on features to help it compete for attention/market-space with the big boys of relational database land (mainly adding triggers and stored procedures, but also lots of other smaller features). Result: MySQL gets more respect with every passing year, and is now one of the most widely-deployed databases in the world (with the exception of SQLite – does that count?). Other result: MySQL is becoming more monolithic, consuming more memory and system resources.
But wait… the beauty of MySQL was always that it was perfect for web applications, with ultra-fast reads (since web apps spend the bulk of their time reading from, not writing to the database). The majority of the database-backed web consists of weblogs, forums, and various content management systems, where none of the fancy stuff is needed. Modern developers put their logic in application code, not in databases. Isn’t MySQL getting a bit fat for the bulk of sites it serves?
Enter Drizzle, a slimmed-down, microkernel version of MySQL optimized for web applications, with all the cruft that most of us never think about or use removed. O’Reilly: MySQL forks: could Drizzle be the next of the new generation of relational database?
“Aker presents this step as a return to the quick and lightweight MySQL that made it popular in the first place, a database engine that may not appeal to large corporate back offices but can easily power web sites. I see it also as a step back to the philosophy that Aker calls “Databases without business logic”: let the application handle consistency and complex calculations instead of making the database do them. Trust your programmers.”
So what ends up on the cutting room floor? Slashdot:
Akers has already selected particular functionality for removal: modes, views, triggers, prepared statements, stored procedures, query cache, data conversion inserts, access control lists and some data types.
Also interesting: “Aker stated that he is unwilling to support platforms without a proper GNU toolchain, such as Windows.” That means Drizzle will only run on Linux, BSD, and Mac OS.
Maybe it’s the company I keep, but I never seem to hear anything positive about working with the big databases. One person after another talks about working with Oracle and other large database systems as onerous, unnecessarily layered, annoying. Workmate Milan had this to say:
I did oracle database logic in EECS for a year or so and it was just a huge waste of time. I really started believing that the war for business logic in the db vs in the application really just amounted to oracle dba’s getting paid insane amounts of money to fiddle with PL/SQL triggers and procedures. Putting that logic in the application makes more sense to me and allows the application to remain in one, preferably OO (not Java, guess who*) language, and hence easier to maintain. It follows along with the rapid dev and ORM approach, which most developers see value in. DBAs on the other hand see their territory encroached upon. I will be a happy man when Oracle loses its grip over the business world. Oracle represents an aging empire that impedes progress.
* He’s referring to Python.
I can guarantee that of the 150+ sites running on both Birdhouse and the J-School, not a single one has any need for triggers, procedures, or any of the other non-core shiny stuff. Every site I’ve ever worked on would be perfectly happy running on a radically slimmer database, as would the vast majority of the web. Will be interesting to see this project evolve.