2008-09-03 75 views
11

通常数据库服务器是我们必须购买的最大,最昂贵的盒子,因为垂直缩放是唯一的选择。是否有任何数据库能够水平扩展(即跨多台商品机器)并且这种方法有哪些局限性?你能推荐一个水平伸缩的数据库吗?

+0

你检查出任何的NewSQL选择? NuoDB,Clustrix和Xeround都是分布式的OLTP数据库。我在Clustrix工作,并认为它是一个很棒的产品。 – clieu 2013-01-03 02:58:40

回答

4

别担心,好的解决方案即将到来!

CouchdbHypertable是开源的,仍然在alpha版本,但它们明确地设计为使商品软件的缩放比较简单。他们工作得很好,可能会改变你对数据库的看法。

另外,如果可以让其他人为你分发,Google AppEngineAmazon SimpleDB是非常便宜的分布式数据库服务,尽管它们现在都处于测试阶段,所以严格限制。

2

存在诸如JavaSpaces(或诸如Gigaspaces之类的商业实现)的存储技术,其提供高度可扩展,快速的对象安全访问。

还有分布式缓存系统,如memcached,它们提供了类似的方法。

当然,这些都不是真正的数据库,但它们都是可以与数据库结合使用以提供大量水平可伸缩性的东西,只要有合适的架构。真正的问题是,如果你想要一个数据库附带的所有ACID优点,就会有一些不可避免的性能损失。唯一的出路是找出不需要ACID的位,并使用其他技术来处理这些位。

1

Netezza和其他数据仓库设备以这种方式扩展,但它们不适用于OLTP和Web应用程序工作负载。

5

的Oracle RAC - 真正应用集群

这工作得很好,你只需要添加框集群。您可以从一个盒子故障转移到另一个盒子。这不是复制,所有的盒子都是同一个逻辑单元的一部分。

当然,这很漂亮。

2

Oracle RAC是劳斯莱斯的数据库,允许额外的硬件节点相对容易地添加和硬件故障切换。

但是,您的商品硬件成本将因许可证成本而相形见绌。

为什么你觉得你需要水平缩放。具有40GB RAM和SAN存储的多CPU核心服务器可以支持非常大的数据库安装。

您能提供任何尺寸和预期的活动信息,以便更好地理解您的问题吗?

0

Oracle Real Application Clusters。如果你想要最好的话,请看看它。

0

如果你真的认为你会出规模像样的多核“大铁”框,然后你想想你的分区数据。这是一个很好的,数据库不可知的扩展方式。

所有数据库水平将会以严重的成本。

除非你有百万$$的抛出这个问题,忘记RAC。虽然它非常好,但是一旦你缩放超过2个节点,它就非常昂贵。

2

如果你确实走下了RAC路线,值得记住它不会永远水平放大。即使销售人员也承认90%的rac客户都是4个或更少的节点。一旦你走得更远,你的收益递减。所以rac可能适合你,但不能保证是答案。

2

的MySQL:http://www.mysql.com/why-mysql/scaleout.html

限制是,它最适用于读取大部分工作负载。你通常有一个接收所有写入的“主”,以及复制写入的许多“从属”。然后,您将读取分配到所有数据库。

MySQL复制是异步的,所以你可能要处理的时间滞后的问题(你写主,再由从机读写已经被复制之前)。

6

的Oracle RAC不是横向扩展可言,因为所有Oracle实例共享相同的数据存储。是的,用SAN的东西你可以得到一个大尺寸的数据库,但它根本不可扩展。换句话说,Oracle RAC仍然是一种扩展方法。因此,对于向外扩展或横向扩展,您必须通过函数对数据进行分区,这意味着将不同的表组放在不同的数据库中;或者为每个表分区数据,这意味着将一个表分成多个具有相同模式的子表,但存储在不同的数据库中。通过这种方式,您可以获得扩展解决方案。那里有很多资源。在Web 2.0网站架构博客领域,一段时间以来一直是一个流行词。 由于Sharding不直接受数据库本身支持,因此您必须构建自己的解决方案。但正如我所说,已经有很多教训。对于oracle,分区表是可能的。对于mysql,请查询this question

相关问题