2012-02-29 60 views
1

在免费/开源数据库中是否有任何Oracle分区的替代方案?我对查询的分区消除以及在不使用DELETE事务的情况下截断单个分区的操作能力感兴趣。Oracle分区的替代方案

我见过PostgreSQL支持使用表继承进行分区,但它看起来像是很多手动工作。

有没有其他的选择吗? MySQL是否更好?

+0

请看看这个解决方案:'手工分区 - Oracle XE/SE的工作示例'http://stackoverflow.com/questions/5801407/what-feature-to-use-in-oracle-standard-版本就像分区在orac – wildloop 2015-08-18 02:43:44

回答

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。

+0

VoltDB交易是“基于时间戳”(我有一天看了一个视频,有趣的东西).. – 2012-02-29 21:51:51

4

我知道这是一个古老的线程,但我想我会提到MySQL的MERGE存储引擎,供人们搜索。您可以使用它将两个表连接成一个使用UNION的表,即使是跨数据库。对于应用程序,它看起来像一个普通表。

有一些限制:

  • 表必须是相同的
  • 只有MyISAM表的工作原理
  • 如果不指定INSERT_METHOD,该表将被
  • 只读要小心有关键唯一性跨度表或您将有奇数结果

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