
Can you recommend a database that scales horizontally?通常,数据库服务器是我们必须购买的最大,最昂贵的盒子,因为垂直缩放是唯一的选择。 是否有任何数据库可以横向扩展(即跨多个商用机器),这种方法的局限性是什么?
Oracle RAC根本不是可水平扩展的,因为所有Oracle实例共享相同的数据存储。是的,使用SAN的东西,你可以得到一个大尺寸的数据库,但它根本不可扩展。换句话说,Oracle RAC仍然是一种扩展方法。因此,对于向外扩展或水平扩展,您必须按功能对数据进行分区,这意味着将不同的表组放在不同的数据库中;或者对每个表的数据进行分区,这意味着将一个表分成多个具有相同模式但存储在不同数据库中的子表。通过这种方式,您可以获得横向扩展解决方案。有很多资源。在Web 2.0网站架构博客领域,Sharding一直是一个流行词。 Oracle RAC - 真正的应用程序集群 这很好用,您只需向群集添加框。您可以从一个盒子故障转移到另一个盒子。它不是复制,所有框都是同一逻辑单元的一部分。 当然,这非常花钱。 别担心,好的解决方案即将到来! Couchdb和Hypertable是开源的,仍处于alpha状态,但它们显然是为了简化商品软件的扩展而设计的。它们工作得很好,可能会改变您对数据库的看法。 此外,如果可以让其他人为您分发,Google AppEngine和Amazon SimpleDB是非常便宜的分布式数据库服务,尽管它们现在都处于测试阶段,因此会施加严格的限制。 MySQL:http://www.mysql.com/why-mysql/scaleout.html 限制是它最适合读取主要工作负载。您通常有一个"主"接收所有写入,而许多"从属"复制写入。然后,您将所有数据库的读取分发。 MySQL复制是异步的,因此您可能必须处理时间延迟问题(您写入主服务器,然后在复制写入之前从从服务器读取)。 如果你确实沿着RAC路线前进,那么值得记住它不会永远水平扩展。甚至销售人员也承认,90%的rac客户是4个节点或更少。一旦你走得更远,你就会收益递减。所以rac可能适合你,但不能保证是答案。 Oracle RAC是数据库的劳斯莱斯,允许相对容易地添加额外的硬件节点和硬件故障转移。 但是,许可证成本会使您的商品硬件成本相形见绌。 为什么你觉得你需要横向缩放。具有40GB RAM和SAN存储的多CPU核心服务器可以支持非常大的数据库安装。 您能否提供任何大小和预期的活动信息,以便更好地了解您的问题? 存在诸如JavaSpaces(或诸如Gigaspaces的商业实现)之类的存储技术,其提供对对象的高度可扩展,快速和安全的访问。 还有分布式缓存系统,例如memcached,它提供了类似的方法。 当然,这些都不是真正的数据库,但它们可以与数据库结合使用,在给定合适的体系结构的情况下提供大量的水平可伸缩性。真正的问题是,如果你想要数据库附带的所有ACID优点,那么某些不可避免的性能损失。唯一的出路是找出不需要ACID的位,并使用其他技术来维护这些位。 跨多台计算机进行扩展的Oracle路由称为Real Application Clusters(Oracle RAC)。其他地方的文件没有结束;您可以尝试从http://www.oracle.com/database/rac_home.html开始。 Netezza和其他数据软件设备以这种方式扩展,但它们不适合OLTP和Web应用程序工作负载。
您可以查看DashDB for OLAP - IBM将其与Cloudant for OLTP配对。
MongoDB的 如果你认真地认为你将扩展一个体面的多核"Big Iron"盒子,那么你考虑分割你的数据。这是一种很好的,与数据库无关的扩展方法。 所有数据库在横向上都将付出沉重代价。 除非你有超级美元来解决这个问题,否则不要忘了RAC。虽然非常好,但一旦超过2个节点就非常昂贵。 Oracle Real Application Clusters。如果你想要最好的,那么看看它。 |