![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据密集型系统
文章平均质量分 87
Erick_Lv
菜鸡互啄
展开
-
数据密集型应用系统设计--数据分区
数据分区与数据复制 分区的目的一般是提高可扩展性、容错性和集群吞吐,同一个分区会在多个节点中都有副本。 容错性:一个节点挂掉,则这个节点上的分区,在其他节点上都有副本,可以查询其他的节点 可扩展性:新增节点时,会有多个节点把自己的部分数据给新的节点,这些节点传输的数据比较少 提高集群吞吐:数据和查询复杂会均匀的分配在所有的节点上 键-值数据的分区 一般来说,数据分区都是通过特定的key来检索对应的value,因此k-v分区是最主流的方式。 关键字区间分区 每个分区负责一个或者多个关键字区间,一般根据关键原创 2021-02-23 23:31:04 · 426 阅读 · 0 评论 -
数据密集型应用系统设计--数据复制
简介 引入数据复制的原因: 数据距离用户更近,让用户访问延迟降低 提高容错机制,某个节点坏掉后,其备份节点仍然能提供服务 负载扩展到多台机器,提高吞吐量 复制技术的真正难点在于如何处理持续变更的数据。 主节点与从节点 主从复制: 指定某个副本作为主副本,客户端全部写入主副本,更新主副本本地存储。 主副本把数据发送给从副本,从副本严格按照主副本发来的操作顺序,操作本地存储的数据 客户端可以从所有的副本中读取数据 同步复制: 主节点发送给从节点数据后,需要等从节点回复 异步复制: 主节点发送给从节点数据原创 2021-02-20 00:23:44 · 265 阅读 · 1 评论 -
数据密集型应用系统设计--数据存储与检索
数据结构 追加型数据库和哈希索引 数据库最简单的形式,是追加型的方式: 写入数据直接追加到文件尾部,O(1)复杂度 读取数据从文件头遍历,获取最新的数据 这种数据库,没有删除操作,所有的数据都是追加性质的,这也是日志形式的数据库。 为了改善查询效率,我们需要给追加型数据库创建索引,一般来说是Hash索引。 最基础的Hash索引: 每个键值都有一个唯一的Hash值 Hash值对应一个偏移量,用于映射数据在文件中的偏移位置 内存够大的情况下,Hash表存储到内存中,先查询Hash表,如果Key存在,则根据原创 2021-02-18 23:38:24 · 435 阅读 · 0 评论