一、数据库基础
1、为什么要使用数据库
持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。持久化的大多数时候是将内存中的数据存储在数据库中,当然也可以存储在磁盘文件、XML数据文件中。
方便管理数据(例如:快速的检索等)
2、什么是数据库
DB:数据库(Database)即存储数据的“仓库”。它保存了一系列有组织的数据。
DBMS:数据库管理系统(Database Management System):是一种操纵和管理数据库的大型软件,例如建立、使用和维护数据库。
目前互联网上常见的数据库管理软件有Sybase、DB2、Oracle、MySQL、Access、Visual Foxpro(面向对象型)、MS SQL Server、Informix、PostgreSQL(最符合SQL标准,但是性能差)这几种。以下是2019年DB-Engines Ranking 对各数据库受欢迎程度进行调查后的统计结果:(查看数据库最新排名:https://db-engines.com/en/ranking)
MySQL是一种开放源代码的关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购.目前 MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,使得很多互联网公司选择了MySQL作为网站数据库(Facebook, Twitter, YouTube,阿里的蚂蚁金服,去哪儿,魅族,百度外卖,腾讯)。
阿里巴巴/蚂蚁金服主要使用两种关系数据库:OceanBase和MySQL。数据规模:MySQL单台机器TB级,OceanBase单个集群从几个TB到几百个TB皆有。
去哪儿:MySQL,Redis,HBase
腾讯社交网络主要使用深度定制MySQL数据库+自研NoSQL,规模万台以上服务器,千万级qps。
百度外卖目前线上主要使用Mysql、redis等数据库。MySQL 数据数百TB级,redis 数据几TB级。
目前魅族OLTP场景主要使用的是MySQL,缓存服务使用的是Redis。数据库实例近1000,数据大小100T+, redis
关系型数据库,采用关系模型来组织数据,简单来说,关系模型指的就是二维表格模型。
类似于Excel工作表。非关系型数据库,可看成传统关系型数据库的功能阉割版本,基于键值对存储数据,通过减少很少用的功能,来提高性能。
关系型数据库设计规则:
遵循ER模型和三范式
* E entity 代表实体的意思 对应到数据库当中的一张表
* R relationship 代表关系的意思
三范式:1、列不能拆分 2、唯一标识 3、关系引用主键
具体体现:
* 将数据放到表中,表再放到库中。
* 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
* 表具有一些特性,这些特性定义了数据在表中如何存储,类似java和python中 “类”的设计。
* 表由列组成,我们也称为字段。每个字段描述了它所含有的数据的意义,数据表的设计实际上就是对字段的设计。创建数据表时,为每个字段分配一个数据类型,定义它们的数据长度和字段名。每个字段类似java 或者python中的“实例属性”。
* 表中的数据是按行存储的,一行即为一条记录。每一行类似于java或python中的“对象”。