设计数据密集型应用
文章平均质量分 79
沈鸿斌
爱生活,爱Coding
展开
-
《设计数据密集型应用/DDIA》精要翻译(二) :数据模型和查询语言
当我们在设计kafka、mysql这样的数据密集型应用时,数据模型也许是最为重要的一个考虑点。因为它不仅影响了代码的写法,还影响着我们解决问题的思维方式。这是第一章第二节的读书笔记,介绍了几种不同的数据模型以及数据查询语言。(其实看目录就知道前两章都是小打小闹热热身,但是既然是神书,还是要好好看不是么?)一、关系型模型与文档型模型的比较关系型数据库和文档型数据库有很多的差异...翻译 2018-01-13 16:39:52 · 1147 阅读 · 0 评论 -
《设计数据密集型应用/DDIA》精要翻译(一) :reliability, scalability, maintainability
之前一段时间在看Kafka的源码分析,想学着做个分布式消息系统。后来听说 《设计数据密集型应用》这本书是2017年的神书,对这样的数据系统的内在精髓有很好的讲解。 看完这本书之后再看kafka之类的数据系统能事半功倍。因此,虽然每天忙于搬砖,但还是要抽出时间来拜读一下!这本书暂时还没有中文版,未来的一段时间里我会陆陆续续边看边做部分精华内容的翻译。这是第一章第一节的读书笔记,介绍了re...翻译 2018-01-11 13:51:17 · 2931 阅读 · 0 评论 -
《设计数据密集型应用/DDIA》精要翻译(三) :数据的存储和获取之底层数据结构
看了这三章,我最大的收货并不是说学到了什么新的知识,而是对以前通过各种渠道所掌握的知识重新进行了梳理和归纳,使它们有种脉络相通的感觉。一、驱动你的数据库的数据结构这也许是世界上最简单的数据库实现:db_set () { echo "$1,$2" >> database}db_get () { grep "^$1," dat...翻译 2018-01-15 01:03:27 · 2399 阅读 · 2 评论 -
《设计数据密集型应用/DDIA》精要翻译(六) :分布式系统中的问题
这一章我们会讨论分布式系统中一些常见的问题,在下一章中我们会讨论这些问题的解决办法。1.故障与部分失败在分布式系统中,系统的部分组件常常会以以某种未知的方式被破坏,我们称之为部分失败/部分故障。而我们的目标就是在不可靠的组件上构建一个可靠的系统。为了容忍部分失败:第一步是检测失败:大多数系统利用超时来判断节点是否可用,但是超时机制没办法区分是网络失效还是节点宕机在检...翻译 2018-04-07 20:13:08 · 882 阅读 · 0 评论 -
《设计数据密集型应用/DDIA》精要翻译(四) :副本机制
从这一章开始,我们就正式从单机应用转向了分布式应用的旅程! ps: 其实DDIA这书我1月份已经看完了,只不过那会儿实在没有心力去翻译。前段时间太太太忙了,对几千万日活的系统做了技术栈迁移、跨洲数据中心无缝平移。后续也会写文章来分享我们是怎么做的,欢迎持续关注。副本机制的意思是,在多台通过网络互连的机器上保存同一份数据的多份拷贝。我们为什么需要副本:让用户在地理上离数据...翻译 2018-03-31 15:15:20 · 774 阅读 · 0 评论 -
《设计数据密集型应用/DDIA》精要翻译(七) :Linearizability
定义和理解Linearizability是常用的一致性模型(对于一致性模型,笔者后续会有专门的文章来讨论)之一,Linearizability也可以被称为原子一致性(atomic consistency),强一致性(strong consistency),立即一致性(immediate consistency)或外部一致性(external consistency )。很难给Lineari...翻译 2018-04-14 14:28:40 · 664 阅读 · 0 评论 -
《设计数据密集型应用/DDIA》精要翻译(五) :事务
1. 事务的ACID虽然ACID我们已经说滥了,这里我想再说一下一致性和隔离性。一致性一致性在不同的术语中有不同的含义:在前面那篇博客中,我们讨论了副本之间的一致性(比如最终一致性、读已之写一致性等)在CAP中,一致性表示可线性化(即只要有一个客户端成功写入,别的客户端后续的读取必须能看到刚刚写入的值。 详见本系列第七篇。)在ACID中,指数据库在事务前后保持正确(比如转...翻译 2018-04-05 22:26:17 · 669 阅读 · 0 评论