Oracle分区的替代方案

时间:2012-02-29 21:39:19

标签: mysql oracle postgresql partitioning

在免费/开源数据库中,Oracle分区有什么好的替代方案吗?我对查询的分区消除以及在没有DELETE事务的情况下截断单个分区的操作能力感兴趣。

我已经看到PostgreSQL支持使用表继承进行分区,但似乎需要大量的手动操作。

那里还有其他选择吗? MySQL有没有更好的?

2 个答案:

答案 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,甚至跨数据库。对于应用程序,它看起来就像一个普通的表。

有一些限制:

  • 表必须是IDENTICAL
  • 仅适用于MyISAM表
  • 如果未指定INSERT_METHOD,则该表将为只读
  • 小心拥有关键唯一性跨度表,否则您将得到奇怪的结果

更多信息:http://dev.mysql.com/doc/refman/5.0/en/merge-storage-engine.html