Category: MySQL

  • Pardon the Dust

    Sorry about the short outage there. I finally consolidated the various co-location, shared hosting, and virtual private hosting services that I was consuming every month in to one VPS account. I still have some legacy URLs to do some rewrite magic for, but the archives back to 2002 is here.

    Because my new box is very Django-oriented, I am now running WordPress via PHP5 (FastCGI) and MySQL5 on lighttpd behind perlbal.

    One of the things I really enjoyed about the move from WordPress on Apache with a really gnarly .htaccess file for URL rewriting to lighttpd was the simplicity of it all. Getting WordPress to “just work” for me on lighttpd was as simple as adding a 404 handler for the site:

    server.error-handler-404 = "/index.php?error=404"

    Everything should be smoothing out shortly and of course the eventual goal is to move this blog over to Django trunk. I did just that a few months ago but I need to revisit the code, find the importer, and give it a lot of layout love.

  • Lighty Rocks My PHP/MySQL World

    A few weeks ago I was tasked with moving from an old, overloaded XServe to a newly appropriated Xeon box. The boards were notorious for going down after big games and during big news events and usually took other things on the same server down with them.

    Thankfully that is no more. A week or so before the Big 12 and NCAA tournaments we finally bit the bullet and committed some time to move the boards over to their own box with more horesepower and more RAM.

    I put the ubuntu-server version of Breezy Badger on the box and took the opportunity to see if I could get UBB Threads running under lighttpd and php fast-cgi. I’m glad that I took the time, because it’s smoking fast.

    The process was quite painless thanks to the Ubuntu packing system. I had to build lighttpd by hand but everything else was installable with command-line tools (aptitude/apt-get). The changeover process consisted of little more than shutting down the boards on the old box, doing a dump/restore of the database to the new server, updating DNS entries and issuing temporary redirects to get the board users through the day.

    The best thing about the conversion is that lighttpd, mysql, and php-fcgi barely register any load on the server, even at peak usage. While we were scrambling with stom coverage the other weekend, the boards box quietly registered a new high water mark for usage. After a painful first-round loss in the NCAA tournament, the boards registered yet another high water mark (1134 simultaneous users). The server barely flinched with a load anywhere from 0.00 to 0.20 with plenty of resources free. Previously a third of that number could potentially bring the XServe to its knees.

    While we were turbocharging things, I also installed eAccelerator on the box, which was equally painless and yielded about a 20-30% performance increase.

    All in all I’m gaga over lighty, mysql, and php-fastcgi for when the situation warrants it. It really is insanely fast. At the same time I’m really glad that I work in Python all day.

  • Django: Big Integer Fields

    I submitted a patch to Django Ticket #399 (request for a bigint field type). It still needs testing but works at a quick glance on mysql. Here’s a shot of them in action from the admin interface (the input is just too small and just too big respectively):

    BigInt Admin

    Update: BigIntegerField works perfectly on PostgreSQL but because it doesn’t have an unsigned integer type (that I can find), PostitiveBigIntegerField isn’t going to make it all the way up to 18,446,744,073,709,551,615 without using an arbitrary precision NUMERIC or mapping zero to -9,223,372,036,854,775,808. Both solutions are messy and it would be a shame to have the mysql and postgres backends behave so differently. As an aside, it looks like this is already the case with mysql’s IntegerFields being UNSIGNED while Postgres just checks to make sure that the integers are positive before inserting.

    The best solution would probably be to employ backend-specific range checking for these monsterous numbers. That way you won’t end up out of range in PostgreSQL but you’re also not penalizing MySQL for being able to count to 18 bajillion. At this point it would be safe to drop in BigIntegerField as is (as soon as I check it out on sqlite), but PostitiveBigIntegerField still needs some pondering.

  • Django: Python on Rails?

    Let the buzz over Django begin. I first saw it fly by very early this morning as Clint Ecker pointed to some documentation. Simon Willison has given it a proper introduction this morning.

    I definitely need to take a close look at Django if it can approach the productivity of Rails while speaking my native Python. I could be missing something, but I think one very important thing that Django needs in order to have that running start in development productivity is to ship with a small HTTP server available by default. Rails uses WEBrick for this and allows development without the need to mess with Apache or lighttpd in order to start coding. It should be trivial to add similar functionality to Django (with CGIHTTPServer and all).

    I don’t mean to rag on the new framework on the block. I think Django has a ton of potential. It’s off to the right start, having been extracted from a working environment being worked on by some really smart people.

    We’ll see how this turns out, but I’m extremely excited.

  • PyCon: SQLObject

    Several groups ranted about how much they loved SQLObject while they were recapping what got done at the sprints before the conference. SQLObject allows you to map a database table to a Python object so that you can interact with it in a simple table.field (or way. It aparently increased the productivity of several of the sprinting teams.

  • /me is back.

    It’s been a long couple of months and I apologize for the hiatus. It’s a long story for another day, but lets put it this way, I’m back! I’ve moved from Radio Userland to WordPress. I promise that I’ll share my (semi-painful and procrastination-ridden) migration process in due time.

    The .css that is currently driving the site is Dots by Alex King, which I’m currently tweaking. I’ve still got some random bits that I need to find and url rewrite to fit the new engine, but I’ve done my best to keep the old permalinks. If you find something that’s whacky, please drop me a line at matt at the domain Thanks!

  • MySQL Clustering

    This article on MySQL clustering looks interesting.  More information can be found at MySQL’s clustering page.

  • MySQL Administrator

    Via Infoworld, MySQL Administrator looks like a great way to administer your MySQL databases.  A lot of people use PHPMyAdmin, which is quite good and gets the job done, but this is downright sexy!

  • MySQL 5.0 Alpha Released!

    MySQL AB announced today the availability of MySQL 5.0:

    MySQL AB, developer of the world’s most popular open source database, today announced that a major new version of its database software, version 5.0, is now available. The new release includes the addition of stored procedures as well as other advances designed to enhance the development of large-scale enterprise database applications. The MySQL 5.0 alpha development release is now available for testing and evaluation by the open source community.

    That’s pretty impressive, as it seems like just yesterday that the MySQL 4.0 alpha came out…

    Check out the major new features in 5.0, read the changelog, and download it from your favorite mirror.  I usually grab mine from Jeremy‘s servers.

  • SAP DB Becomes MaxDB

    MySQL AB is going to rename SAP DB MaxDB:

    MySQL AB, developer of the world’s most popular open source database, today announced that it is re-branding the SAP DB database “MaxDB™,” which it will offer as a MySQL AB product beginning in Q4 2003. Through a technology and cross licensing partnership with SAP AG (NYSE: SAP) announced on May 27, 2003, MySQL AB has acquired full commercial rights to develop and market future releases of SAP DB, SAP’s enterprise-level open source database. MaxDB by MySQL is targeted at large SAP R/3 environments and other applications that require maximum enterprise-level database functionality.

    After rebranding issues are ironed out, there will be a MaxDB release with increased MySQL interop, which is “A Good Thing.”

  • Linux Journal 2003 Editors’ Choice Awards

    Emergic points out the Linux Journal 2003 Editors’ Choice awards:

    All lists like this are subjective, but I think all in all it’s solid.  Lots of open source projects, some cool hardware, and good content.  Congrats all around.

  • Channels Are Back

    Sorry for the outage, but I’ve not been using categories for quite some time because of space issues.

    My web provider recently gave me more storage, so I’ll be posting to categories again.


  • MySQL Fit For Production Use

    Slashdot notes that as of 4.0.12, MySQL is ‘fit for production use.’

    Check out what’s at the top of the 4.x release page:

    Learn about “Using MySQL Replication in Large Scales” from Jeremy Zawodny (Yahoo! Technical Lead), explore “MySQL Full-text Search” with Sergei Golubchik (MySQL developer), and find out about “InnoDB: A Robust Transactional Storage Engine for MySQL” straight from the source, Heikki Tuuri (InnoDB developer), at the MySQL Users Conference & Expo 2003 in San Jose, April 10-12.

    Go, Jeremy! (and thanks for the mirror!)

  • Worms

    Kenneth Hunt has some great coverage of the MSSQL worm thang that recently plagued the net.

  • PHP CMSen: X-oops, E-Xoops, PHP-Nuke, and PostNuke

    RootPrompt.Org points to a LinuxWorld article about X-oops and E-Xoops, two PHP-based object-oriented portal packages.  It looks like both of their websites try really hard to look like *Nukes, which is unfortunate, but varlinux uses E-Xoops to look a little more unique.

    Back in June I installed both PHP-Nuke and PostNuke on my Westhost (I’m quite happy with them) account while trying to find my geekblog voice.  I liked the administration interface and it was set up great for a community weblog/news site, but it was missing something.  Perhaps it was because it looked like every other *Nuke site out there.  I tried a few non-default themes, as I was too lazy to create my own from scratch, but it still looked stock *Nuke to me.  I downloaded Radio Userland in early July and fell in love with Aggregation and the more personal approach that the software allowed me to take to geekblogging.

  • Vulnerabilities in MySQL and Others

    A Security Alert from O’Reilly and a similar piece from Infoworld note a potentially DoSable vulnerability in MySQL.  The O’Reilly piece also notes some more obscure vulnerabilities recently discovered for other programs.

  • BrainSplatPHP

    BrainSplatPHP 0.7.1:

    BrainSplat was originally conceived to scratch my itch for a journal program that I could use to replace LiveJournal.It is a simple blogging program that has support for comments. The recent additions is a client interface and a forum like code for formatting BSPHPCode. The reason I made my own was simply because all the scripts I found were generally made for multiple users. And thus, I made my own. I started originally in Perl, but I found that PHP makes a much better interface for these type of programs.


    Some more themes were added to the distribution, and the BSThemes Web site was created.

  • Traffic

    Whoa.  This weblog has generated over a gigabyte of traffic so far this week, and it’s not over yet.  I’ll try to post some stats tomorrow, and if this keeps up I’ll probably have to start paying more a month for web hosting.  Dave’s link and my javablog channel have both contributed to the rise in traffic.

    Welcome to my weblog if you’ve just started reading.

  • Caching

    Scott Hanselman:

    Justin and Thomas Wagner are talking about Caching in a Web Farm.  Justin has proposed an extension to the his cache server idea includes a .NET Remoting server that fire events to the local web server caches telling them to invalidate.

  • DBVisualizer


    Can I just say how much ass DBVisualizer is kicking for me? If you’re a java programmer who works with Databases a lot you have got to check that out. Hell, you should check it out if you’re any kind fo programmer who works with databases a lot. Hopefully I’ll be able to upgrade to the unrestricted version in a few months ($79). I don’t think I’ll be able to afford it any time before then.

    From the DBVisualizer site:

    DbVisualizer is a cross-platform database visualization and management tool which entirely relies on the JDBC, Java Database Connectivity APIs. DbVisualizer enables simultaneous connections to many different databases through JDBC drivers. Just point and click to browse the structure of the database, characteristics of tables, etc. Arbitrary SQL statements can be executed and saved between sessions. DbVisualizer supports a variety of databases including Oracle, Sybase, DB2, MySQL, Informix, SQL Server, PostgreSQL, Cloudscape, McKoi, SAP DB, Mimer and InstantDB.

    Very cool.