![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
RachelHwang
鹏城百晓生
展开
-
系统设计 — CQRS应用架构模式解析
1、CQRS架构上面图中包含有很多的概念,先列举一下所涉及的概念:Command Bus(命令总线):在 Command Handler 之前,可以看作是 Command 发布者。Command Handler(命令处理器):处理来自 Command Bus 分发的请求,可以看作是 Command 订阅者、处理者。Event Bus(事件总线):一般在 Command Handler 完成之后,可以看作是 Event 发布者。Event Handler(事件处理器):处理来自 Event Bu原创 2020-11-25 00:17:11 · 649 阅读 · 1 评论 -
系统设计 — Instagram的分片与ID设计
引言:Instagram上有大量的数据,每分钟就有超过25张的图片和90个点赞。为了确保所有重要的数据都能被合理存储并且及时得被提取应用,对数据进行了分片(sharding)——也就是说,把数据放到多个桶(bucket)中,每个桶里都有一部分数据。应用服务器上运行的是Django, 后端数据库是PostgreSQL。对数据分片首先要决定是否要保留PostgreSQL作为主要的数据存储库,是否要采用其他的数据库。经过评估一些不同的数据库解决方案,最终确定最适合的方案是在PostgreSQL数据库集群上实现数原创 2020-11-15 15:58:34 · 421 阅读 · 0 评论 -
算法 — 系统设计中一致性哈希算法的实现
1、设计设计需求水平切分Horizontal Sharding:Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。如果表并不多,但每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID散列)切分到多个数据库(server)上。这时水平切分就会产生一个问题,假如我们来原创 2020-11-14 01:21:51 · 142 阅读 · 0 评论 -
mysql — 分库分表常用方案以及痛点问题
为什么要进行分库分表?当数据库的数据量过大,大到一定的程度,我们就可以进行分库分表。那么基于什么原则,什么方法进行拆分,这就是本篇所要讲的。分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。分库分表是什么?随着公司的业务快速发展,数据库中的数据量猛增,访问性能也变慢了,优化迫在眉睫。分析下问题出现哪里呢?关系型数据本身就比较容易形成系统瓶颈,单原创 2020-08-08 00:46:17 · 512 阅读 · 0 评论