一、数据库简介
1.什么是数据库
数据库其实是一种软件的概念,他是安装在我们操作系统之上,对数据进行操作的管理软件,称作(DB DataBase),用来存储和操作数据,我们常说的mysql,oracle之类,其实是DBMS(数据库管理系统),只是在开发中常称为数据库
2.数据库的分类
常说的数据库分为两大类:
关系型数据库 | 非关系型数据库 | |
---|---|---|
种类 | mysql,oracle,DB2,Sql Server .... | Redis MongoDB ElasticSearch... |
联系 | 通过表与表之间,行与列之间的关系进行数据的存储 | 数据以对象的形式存储在数据库中,对象之间的关系通过每个对象自身属性来决定 |
3.数据库概述
1)关系型数据库
关系型数据库的关系主要体现在结构化,其面向记录,创建在二维表格模型的基础上,天然就是表格的形式
2)非关系型数据库
我们常用NoSQL来描述非关系型数据库,网上常用的一个描述是,NoSQL=NOT ONLY SQL 不仅仅是sql 而不是NOT SQL
非关系型数据库的产生是为了应对Web2.0纯动态网站类型的三高:对数据库高并发读写需求 对海量数据高效存储与访问需求 对数据库高扩展性与高可用性需求
3)综合
关系型数据库和非关系型数据库都有各自的特点与应用场景,两者的紧密结合将会给Web2.0的数据库发展带来新的思路。让关系数据库关注在关系上,非关系型数据库关注在存储上。例如,在读写分离的MySQL数据库环境中,可以把经常访问的数据存储在非关系型数据库中,提升访问速度。
二、数据库的区别
1.数据库存储方式不同
关系型和非关系型数据库的主要差异是数据存储的方式,关系型数据天然就是表格形式的,存储在数据库的行和列中,表之间通过关联协作存储,较为容易提取数据。
非关系型数据库常以大块的形式组合在一起,数据常常存储在数据集中,类似文档、键值对或者图结构,影响数据存储和提取的方式就是数据和其特性。
2.数据库扩展方式不同
sql关系型数据库的扩展是纵向扩展的,主要是提高数据处理能力,使用速度更快的计算机,关系型数据库的数据存储在关系表中,操作的性能瓶颈可能涉及多个表,需要提高计算机性能来克服,但是纵向扩展总有上限。而NOSQL数据库是横向扩展,非关系型数据库存储天然就是分布式的,可以给资源池添加更多普通数据库服务器节点来分担负载,是没有上限的。
3.对事务性的支持不同
从数据操作的高书屋和复制数据的查询来说,传统的sql数据库性能的优秀和稳定性无疑是最好的选择,sql数据库支持事务原子性细粒度控制,且易于回滚事务。nosql虽然也可以使用事务操作,但是稳定性肯定不能和关系型数据库比较,非关系数据库常用以扩展性和大数据量处理的方面
4.数据库模型不同
非关系型数据库是基于CAP模型,而传统的关系型数据库是基于ACID模型的
三、数据的优缺点
1.关系型数据库
1)优点
1.容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;
2.使用方便:通用的是SQL语言使得操作关系型数据库非常方便;
3.易于维护: 丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概率;
4.支持SQL: 可用于复杂的查询。
2)缺点
-
为了维护一致性所付出的巨大代价就是其读写性比较差;
-
不擅长大量数据的写入处理;
-
不擅长为有数据更新的表做索引或表机构变更;
-
字段不固定时应用不方便;
-
不擅长对简单查询需要快速返回结果的处理。
3)关系型数据库的特点及应用场景
特点:
最大的特点,事务的一致性;
通用的SQL语言,使得操作关系型数据库非常方便;
ACID:原子性、一致性、隔离性、持久性
表结构严格,存储数据很难出错
应用场景:
需要做复杂处理的数据;
数据量不是特别大的数据;
对安全性要求高的数据;
数据格式单一的数据。
2.非关系型数据库
1)优点
- 无需经过sql层的解析,读写性能很高;
- 基于键值对,数据没有耦合性,容易扩展;
- 存储数据的格式:Nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。
2)缺点
-
不提供sql支持,学习和使用成本较高;
-
无事务处理,附加功能和报表等支持也不好。
3)非关系型数据库的特点及使用场景
特点:
存储结构灵活,没有固定的结构;
对事物支持比较弱,但对数据的并发处理性能高;
大多数不使用SQL语言操作数据。
适用场景:
数据结构不固定场景;
对事物要求不高,但读写并发比较大的场景;
对数据的处理操作比较简单的场景;
缓存(数据查询,短连接,新闻内容,商品内容等),使用最多;
任务队列(秒杀,抢购,12306等);
应用排行榜;
网站访问统计
数据过期处理(可以精确到毫秒)
分布式集群架构中的session问题。