Demon.Lee 2022-03-23 12:39

如何权衡关系数据库与NoSQL数据库 简单总结:

1、RDMS

  • 通过定义关系,数据库自身完成了很多业务逻辑计算,并通过 ACID 保证事务,从而为上面的应用层释放了生产力,所以数据库往往也是高并发系统的瓶颈。
  • 统一的 SQL 语言屏蔽了底层不同 RDMS 之间的差异,从而为应用层提供统一的、几乎没有差异的 API
  • 利用索引、缓存等特性,关系数据库支持亿级以下的数据量时,性能并不差;而并发度,一般可以支持上千个并发连接
  • 内存的数据结构多样,无法合并到数据库表中的一个字段,需要配合 ORM 框架进行映射
  • 由于业务关系是在表中预定义好字段,所以一旦变动数据模型,代码需要跟着改,存量数据还要迁移
  • 关系数据库水平伸缩(AKF X 轴),主从分离后,主库写压力还是很大,而沿着 AKF Z 轴按分库分表拆分,ACID 又无法保证。

2、NoSQL

  • NoSQL 放弃了与分布式环境相悖的 ACID 事务,提供另一种聚合数据模型,基于 BASE 的柔性事务实现高并发可伸缩
  • 在分布式事务中,ACID 的 C 要以满足 CAP 中的 C (副本的一致性)为前提
  • 既然 NoSQL 没法自己搞定 ACID,所以需要应用层处理事务,比如 2PC,3PC,消息队列,TCC,SAGA 等方案
  • NoSQL 主要四类:k/v 数据库(如 Redis),Document-oriented 数据库(如 MongoDB),Column-oriented 数据库(如 Cassandra),Graph 数据库(如 Neo4j),日常使用的主要是前三种。
  • NoSQL 可伸缩性好,可以基于 k/v 模型沿着 AKF Z 轴扩展到上万个节点
  • 数据分片后,可以基于 MapReduce 思想,提高并行计算能力
  • 冗余备份,系统容灾能力更好
  • 如果每个 key 对应的 value 已经满足了数据要求,则单机性能会比关系数据库更好

3、其他

  • 关系数据库是为了单机而设计的,如果把 ACID 事务延伸到分布式系统中,那实现成本会影响到服务的基本可用性
  • PostgreSQL 数据库的默认事务级别为 READ COMMITTED,MySQL 数据库的默认事务级别为 REPEATABLE READ
  • NoSQL 是对 RDMS 的补充,尤其在分布式事务中
Demon.Lee 2022-03-21 23:07

"Aha! Amazing!"

使用了 macOS 12.3 和 iPadOS 15.4 带来的通用控制功能后,我不得不手动点个赞。

非常喜欢这个功能,一个写文章,一个查资料,双剑合璧,赞。

当然,现在还没有深入使用,期待。

Demon.Lee 2022-03-19 23:35

1、焦虑是一种不确定感,不确定未来的自己是否还有竞争力。

2、陶辉老师认为消除焦虑需具备两种能力:构建自己的知识体系和表达力。

3、构建知识体系就是结网,学的多,习的多,大脑中知识容量达到一定程度后就会融合,量变引起质变。那如何构建自己的知识体系?学底层知识:

  • 操作系统,计算机软件的大管家
  • 算法与数据结构,《算法导论》不得不读
  • 计算机网络,整个网络的基石

4、学会金字塔表达思维,先结论,后论据,论据还要按照重要性排序。“再硬核的知识体系也需要通过优秀的表达力,转换为动听的语言和精练的文字,再通过互联网跨越时空,让你跳出公司,在整个行业中提升影响力、竞争力。”

Demon.Lee 2022-03-18 22:29

你好,爱因斯坦同学

  • 爱因斯坦的一生,尤其是思想的演化,用他自己的话来说,就是“对‘惊奇’的不断摆脱”——也就是不断寻找“惊奇”背后那种“深深隐藏着的东西”。
  • “为惩罚我鄙视权威,命运将我变成了权威。”
  • “我这种类型的人,其本质恰恰就在于他想的是什么和他是怎样想的”。

作者笔下的文字,让我印象最深的是思辨能力,通过对大量阅读中积累的素材进行不同维度的对比,来验证爱因斯坦的生平事迹是否合理,这应该就是真正做学问的人吧,敬佩。

附图:大佬 17 岁时写的情书

Demon.Lee 2022-03-09 13:46

读前人写过的书,走前人走过的路,不但是为了追忆往昔,也是为了找到今天的位置。

但是还有书籍 第二季》收官了,让人感动,又给人温暖。

很喜欢片头的音乐。

Demon.Lee 2022-03-09 09:48

已经快一年没买过彩票了,不做机会主义者。但还是要警醒,防止浑然不知中就掉进了机会主义的深渊。

Demon.Lee 2022-03-07 09:30

很多财富知识,年轻时不懂,所以钱一直在贬值,因为个体跑不过整体的通货膨胀。

因为不知道,所以要不断学习。

这两天又有点颓废,反思自己。

Demon.Lee 2022-03-06 10:34

和菜头·《情绪之上》

“无论个人的关注点在哪里,日常生活依然需要自己全力以赴。无论个人的情绪如何变化,客观世界也并不随之发生响应或者改变。
……
你看那芭蕉,它的叶片不曾因为雨点的打击就要变成仙人掌那样的尖刺状,也不因为阳光明媚就无限生长延伸到遮天蔽日。”

写的真好。

Demon.Lee 2022-03-03 13:48

遇事不决,量子力学。

但当我知道,那些离开的人其实并没有真正远去,而可能经常陪伴在我们身边时,一阵莫名的感动浮上心头,好暖。

Demon.Lee 2022-02-26 23:09

应用程序,操作系统,驱动程序,外网设备之间的关系

  • 应用程序如果要操作外网设备(比如网卡,硬盘等),需要通过系统调用实现,即调用操作系统内核,由内核调用对应设备的驱动程序来操作设备。
  • 设备如果要进行输入(比如网卡接收网络包,另外如鼠标、键盘等都是输入设备),一般需要通过硬件发送中断事件来实现。中断事件会通过指定电路到达 CPU,CPU 将会停下当前正在执行的任务,然后调用中断处理程序来响应事件,中断处理程序根据中断事件的编号找到对应的驱动程序,然后调用。

也就是说,驱动程序也是一种程序,只不过比较底层,在操作系统层面会有统一的 API 抽象,这些驱动程序会按照标准的 API 来实现对某类设备的操作。

附图为《网络是怎样连接的》中关于网卡是如何发送和接收数据的相关内容节选。