在免费/开源数据库中,Oracle分区有什么好的替代方案吗?我对查询的分区消除以及在没有DELETE事务的情况下截断单个分区的操作能力感兴趣。
我已经看到PostgreSQL支持使用表继承进行分区,但似乎需要大量的手动操作。
那里还有其他选择吗? MySQL有没有更好的?
答案 0 :(得分:4)
Oracle / DB2对分区到表空间有最好的支持。我已经使用过这两种解决方案,当你处理大量的关系数据时,让供应商支持你是很棒的。
MySql支持分区http://dev.mysql.com/doc/refman/5.1/en/partitioning.html我从未直接使用MySql分区,但可以完成。有几种分区类型,哈希可能是你最好的选择。请记住,MySQL集群是主要MySQL版本背后的几个版本。
根据您的应用程序层,另一个选项是使用Hibernate分片之类的东西。基本上,使用算法,您的应用程序会根据您提供的定义将请求定向到正确的数据库。
最后,如果你有选项,总会有NoSQL路由。像MongoDB / Cassandra这样的东西是为大型数据集构建的,但是你丢失了ACID事务。 VoltDB支持SQL,我认为它也支持ACID事务。
总的来说,除非你使用NoSQL,否则我会说你的选择受限于像Oracle / DB2这样的'透明'分区。
答案 1 :(得分:4)
我知道这是一个老线程,但我想我会提到MySQL的MERGE存储引擎供人们搜索。您可以使用它将两个表连接到一个表中,使用UNION,甚至跨数据库。对于应用程序,它看起来就像一个普通的表。
有一些限制:
更多信息:http://dev.mysql.com/doc/refman/5.0/en/merge-storage-engine.html