从各个地方学习的,不是原创
只是笔记 、笔记、笔记
数据库学习笔记
4 数据库
4.1 关系型数据库
常见的有:MySQL、DB2、Oracle、Microsoft SQL Server、PostgreSQL、Microsoft Access、浪潮K-DB等。
4.1.1关系型数据库的优缺点
优点:
1.容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;
2.使用方便:通用的是SQL语言使得操作关系型数据库非常方便;
3.易于维护;丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概率;
4.支持SQL,可用于复杂的查询。
缺点:
- 为了维护一致性所付出的巨大代价就是其读写性比较差;
- 不擅长大量数据的写入处理;
- 不擅长为有数据更新的表做索引或表机构变更;
- 字段不固定时应用不放便;
- 不擅长对简单查询需要快速返回结果的处理。
4.1.2 关系型数据库的特点及应用场景
特点:
最大的特点,事务的一致性;
通用的SQL语言,使得操作关系型数据库非常方便;
ACID:原子性、一致性、隔离性、持久性
表结构严格,存储数据很难出错
应用场景:
需要做复杂处理的数据;
数据量不是特别大的数据;
对安全性要求高的数据;
数据格式单一的数据。
4.2 非关系型数据库
常见得有:Nosql、Cloudant、MongoDB、redis、HBase
4.2.1 非关系型数据库的优缺点
优点:
- 无需经过sql层的解析,读写性能很高;
- 基于键值对,数据没有耦合性,容易扩展;
- 存储数据的格式:Nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。
缺点:
- 不提供sql支持,学习和使用成本较高;
- 无事务处理,附加功能和报表等支持也不好。
4.2.2 非关系型数据库的特点及使用场景
特点:
存储结构灵活,没有固定的结构;
对事物支持比较弱,但对数据的并发处理性能高;
大多数不使用SQL语言操作数据。
适用场景:
数据结构不固定场景;
对事物要求不高,但读写并发比较大的场景;
对数据的处理操作比较简单的场景;
缓存(数据查询,短连接,新闻内容,商品内容等),使用最多;
任务队列(秒杀,抢购,12306等);
应用排行榜;
网站访问统计
数据过期处理(可以精确到毫秒)
分布式集群架构中的session问题。
4.3 区别 - 非关系型数据库是基于CAP模型,而传统的关系型数据库是基于ACID模型的;
- 数据存储结构:
关系型数据库一般都是有固定的表结构,并且需要通知DDL语句来修改表结构,不是很容易进行扩展;而非关系型数据库的存储机制就有很多了,比如基于文档的,K-V键值对的,还有基于图的等,对于数据的格式十分灵活没有固定的表结构,方便扩展,因此如果业务的数据结构并不是固定的或者经常变动比较大的,那么非关系型数据库是个好的选择。 - 可扩展性:
传统的关系型数据库给人一种横向扩展难,不好对数据进行分片等,而一些非关系型数据库则原生就支持数据的水平扩展(比如mogodb的sharding机制),并且这可能也是很多NoSQL水平扩展容易但对于向跨片进行joins这种场景都没有什么太好的解决办法,不管是关系型还是非关系型数据库,解决水平扩展或者跨片式Joins这种场景,在应用层和数据层中间加一层中间件来做数据处理也许是个好办法。 - 数据一致性:
非关系型数据库一般强调的是数据最终一致性,而不没有像ACID一样强调数据的强一致性,从非关系型数据库中读到的有可能还是处于一个中间态的数据,因此如果你的业务对于数据的一致性要求很高,那么非关系型数据库并不一个很好地选择,非关系型数据库可能更多的偏向于OLAP场景,而关系型数据库更多偏向OLTP场景。
如果对你有用的话,表示很开心;如果没用,也没有关系