Whew! I'm glad you're starting small, otherwise we might be having all kinds of trouble, like crashing databases and... oh, never mind. ;-)
Well, it should be no trouble to get MySQL handling your 2+ million records, but it will take some tweaking and possibly a hardware upgrade. On the other hand, to handle your full 30 years of data, cross-indexed with all your other statistics, I think MySQL or a standard x86 server might just be a bit out of its depth. One workaround might be to make a different table for each year. That at least would provide a certain level of abstraction to the data, while distributing your data amoung more tables. It would also allow you to distribute the data among different servers more easily. Obviously this will introduce some headaches also, but it might just be worth it. (This is just an off-the-cuff idea; the problem deserves more thought, and examination of the data, etc...)
I think this sounds like a great project. I also think for something of this nature, in the final version you would be better off with PostgreSQL (
as a database. If you are not familiar with postgres, please browse the link I posted, and check out the PostgreSQL forum. MySQL is a great database, and it definitely makes things easy for fast prototyping of an application, but PostgreSQL is a more of an enterprise-class database. Other than that, you might consider Sybase, DB2, or even Oracle, but that can get expensive.
The main thing is, with the kind of data you are dealing with, you will quickly get frustrated with MySQL's limited feature set, and lack of data protection. You will want to use transactions, create views, have foreign key constraints, sub-selects, etc... all of which MySQL doesn't (yet) support, but PostgreSQL does. PostgreSQL's features would also make it easier to manage the data if we broke up the tables by year, as I described above. Also, you are going to need a Serious machine or two to handle the data. Like a couple of quad Xeons with RAID 0+1, or even an AlphaServer, or a Sun,... something like that.
I hope you don't mind me asking a couple of other questions, but I find this project fascinating: do you plan to make this available on the Web? If so, I would love to know the location. What programming language are you using (PHP,Perl,C++)? If you are interested in getting any help with this project, please feal free to email me at rick@brainscraps.com.