负载均衡器是一种专门的硬件或软件组件,它可以帮助分散流量到服务器集群,从而改善系统的响应能力和可用性,包括但不限于应用程序、网站或数据库。
负载均衡器一般都是在客户端与服务器之间,接受传入的网络及应用程序的流量,并利用各种算法,将流量分配到多个后端服务器。所以,它也可以用于各种场合,比如 Web 服务器与数据库服务器之间,以及客户端和 Web 服务器之间。
非规范化的目的是提高读取性能,但却要牺牲一定的写入性能。为了避免昂贵的连接,可以将数据的冗余副本写入到多个表中。
一旦数据通过联合和分片等技术变得分散,管理跨数据中心的连接将会进一步增加复杂性。非规范化可以避免需要如此复杂的连接。
在大多数系统中,读取操作的次数远远多于写入操作,大约是 100:1,甚至是 1000:1。导致读取复杂数据库连接可能会非常昂贵,而且会耗费很多时间在磁盘上。
有些 RDBMS,像 PostgreSQL 和 Oracle 都支持物化视图,它们可以处理存储冗余数据,并使冗余副本保持一致。
Facebook 的 Ryan Mack 在其出色的文章《建立时间表:利用非规范化的力量扩大规模来保存你的生活故事》(Building Timeline: Scaling up to hold your life story)中分享了很多时间表自身的实现故事。
5 使用哪个数据库?