摘要:数据库简介数据库:顾名思义,就是数据的仓库,它是长期存储在计算机内,有组织的、可共享的数据的集合。数据库管理系统(DBMS: 用来对数据进行存储、管理等操作的软件)数据库分类数据库通常分为:层次式数据库、网络式数据库和关系式数据库三种。而不...
数据库:顾名思义,就是数据的仓库,它是长期存储在计算机内,有组织的、可共享的数据的集合。
数据库管理系统(DBMS: 用来对数据进行存储、管理等操作的软件)
数据库通常分为:层次式数据库、网络式数据库和关系式数据库三种。而不同的数据库是按不同的数据结构来联系和组织的。
而在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库(SQL)和非关系型数据库(NoSQL,Not Only SQL)。
关系 :关系就是二维表。
并满足如下性质:
表中的行、列次序并不重要
行row:表中的每一行,又称为一条记录
列column:表中的每一列,称为属性,字段 field 域
主键PK(Primary key):用于唯一确定一个记录的字段 外键FK
域domain:属性的取值范围,如,性别只能是‘男’和‘女’两个值
缺点: 性能没有非关系性数据库好 优点:数据统计有严谨性
NoSQL数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。
搜索键值存储数据库(key-value):
键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据库,因为使用key主键访问,所以会获得很高的性能及扩展性。Key/value模型对于IT系统来说的优势在于简单、易部署、高并发。典型产品:Memcached、Redis、MemcacheDB
列存储(Column-oriented)数据库
列存储数据库将数据存储在列族中,一个列族存储经常被一起查询的相关数据,比如人类,我们经常会查询某个人的姓名和年龄,而不是薪资。这种情况下姓名和年龄会被放到一个列族中,薪资会被放到另一个列族中。
这种数据库通常用来应对分布式存储海量数据。
面向文档(Document-Oriented)数据库
文档型数据库可以 看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。面向文档数据库会将数据以文档形式存储。典型产品:MongoDB 适用于敏捷开发
常见关系型数据库:
大型:Oracle、DB2 等;
中型:SQL Server、MySQL 等;
小型:Access 等。
关系型数据库:
关系型数据库,是指采用了关系模型来组织数据的数据库。
简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
关系型数据库的最大特点就是事务的一致性:传统的关系型数据库读写操作都是事务的,具有ACID的特点,这个特性使得关系型数据库可以用于几乎所有对一致性有要求的系统中,如典型的银行系统。
优点:
容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解
使用方便:通用的SQL语言使得操作关系型数据库非常方便
易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率
缺点:
数据读写必须经过sql解析,大量数据、高并发下读写性能不足。对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
具有固定的表结构,因此扩展困难。
多表的关联查询导致性能欠佳
非关系型数据库:
特点:
非结构化的存储。
基于多维关系模型。
具有特有的使用场景。
优点:
高并发,大数据下读写能力较强。(基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高)
基本支持分布式,易于扩展,可伸缩。(因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。)
简单,弱结构化存储。
缺点:
事务支持较弱。
通用性差。
无完整约束复杂业务场景支持较差。
相信看完本文,你已经对MySQL数据库有了大致的了解,如果上面内容讲得不是很完善或者清楚,你想更深入的学习数据库,也可以通过视频系统的学习mysql,推荐老杜讲的MySQL教程,开启我们的MySQL学习之旅,学习更多的MySQL知识。