C(Chapter)

C-01.数据库概述1.为什么要用数据库

  • 持久化(persistence):把数据保存到可掉电式存储设备(硬盘)中以供之后使用。大多数情况下,特别是企业应用,数据持久化是将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多使用各种关系数据库来完成。
  • 持久化的主要作用是将内存中的数据存到关系型数据库中,当然也可以存储在磁盘文件,XML数据文件中。

2.数据库与数据库管理系统2.1 数据库的相关概念

DB:数据库(Database)。存储数据的仓库,其本质是一个文件系统。保存了一系列有组织的数据。
DBMS:数据库管理系统(Database Management System)。是一种操作和管理数据库的大型软件,用于建立,使用和维护数据库,对数据库进行统一的管理和控制。用户通过数据库管理和访问数据库中表的数据。
SQL:结构化查询语言(Structured Query Language)。专门用来与数据库交互的语言。

2.2 数据库和数据库管理系统的关系

数据库管理系统(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中用户的数据。

3.MySQL优势为什么很多厂商选择MySQL?

  • 1.开放源代码,使用成本低。
  • 2.性能卓越,服务稳定。
  • 3.软件体积小,使用简单,并且易于维护。
  • 4.历史悠久,社区用户活跃,遇到问题容易解决。
  • 5.很多互联网公司再用,经过了时间的考验。

4.RDBMS与非RDBMS

RDBMS(Relationship Database Management System)

4.1 关系型数据库(RDBMS)4.1.1 实质

  • 关系型数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系(二维表格)。
  • 关系型数据库以行(row)列(column)的形式存储数据,以便于用户理解。这一系列的行和列被称为表(table),一组表组成了一个库(database)。
  • 表和表之间的数据记录有关系(relationship)。现实世界里的各种实体以及实体之间的各种关系均用关系模型来表示。关系型数据库,就是建立在关系模型基础上的数据库。
  • SQL就是关系型数据库的交互语言。

4.1.2 优势

  • 复杂查询 可以用SQL语句方便的在一个表以及各个表之间,做非常复杂的数据查询。
  • 事务支持 使得对于安全性很高的数据访问要求得以实现。

4.2 非关系型数据库(非DBMS)4.2.1 介绍

非关系型数据库,可以看成关系型数据库的简化版本,基于键值对存储数据,不需要经过SQL层的解析,性能非常高。同时,减少了很多不常用的功能,进一步提高了性能。
目前主流的非关系型数据库都是免费的。

4.2.2 有那些非关系型数据库

相比于SQL,NoSQL泛指非关系型数据库,包括了键值型数据库,文档型数据库,搜索引擎和列存储等,还有图形数据库。也只有NoSQL才能将这些数据库都概括。
键值型数据库
键值型数据库,通过key-value键值的方式来存储数据,其中key和value可以是简单的对象,也可以是复杂的对象。key作为唯一的标识符,优点是查找速度快,而且明显优于关系型数据库,确定是无法像关系型数据库一样使用条件过滤(比如WHERE),如果不知道去哪里找数据,就会遍历所有的键,消耗大量的CPU资源。
键值型数据库典型的使用场景就是作为内存缓存。Redis是最流行的键值型数据库。
文档型数据库
可以存放文档,可以是xml格式,json格式。再数据库中文档作为处理信息的基本单位,一个文档相当于一条记录。文档数据库所存放的文档,就相当于键值数据库所存放的值。MongoDB是最流行的文档型数据库。此外还有CouchDB等。
搜索引擎数据库
关系型数据库虽然采用了索引提升了检索效率,但是针对全文索引效率却较低。搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候,才能保证性能最优。核心原理是倒排索引
典型产品:ES(Elasticsearch),Solr,Splunk等。
列式数据库
列式数据库是相对于行式存储的数据库,Oracle,MySQL,SQL Server等数据库都是采用的行式存储(Row-based),而列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的I/O,适合于分布式文件系统,不足在于功能相对有限。
典型产品:HBase。
图形数据库
图形数据库,利用了图这种数据结构存储了实体(对象)之间的关系,图形数据库最典型的例子就是社交网络中人与人的关系,数据模型主要是以节点和边(关系)来实现,特点在于能高效的解决复杂的关系问题。
图形数据库顾名思义,就是一种存储图形关系的数据库,它利用了图这种数据结构,存储了实体(对象)之间的关系。关系型数据用于存储明确关系的数据,但对于复杂关系的数据存储却有些力不从心。如社交网络中人物之间的关系,如果使用关系型数据库会非常复杂,用图形数据库将非常简单。
典型产品:Neo4J,InfoGrid等。

4.2.3 NoSQL的演变

NoSQL对SQL做出了很好的补充,比如实际开发中,有很多业务需求,其实并不需要完整的关系型数据库功能,非关系型数据库的功能就足够使用了。这种情况下,使用性能更高成本更低的的非关系型数据库当然是更好的选择,比如:排行榜,定时器等。

5.关系型数据库设计规则

  • 关系型数据库的典型数据结构就是数据表,这些数据表的组成都是结构化的(Structured)。
  • 将数据放到表中,表再放到库中。
  • 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
  • 表具有一些特性,这些特性定义了数据在表中如何存储,类似Java中“类”的设计。

5.1 表,记录,字段

  • E-R(entity-relationship,实体-联系),模型中有三个主要概念是:实体集属性联系集
  • 一个实体集(Class)对应数据库中的一张表(Table),一个实体(Instance)则对应于数据库表中的一行(Row),也称为一条记录(Record)。一个属性(Attribute)对应于数据库中的一列(Cloumn),也成为一个字段(Field)。
  • ORM思想(Object Relational Mapping)体现:数据库中的一张表 Java中一个类,表中的一条数据 类的一个对象(实体),
    表中的一个列 类中的一个字段,属性(Field)。

5.2 表的关联关系

  • 表与表之间的数据记录有关系。现实世界的实体及实体之间的关系均用关系模型来表示。
  • 四种,一对一关系,一对多关系,多对多关系,自我引用。

学习视频是尚硅谷宋红康老师主讲的b站视频,BV1iq4y1u7vj
只是为了记录自己的学习历程,且本人水平有限,不对之处,请指正。