读书笔记《数据密集型应用系统设计》- 高可靠性、高可展性、可维护性 & 数据模型与查询语言

简介: 《数据密集型应用系统设计》是一本很好介绍数据密集类系统设计原理的纲要性书籍,笔者再次阅读下,记录一些读书笔记,也写一些自己的思考穿插其中,以做备忘。

第一章、高可靠性、高可展性、可维护性

笔者按:我们总是讲述系统的设计,其实大部分在可维护性上缺乏建设,导致后期系统难以维护,又不得不重新造轮子,把前人的推翻。在高可靠性上由于直接关系生而死,一般来还是做了一定的冗余建设,在扩展性上大部分由于中间件的建设及分布式理论的成熟基本没有太大的问题,就是在性价比上可以掰扯掰扯。

大部分的数据类系统设计如此,有 数据库、缓存、全文,再加一个消息队列推出消息。其实在数据库内部也是如此,有磁盘、有cache、有CDC可以订阅log,现在不少数据库也支持全文的检索,包括local的全文以及global的。

1.1 可靠性:容忍硬件、软件失败、认为错误

【硬件故障、软件故障、人为失误】

1.2 扩展性:评测负载与性能、百分位数、吞吐量

  • 如果系统以某种速度增长,我们该怎么办?
  • 什么是负载? 不同系统有不同的定义。
  • 讲述了一个以Feeds流的例子,是写放大,还是读放大? 有一些用户被关注的人有数亿,其采取写放大不显示,最后采取混合模式。大户是读放大。
  • 描述性能? SLA
  • 离线批处理更加关心 吞吐量,在线关注的是 响应时间。
  • 平均xx 往往不能衡量 真是的情况,一般采取99分为等来度量。 直接影响到体检,一般采取99.9%的时间是多少?
  • 如果解决可扩展性问题?
  • 自动检测,手工拟合
  • 未来分布式系统会成为标配
  • 对于早期创业的产品,功能快速迭代比性能的扩展性更加重要

1.3、可维护性:可运维、简单与可演化性

大部分人并不喜欢维护老的系统;但软件的生命周期里面大部分处于维护状态;

可运维性、简单性、可演化性;

  • 可运维性:良好的操作性经常可以化解软件的局限,不规范的操作最终会击垮软件。
  • 简单性:一个复杂的软件最终是一个大泥潭。降低复杂性,可以大大提高软件的可维护性。
  • 可演化性:一成不变的的系统需求基本没有。

第二章:数据模型与查询语言

笔者按:笔者在16~19年,在阿里带了3年多的HBase多模系统,后续演化为LIndorm多模,由于之前一直是范式论,在接触NoSQL后,第一的思维转变就是反范式。而今,数据库种类也日益丰富,各有侧重;从趋势看在NoSQL、NewSQL等各种边界也在融合。

1.1、关系型、文档型、图类型

  1. 关系从Edgar Codd于1970年提出,一直发展至今。进入21世纪,NoSQL兴起;
  2. NoSQL:【扩展性、开源软件、特定查询,自由的Scheme】;
  3. 对象关系不匹配:ORM  => JSON可能更加合适; JSON减少了应用程序代码和存储层之间的阻抗失配;
  4. 使用ID的好处是ID对于人类没有任何意义,所以永远都不需要更改;
  5. 关系型数据库与文档数据库也在渐渐融合;
  6. 一些其他的 全文检索、针对对撞机设计的存储查询(数白PB)、GenBank基因库软件、时序的OpenTSDB;

关系型 - 数据库&数仓

文档类型(以JSON为主)

图 - 数据库

开始时间

1970

21世纪

关系一般

关系少,ID查询较多

关系较多,图核心在于描述关系

应用场景

ERP系统

互联网

社交

SQL

JOSN

Cypher 、SPARQL和

代表数据库

MySQL

MongoDB

Neo4j

灵活性

比较强制,不灵活,加字段需要新加一列

Scheme比较灵活

比较灵活

设计模式

多对一、多对多关系,范式设计

反范式(先设计业务,再设计API)

反范式

可扩展性

一般

扩展性较好

一般

模型

写时强校验

读时校验

不是数据库强执行

读时校验

不是数据库强执行

查询局部性

相同数据放在一起,一般读一次IO或者数次IO

会分散IO

看按顶点点还是按边

1.2、数据查询语言

命令式查询语言,声明式查询语言。

命令式查询语言

声明式查询语言

含义

指定每一步怎么做

告诉系统,想要啥

代表

编程语言

SQL、CSS

优势

可以按照最高执行路径写,深入细节

简洁、容易使用、隐藏数据库细节

MapReduce是一种编程模型,不是命令式,也不是声明式,是介于两者之间的编程模型。

目录
打赏
0
57
57
0
15375
分享
相关文章
大数据在智慧金融中的应用
在智能算法交易中,深度学习揭示价格波动的复杂动力学,强化学习依据市场反馈优化策略,助力投资者获取阿尔法收益。智能监管合规利用自然语言处理精准解读法规,实时追踪监管变化,确保机构紧跟政策。大数据分析监控交易,预警潜在违规行为,变被动防御为主动预防。数智化营销通过多维度数据分析,构建细致客户画像,提供个性化产品推荐。智慧客服借助 AI 技术提升服务质量,增强客户满意度。
ly~
334 3
|
9月前
|
使用 Smart-doc 记录 Spring REST API
使用 Smart-doc 记录 Spring REST API
186 0
DataphinV4.1大升级: 支持Lindorm开启高性价比数据治理,迎来“公共云半托管”云上自助新模式
Dataphin 是阿里巴巴旗下的一个智能数据建设与治理平台,旨在帮助企业构建高效、可靠、安全的数据资产。在V4.1版本升级中,Dataphin 引入了Lindorm等多项新功能,并开启公共云半托管模式,优化代码搜索,为用户提供更加高效、灵活、安全的数据管理和运营环境,提升用户体验,促进企业数据资产的建设和价值挖掘。
1842 3
DataphinV4.1大升级: 支持Lindorm开启高性价比数据治理,迎来“公共云半托管”云上自助新模式
【云栖2023】张治国:MaxCompute架构升级及开放性解读
本文根据2023云栖大会演讲实录整理而成,演讲信息如下 演讲人:张治国|阿里云智能计算平台研究员、阿里云MaxCompute负责人 演讲主题:MaxCompute架构升级及开放性解读 活动:2023云栖大会
61327 17
人机协作:大模型与AIGC技术的融入
【1月更文挑战第15天】人机协作:大模型与AIGC技术的融入
548 2
人机协作:大模型与AIGC技术的融入
spring-state-machine持久化restore踩坑
spring-state-machine持久化restore踩坑
224 0
读书笔记《数据密集型应用系统设计》- 数据存储与检索
《数据密集型应用系统设计》是一本很好的介绍数据密集类系统设计原理的纲要性书籍,笔者再次阅读下,记录一些读书笔记,也写一些自己的思考穿插其中,以做备忘。
291 57
OkHttp实现全局过期token自动刷新
问题 一次面试遇到的一个问题,其实也是实际开发中很容易遇到的问题,特此记录一下。 当请求某个接口的时候,我们会在请求的header中携带token消息,但是发现token失效,接口请求报错,怎么马上刷新token,然后重复请求方才那个接口呢?这个过程应该说对用户来说是无感的。
3589 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问