为什么单独的写入和读取更好?

时间:2012-09-05 02:46:12

标签: mysql mongodb cluster-computing

我无法理解为什么单独的写入和读取比在一台服务器中写入和读取更好。

例如,我有一个包含三台机器的mysql集群:node1,node2,node3。

一种可能的架构是:

  • 对node1的所有写入请求,但是对node2和node3的所有读取请求。

第二种可能的架构是:

  • 所有这三个节点都处理写入和读取。

我们可以在架构一中看到对node1的写入压力非常大,所以我更喜欢架构二。

另外,为什么mongodb将写入分离到主节点并读取到辅助节点。

2 个答案:

答案 0 :(得分:2)

这是MySQL和MongoDB的规模问题。在具有小数据集和低流量的最简单应用程序中,将所有写入和读取转到一个服务器为您提供简单的体系结构。在具有低容量写入的超高容量读取应用程序中,复制到多个读取节点的单个写入节点使您能够通过添加另一个节点来扩展读取。在高读取和写入卷应用程序中,您可能会考虑分片(在MySQL中您自己动手或找到一个工具来帮助),在mongodb中运行mongos来处理分片。 Sharding将根据您定义的某个键将记录放在特定实例上。密钥将确定应存储每个记录的实例。您可以想象,与单个服务器进行读/写访问相比,分片管理起来会更复杂。你是对的,即使像mongodb这样的情况下,你定义一个键(或只是使用默认键)为你做分片。

答案 1 :(得分:1)

MySQL Cluster还支持自动分片 - 默认情况下哈希主键,但用户可以提供自己的密钥以提供更多的分发感知。集群中的每个节点都是主节点,内部负载平衡将跨节点分配负载

虽然非常高级,但这里发布的简短演示向您介绍了MySQL Cluster中的分片概念: http://www.oracle.com/pls/ebn/swf_viewer.load?p_shows_id=11464419