我正在为我的网站后端构建一个可扩展的数据库解决方案。我最近一直在阅读有关数据库设计的内容,我似乎自己提出了一个可行的想法。我认为这是一种用同步数据维护 n 个数据库的新颖方法,但我可能错了。所以我要求 SO 评估这个想法并告诉我它是否疯狂。(或者如果它已经存在并已实施)
在这个方案中有一组服务器节点。一个节点运行一个查询负载均衡器(我们称之为A),其余节点运行一个典型的 dbms,我们将这些节点统称为N 。
每个 N 都与其他 N 断开连接。即)N中的节点不需要与任何其他节点进行通信。每个N只与A有一个连接。
这个过程是这样的
- 所有数据库查询都通过A传递。(假设现在A具有无限的吞吐量和处理能力)
- A检查每个查询 ( Q ) 并确定它是将从数据库读取的操作还是将写入数据库的查询。(在 sql 中,读是选择,写是更新)
- 如果Q是读操作,转发给N中的一个节点
- 如果Q是写操作,则将其转发给N中的所有节点
假设它实施得当,这会导致N中的所有节点都具有同步的数据库内容。只读取数据的查询需要发送到一个节点。
这个想法似乎对我特别有效,因为在我的系统中写入操作很少,不到 1%。
所以关于这个想法的几个问题
- 从理论的角度来看,这样的方案是否有意义?
- 如果这确实有意义,是否已经实施了商业或免费的解决方案?