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