我正在开发一个Web应用程序,这将需要扩展到多个服务器。 我将需要运行我的应用程序代码的多个Web服务器,并且会有大量读取和大量写入数据库。 显然我不能只使用一个数据库。
我已经处理了有一个主站和多个从站的数据库复制。 因此,我们有多个只读API服务器,每个服务器都有一个专用服务器和一个专用(复制)的从数据库。
但是,我将如何处理写入? 看来由于瓶颈造成所有的写入都发生在单个数据库上是一个坏主意,而我想写入多个单独的数据库。 但是后来我有了多个主数据库,如果主数据库不同步,我可以想象这将是一场灾难。 而且,我可以想象会有主键冲突。
另一种select可能是使多个数据库具有相同的模式,但每个数据库不是另一个的副本。 这听起来很可怕,因为人们可能会崩溃,我会失去数据。 这似乎是一个维护噩梦,但也许我错了。
对于我所描述的需求,什么是一个好的,经过testing的,实用的,可扩展的架构? 链接到文章或只是在这里的post将是伟大的。
在这里没有什么东西可以接近一刀切的,但是如果你想要超越传统的关系数据库解决scheme,那么我build议你Google“NoSQL”,并开始阅读。
简短的回答:分片
很长的答案:你要么在sql db(通常的mysql)上开发自己的“nosql”层,要么使用许多热门的nosql工具之一(mongodb,cassandra,redis等)。
然而,因为你的post包含零度量标准,所以你实际上不太需要这样做,如果你确实需要数字模式的话。 最有可能的是,你会得到一个健康的RAM内存,一些时间花在调整SQL查询,或者,一些昂贵的SSD /高端存储。
如果你能适应你的数据不同于标准的关系表比我会考虑NoSQL ..
一个沉重的写风格的集群数据存储将是cassandra(NoSQL)它被devise成写非阻塞…:D
否则,尝试使用SQL进行分片,并且像大公司有时那样,在主控制器configuration中运行mysql。
什么types的数据被写入和读取?