设计数据密集型应用(DDIA)读书笔记(3)
前言
上篇的总结有点失误,读书总结的第2篇的进度其实只要求读完第三章,我以为第三第四章一起发便一起写了,为了和所有人进度一致顺带也因为之前的总结第四章的部分有点问题所以重新写一下。
CH4:编码与演化
第四章的内容主要介绍的是数据存储的编码与演化以及数据流,分成两个部分分别讨论。
编码
编码部分主要介绍的是各种数据的编码格式,前面两种介绍的是json和xml,这两个就不用多介绍了,就谈下我个人对json和xml的看法,两个都是通用的文本描述格式的编码,xml较为复杂且数据冗余比较多(各种描述的属性与尖括号),所以xml在web环境下逐渐被淘汰了,但是配置方面却还是有继续使用的情况。xml的繁杂是优势也是劣势,json相对而言比较简单且容易阅读,xml和json的有点都在于对于人类来说的可读性,不需要转换即可阅读,但是缺点也在这里,文本格式的编码数据冗余很大,更别说有一定规则的文本了,冗余更大了。相对于json和xml,messagePack就更好的优化了冗余的问题,messagePack使用特定的比特位来表示字段的属性与格式,使数据体积进一步减少,但是messagePack的缺点也很明显,messagePack还是会对数据的key进行描述,而key的描述其实也是冗余的,之后介绍的Thrift和grpc就进一步进行压缩,通过特定的工具来生成对应的代码,使数据仅剩下一个key的标志位与对应的值,近一步减少了体积,但是这种体积的减少也是有代价的,文章描述了读者问题,不同版本的读者读取不同版本的数据会导致无法读取对应领域的值的问题,所以grpc这种协议用于服务调用比较多,SC结构的情况比较少。
数据流
数据流部分的介绍就很少了,只是提了下SOAP和REST以及数据库与 MQ 以及ACT模式下的数据流形式,具体深入得等到第十章的时候讨论。