为什么要使用数据库
- 持久化:把数据保存到可掉电式存储设备中以供之后使用。数据持久化意味着将内存中的数据保存到硬盘上加以固化,而持久化的实现过程大多通过各种关系数据库来完成
持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中
数据库的相关概念
DB:数据库(Database)
即存储数据的仓库,本质是一个文件系统
- DBMS:数据库管理系统(Database Management System)
是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据
- SQL:结构化查询语言(Structured Query Language)
专门用来与数据库通信的语言
- 数据库与数据库管理系统的关系:
数据库管理系统用于管理多个数据库,一般开发人员会针对每一个应用创建一个数据库,每个数据库中创建多个表,用来保存程序中实体用户的数据
常见的数据库
- Oracle
- 1979年,Oracle 2诞生,它是第一个商用的RDBMS(关系型数据库管理系统)。随着Oracle软件的名气越来越大,公司也改名为Oracle公司
- 2009年,总计74亿美元收购SUN,此前的2008年,SUN以10亿美元收购MySQL
- 2013年,甲骨文超越IBM,成为继Microsoft后的全球第二大软件公司
- MySQL
- 是一个开放源代码的关系型数据库管理系统
- MySQL使用标准的SQL数据语言格式
- MySQL支持大型的数据库,可以处理拥有上千万条记录的大型数据库
- MySQL可以运行在多个系统上,并且支持多种语言
- SQL Server
是微软开发的大型商业数据库,可以很好地与Microsoft BackOffice产品集成
Oracle VS MySQL
复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询
-
非RDBMS
可以看出传统关系型数据库的功能阉割版本,不需要经过SQL层的解析,性能非常高。同时,通过减少不常用的功能,进一步提高性能
键值型数据库
通过key-value键值的方式来存储数据,其中的key和value可以是简单的对象,也可以是复杂的对象。key作为唯一的标识符,优点是查找速度快,缺点是无法像关系型数据库一样使用条件过滤。如果你不知道去哪里找数据,就要遍历所有的键,这就会消耗大量的计算。键值型数据库典型的使用场景是作为内存缓存,Redis是最流行的键值型数据库
- 文档型数据库
此类数据库可以存放并获取文档,可以是XML、JSON等格式。在数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。MongoDB是最流行的文档型数据库
- 搜索引擎数据库
搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。核心原理是“倒排索引”,典型产品有Elasticsearch等
- 列式数据库
列式数据库是相对于行式存储的数据库,是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的I/O,适合于分布式文件系统,不足在于功能相对有限。典型产品有HBase等
关系型数据库设计规则
表、记录、字段
ER(entity-relationship)模型中有三个主要概念是:实体集、属性、联系集
- 一个实体集对应于数据库中的一个表
- 一个实体对应于数据库表中的一行,也称为一条记录
- 一个属性对应于数据库表中的一列,也称为一个字段
ORM(Object Relational Mapping)思想体现:
一对一关系
- 一对多关系:在从表创建一个字段,作为外键作为主表的主键
- 多对多关系:必须创建第三个表,称为联接表,它将多对多关系划分为两个一对多关系,将这两个表的主键都插入到第三个表中
- 自我引用,如:

