笔记
第一章 FS vs Sql vs NoSql
1.文件系统和数据系统对比
a.文件系统和数据库是对数据不同层次上的抽象。
文件系统完全不了解数据的文件内容的结构。
数据库在一定程度上了解数据的结构,比如关系型数据库知道数据是由哪些字段组成的。
数据库有很多类型,每种的数据模型都不同,是对不同类型的数据的抽象,所以才会有关系数据库,键值数据库,图数据库等等。但这几种数据抽象不是互斥的,而是看应用数据/场景和哪种数据模型更匹配。
b.查询,并发控制等的粒度不同
因为文件系统不了解数据的结构,所以对数据的操作粒度只能在文件级别上(对整份数据进行操作)。
数据库可以对数据进行更精细的操作,比如关系数据库在查询时可以指定列,并发控制可以达到行锁的粒度等。
2.关系数据库的阻抗失衡问题
表是把数据抽象成二维的:行,列
编程语言是把数据成三维的:行,列,层次
ORM可以解决这个问题
3.关系型数据库的致命缺陷和nosql的登场
a.关系型数据库不适应集群场景
b.nosql登场
i)nosql数据库不使用sql
但Cassandra的CQL和SQL很像(说明Cassandra提供对value的查询)
ii)nosql不使用模式
键值,文档,列族,通过名称可以知道,这些对value的抽象不同。
键值完全不了解value的结构。
文档和列族应该知道value结构?
iii)nosql也可以是not only sql
这样nosql不仅仅是一种技术,也是一场技术变革。
1.文件系统和数据系统对比
a.文件系统和数据库是对数据不同层次上的抽象。
文件系统完全不了解数据的文件内容的结构。
数据库在一定程度上了解数据的结构,比如关系型数据库知道数据是由哪些字段组成的。
数据库有很多类型,每种的数据模型都不同,是对不同类型的数据的抽象,所以才会有关系数据库,键值数据库,图数据库等等。但这几种数据抽象不是互斥的,而是看应用数据/场景和哪种数据模型更匹配。
b.查询,并发控制等的粒度不同
因为文件系统不了解数据的结构,所以对数据的操作粒度只能在文件级别上(对整份数据进行操作)。
数据库可以对数据进行更精细的操作,比如关系数据库在查询时可以指定列,并发控制可以达到行锁的粒度等。
2.关系数据库的阻抗失衡问题
表是把数据抽象成二维的:行,列
编程语言是把数据成三维的:行,列,层次
ORM可以解决这个问题
3.关系型数据库的致命缺陷和nosql的登场
a.关系型数据库不适应集群场景
b.nosql登场
i)nosql数据库不使用sql
但Cassandra的CQL和SQL很像(说明Cassandra提供对value的查询)
ii)nosql不使用模式
键值,文档,列族,通过名称可以知道,这些对value的抽象不同。
键值完全不了解value的结构。
文档和列族应该知道value结构?
iii)nosql也可以是not only sql
这样nosql不仅仅是一种技术,也是一场技术变革。
有关键情节透露