【MySQL】数据库概述

1、数据库

  • 数据库作用:持久化(persistence),把数据保存到可掉电式存储设备中以供之后使用。可以通过数据库将内存中的数据保存到硬盘上加以”固化”。

  • DB数据库(Database)即存储数据的“仓库”,其本质是一个文件系统。按一定组织结构保存数据。

  • DBMS:数据库管理系统(Database Management System)是操纵和管理数据库的软件。用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中的数据。

  • SQL:结构化查询语言(Structured Query Language)专门用来与数据库通信的语言。

  • ODBC:开放数据库互连(Open Database Connectivity)C语言开发,提供了一种标准的API来访问数据库管理系统。用户可以直接将SQL语句送给ODBC。API利用SQL来完成其大部分任务。与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。

  • JDBC:Java与数据库的接口规范 (Java DataBase Connectivity) 用Java实现了驱动程序,具有跨平台特性。

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

2、关系型数据库(RDBMS)

  • 关系型数据库模型(Relational Database Management System,RDBMS)把复杂的数据结构归结为简单的二元关系,即二维表格形式
  • 关系型数据库以行(row) 和列(column) 的形式存储数据。一系列的行和列被称为表(table) ,一组表组成了一个库(database)
  • 场景:主要用于执行规模小而读写频繁,或者大批量读极少写访问的事务。
  • 包括:MySQL、Oracle、SQL Server、PostgreSQL、Microsoft Access。几乎所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。
  • RDBMS优势:
    复杂查询:可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
    事务支持:使得对于安全性能很高的数据访问要求得以实现。

2.1 相关概念

  • 行(row) 是一组相关的数据。记录一条数据数据表就增加一行。
  • 列(column)由字段名和字段数据集合组成,一列包含了相同的数据。每一列有多个属性:为空、默认值、长度、类型等。
  • 数据表:是数据的矩阵,用来存储、操作数据的逻辑结构。每张表由行和列组成。一个数据库中可以有多个数据表表名具有唯一性
  • 表与表之间的数据记录有四种关系模型:一对一关联、一对多关联、多对多关联、自我引用。

  • 索引:是对数据库表中一列或多列的值进行排序的一种结构。可快速访问数据库表中的特定信息。
  • 事务(transaction):是用户定义的一个数据库操作序列,具有原子性。
  • 冗余:存储两倍数据,冗余可以使系统速度更快。
  • 数据类型:决定了数据的存储格式:数值、日期/时间、字符串(字符/二进制)类型。

  • 主键(primary key):一个数据表中只能包含一个主键。可以查询数据。取值不能为空值(Null)。表中的满足条件的列可以作为主键。
  • 外键(foreign key):用于关联两个表。父数据表(Parent Entity)的主键放在另一个数据表做属性以创建彼此的关系。
  • 两种建表原则:
    1.外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。
    2.外键是主键:主表的主键和从表的主键,形成主外键关系。

  • 复合键:将多个列作为一个索引键,一般用于复合索引。
  • 关系键:是一个表中的一个或几个属性,用来标识该表与另一个表产生联系。
  • 超键(superkey):能够唯一标识多元组(即“行”)的属性集。包含所有属性的集叫做明显(平凡)超键。
  • 候选键(candidate key):是某个关系变量的一组属性所组成的集合,是不含有多余属性的超键:最小超键。
  • 代理键:数据表中的候选键都不适合当主键时,选择一个无意义但唯一的字段来代作主键。是数据库生成的,通常是个自动递增的数字。
  • 自然键:与代理键相反,唯一确定一个事物的标识:身份证号。

3、MySQL

  • MySQL是一个开放源代码的关系型数据库管理系统
  • 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性,可以运行于多种系统
  • 支持多种语言,为多种编程语言提供了API。
  • 使用标准的SQL数据语言
  • 支持多线程,充分利用CPU资源,支持多用户。
  • 支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB ,64位系统支持最大的表文件为8TB 。
  • 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
  • 提供用于管理、检查、优化数据库操作的管理工具。
  • 既能够作为一个单独的应用程序在客户端服务器网络环境中运行,也能够作为一个程序库而嵌入到其他的软件中。
  • MySQL 由于其体积小、速度快、总体拥有成本低,可处理上千万条记录的大型数据库,尤其是开放源码这一特点,使得很多互联网公司、中小型网站选择了MySQL作为网站数据库(Facebook,Twitter,YouTube,阿里巴巴/蚂蚁金服,去哪儿,美团外卖,腾讯)。

4、 非关系型数据库(NOSQL)

  • 非关系型数据库(Not Only SQL,NOSQL)指数据以对象形式存储的非结构化的数据库。包括键值型数据库、文档型数据库、搜索引擎和列存储、图形数据库等。
  • 可看成传统关系型数据库的功能阉割版本,基于键值对存储数据,不需要经过SQL层的解析,性能非常高。同时,通过减少不常用的功能,进一步提高性能。
  • 优势:性能更高、成本更低

4.1 类型

1、键值型数据库

  • 键值型数据库通过 Key-Value 键值的方式来存储数据。
  • Key 作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,缺点是无法像关系型数据库一样使用条件过滤(比如 WHERE)
  • 键值型数据库典型的使用场景是作为内存缓存。
  • Redis 是最流行的键值型数据库

2 、文档型数据库

  • 文档型数据库可存放并获取文档,可以是XML、JSON等格式。
  • 在数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录。
  • MongoDB是最流行的文档型数据库

3、 搜索引擎数据库

  • 虽然关系型数据库采用了索引提升检索效率,但是针对全文索引效率却较低。
  • 搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。
  • 核心原理是“倒排索引”。典型产品:Solr、Elasticsearch、Splunk 等。

4、 列式数据库

  • 列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的I/O,适合于分布式文件系统,不足在于功能相对有限
  • 典型产品:HBase等。

5、 图形数据库

  • 图形数据库,利用了图这种数据结构存储了实体(对象)之间的关系。图形数据库最典型的例子就是社交网络中人与人的关系,数据模型主要是以节点和边(关系)来实现,特点在于能高效地解决复杂的关系问题。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值