
读书笔记
法号大威天龙
哼!雕虫小技,竟敢班门弄斧,大威天龙!
展开
-
第四章 编码与演化
第四章 编码与演化目录第四章 编码与演化JSON,XMLThrift和Protocol BuffersAvro作者模式和读者模式Avro 的适用场景总结软件总是在不断进化,或新增功能,或修改原有功能。所以软件需要尽量设计的灵活以拥抱变化(参考:可扩展性)。但是我们常常是以现有的(或臆想的未来)角度去看待当下的问题,未来的变化实难预测。在前贤不断的努力下,也有很多方法论可以将软件的架构设计的足够灵活,主要靠两个方面,一方面是开闭原则,开闭原则不仅仅是设计模式里面的那点用处;另一方面是对业务的不断正交分解原创 2020-08-07 00:52:33 · 518 阅读 · 0 评论 -
第五章 复制
本章主要介绍 复制的三种方式 单领导者(single leader)、多领导者(multi leader)、**无领导者(leaderless)**复制。以及对复制过程中对性能和数据一致性的权衡,同步还是异步等。同时也列举了很多复制中可能出现的问题以及解决办法。但这远远不够,现实世界的复杂性在数据系统中体现的淋漓尽致。数据复制的目的在于可扩展性,容错,高可用性,延迟等等。这些有助于我们理解为何要将数据库设计成这样。数据复制本质上来说是将数据分布在多台机器上,这通常有两种方式:复制:在不同的节点保存原创 2020-08-02 14:28:35 · 400 阅读 · 0 评论 -
第三章 存储与检索
第二章关注的是将数据录入数据库系统的格式,以及检索出来的机制,这章关注同样的问题,但是是从数据库的视角来看:数据库如何存储我们的数据,以及如何检索出我们需要的数据。书中开篇列举了一个 使用bash 命令制作的简单数据库的例子:db_set(){ echo "$1,$2" >> database}db_get () { grep "^$1," database | sed -e "s/^$1,//" | tail -n 1}这个数据库非常简单,是一个仅追加的日志文件,即写原创 2020-07-07 00:52:31 · 761 阅读 · 2 评论 -
第二章 数据模型和查询语言
第二章 数据模型和查询语言总结本章开始介绍了关系型数据库,非关系型数据库,图模型数据。首先解释了关系模型和文档模型是什么,然后指出了从数据库模型到应用程序对象模型之间的不匹配(称为对象关系不匹配)我们通常使用 ORM 框架来解决从数据库模型到程序对象的转换。接着引出了一对多、多对一、多对多关系以及查询的局部性。和 json 这种数据格式使用了 linked 上的简历来说明这几种关系,一个人有多份工作经历;多个人在同一个地区工作;一个用户为另一个用户的推荐;以及使用者两种模型进行存储的做了比较最后原创 2020-06-12 00:14:20 · 327 阅读 · 0 评论 -
第一章 可靠性、可扩展性、可维护性
数据系统首先讲述了大多数应用都是数据密集型而非 计算密集型,更多的问题来自于 数据量、数据变更速度,列举一些通用组件数据库系统:存储数据;缓存系统:提升读取速度;搜索索引:按照关键字搜索,以及过滤;批处理:定期处理大量的数据流处理:向其他进程发送消息,进行异步处理这些系统都面临着以下这些共同的问题可靠性是指系统在困境中也可以正常工作,讲包括故障和失效故障指系统的一部分状态偏离其标准硬件故障:磁盘可以提供 RAID;双路电源;热插拔 CPU 等等可以解决软件故障:系统错误,特定原创 2020-06-07 14:57:45 · 3813 阅读 · 0 评论