Are there any good alternatives to Oracle partitioning in free/open source databases? I’m interested in both partition elimination for queries, and the operational ability to truncate individual partitions without DELETE transactions.
I’ve seen that PostgreSQL has some support for partitioning with table inheritance, but it seems like a lot of manual effort.
Are there any other options out there? Is MySQL any better?
Oracle/DB2 have the best support for partitioning into table spaces. I’ve worked with both solutions, and when you’re working with massive amounts of relational data, having the vendor to support you is great.
MySql supports partitioning http://dev.mysql.com/doc/refman/5.1/en/partitioning.html I’ve never worked directly with MySql partitioning, but it can be done. There are several partition types, Hash is probably your best option. Keep in mind MySQL cluster is a few versions behind the mainline MySQL release.
Another option, depending your application layer, is to use something like Hibernate shards. Basically, using an algorithm, your application directs the request to the correct database based on definition you provide.
Finally, there is always the NoSQL route if you have the option. Something like MongoDB/Cassandra are built for large datasets, but you lose ACID transactions. VoltDB supports SQL, and I think it supports ACID transactions as well.
Overall, unless you go NoSQL, I would say your options are limited with ‘transparent’ partitioning like Oracle / DB2.