在上一篇的笔记之中,我们讨论了数据模型和查询语言。在第三章之中我们来聊一聊不同的数据引擎内部是如何实现存储和检索的,以及不同设计之间的折中与妥协。 1.键值对数据库 键值对数据库是数据库形式之中最简单的一种模式,我们可以把它简化的实现为下面两个函数: 底层存储格式也十分简单:一个 ...
上一篇聊了聊构建分布式系统所面临的困难,这篇将着重讨论构建容错分布式系统的算法与协议。构建容错系统的最佳方法是使用通用抽象,允许应用程序忽略分布式系统中的一些问题。本篇我们先聊一聊线性一致性,以及与线性一致性有关的技术,后续需要了解的分布式协调服务,如:ZooKeeper等,都是基于分布式系统的线性一致性。 .更强的一致性 大多数分布式数据库至少提供了最终一致性,这意味着如果停止对数据库的写操作 ...
2018-02-19 12:19 0 1297 推荐指数:
在上一篇的笔记之中,我们讨论了数据模型和查询语言。在第三章之中我们来聊一聊不同的数据引擎内部是如何实现存储和检索的,以及不同设计之间的折中与妥协。 1.键值对数据库 键值对数据库是数据库形式之中最简单的一种模式,我们可以把它简化的实现为下面两个函数: 底层存储格式也十分简单:一个 ...
坦白说也是机缘巧合,在硕士生阶段进入分布式系统领域学习。无论是大规模存储或计算,其核心也是运用分布式技术利用并行性来解决数据密集型应用的需求。最近开始在啃这本《Designing Data-Intensive Applications》大部头,作者Martin Kleppmann在分布式数据 ...
数据模型是开发软件的最重要的部分,因为它们对应用程序有着深远的影响:不仅是软件的编写方式,而且也影响我们如何解决的问题的方式。第二篇读书笔记,我们聊一聊数据模型的设计。 1.数据模型的分层 作为一个开发者来说,在一个复杂的应用程序中,是存在很多分层模型的,但基本思想还是一样的:每一层 ...
上一篇聊了聊批处理的缺点,对于无界数据来说,流处理会是更好的选择,“流”指的是随着时间的推移逐步增加的数据。消息队列可以将这些流组织起来,快速的在应用程序中给予反馈。但是消息队列与传统的数据库之 ...
之前的文章大量的内容在和大家探讨分布式存储,接下来的章节进入了分布式计算领域。坦白说,个人之前专业的重心侧重于存储,对许多计算的内容理解可能不是和确切,如果文章中的理解有所不妥,愿虚心赐教。本篇 ...
下面是这本书序言中的大部分内容,本人的英文水平有限,有理解不到位的地方还请大家指教,这算是自己对这本书的读书笔记和总结。 数据是当今系统设计中许多挑战的中心,一些难以解决的问题如系统的可扩展性,一致性,可靠性,有效性和可维护性等需要弄清楚。 另外,面对这些琳琅满目的工具包括关系型数据库 ...
相对于读书笔记,本文更像是一篇阅读大纲,在初步阅读本书后,尚有许多疑难,借用此大纲,以后温故而知新 DDIA讲了什么 什么是data-intensive 原文这样定义 Data-intensive applications are pushing the boundaries ...
副本一致性 现代的数据库系统来说,几乎都具备了复制机制replication,这种设计方式至少能对系统带来两个好处: 多副本容灾:只要存在一个可用数据副本,数据就能够恢复 读性能水平扩展:通过分布到不同的机器上,同一份数据能够在多个节点上同时供外部访问 保证多副本的数据一致性 ...