一般来说,数据库服务器是我们必须购买的最大、最昂贵的机器,因为垂直扩展是唯一的选择。是否有任何数据库可以很好地水平扩展(即跨多台商品机器),这种方法有哪些限制?

有帮助吗?

解决方案

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

沙发数据库超表 都是开源的并且仍处于 alpha 阶段,但它们显然是为了简化商品软件的扩展而设计的。它们工作得很好,并且可能会改变您对数据库的看法。

另外,如果可以让其他人为你分发, 谷歌应用引擎亚马逊简单数据库 是非常便宜的分布式数据库服务,尽管它们目前都处于测试阶段,因此施加了严格的限制。

其他提示

Oracle RAC 根本无法水平扩展,因为所有 Oracle 实例共享相同的数据存储。是的,通过 SAN 的东西,你可以获得大容量的数据库,但它根本不可扩展。换句话说,Oracle RAC 仍然是一种纵向扩展的方法。因此,对于横向扩展或水平扩展,您必须按功能对数据进行分区,这意味着将不同的表组放在不同的数据库中;或按表对数据进行分区,这意味着将一个表分区为多个具有相同架构但存储在不同数据库中的子表。这样,您就得到了一个横向扩展的解决方案。这方面有很多资源。 分片 一段时间以来,“Web 2.0 网站架构博客”领域一直是一个流行词。由于数据库本身并不直接支持Sharding,因此您必须构建自己的解决方案。但正如我所说,已经有很多教训了。对于oracle来说,分区表是可以的。对于 mysql,检查 这个问题

Oracle RAC——真正的应用集群

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

当然,这是相当花钱的。

JavaSpaces(或 Gigaspaces 等商业实现)等存储技术提供了高度可扩展、快速且安全的对象访问。

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

当然,这些都不是真正的数据库,但只要有合适的架构,它们就可以与数据库结合使用,提供大量的水平可扩展性。真正的问题是,如果您想要数据库附带的所有 ACID 优点,则存在某些不可避免的性能损失。唯一的出路是找出不需要 ACID 的部分,并使用其他技术来服务这些部分。

Oracle RAC 是数据库中的劳斯莱斯,允许相对轻松地添加额外的硬件节点和硬件故障转移。

然而,与许可成本相比,您的商品硬件成本将相形见绌。

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

您能否提供任何规模和预期活动信息,以便更好地了解您的问题?

如果您确实选择了 RAC 路线,那么值得记住的是,它不会永远水平扩展。就连销售人员也承认 90% 的 rac 客户都是 4 个或更少的节点。一旦你投入的资金超过这个数额,你的回报就会递减。所以 rac 可能适合你,但不能保证就是答案。

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

局限性在于它最适合以读取为主的工作负载。通常,您有一个接收所有写入的“主设备”,以及许多复制写入的“从设备”。然后将读取分布到所有数据库。

MySQL 复制是异步的,因此您可能必须处理时间滞后问题(您写入主服务器,然后在复制写入之前从从服务器读取)。

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

用于跨多台计算机进行扩展的 Oracle 路线称为真正应用集群 (Oracle RAC)。其他地方有无数关于此的文档;你可以尝试从 http://www.oracle.com/database/rac_home.html.

Oracle 真正应用集群。如果您想要最好的,请看一下。

如果您认真地认为您将扩展一个像样的多核“大铁”盒子,那么您会考虑对数据进行分区。这是一种与数据库无关的良好横向扩展方式。

所有横向的数据库都会付出严重的代价。

除非您有巨额资金来解决该问题,否则请忘记 RAC。虽然它非常好,但一旦扩展到 2 个节点以上,它就非常昂贵。

MongoDB是最好的水平扩展数据库之一。

您可能会考虑用于 OLAP 的 DashDB——IBM 将其与用于 OLTP 的 Cloudant 配对。https://www.ibm.com/developerworks/community/blogs/5things/entry/5_things_to_know_about_dashdb_placeholder?lang=en

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top