【Mysql上分之路】第一篇:数据库基础

2021/12/31 2:07:14

本文主要是介绍【Mysql上分之路】第一篇:数据库基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

冲

文章目录

  • 数据库系统
  • 数据库系统的组成
    • 数据库
    • 数据库管理系统
      • 数据管理
        • 人工管理阶段
        • 文件系统阶段
        • 数据库系统阶段
    • 数据库分类
      • 关系型数据库
        • 优点
        • 缺点
      • 非关系型数据库
        • 优点
        • 缺点
    • 数据库使用原因
    • 数据库管理系统的功能
      • 数据定义
      • 数据操纵
      • 数据库的运行管理
      • 数据库的建立和维护
      • 提供数据库接口和工具
    • 数据库访问接口
      • ODBC
      • JDBC
      • ADO.NET
      • PDO
    • 常用数据库
      • 关系型数据库
        • Oracle
          • 优点
          • 缺点
        • SQL Server
          • 优点
          • 缺点
        • MySQL
          • 优点
          • 缺点
        • PostgreSQL
          • 优点
          • 缺点
      • NoSQL
          • 键值存储数据库(key-value)
            • Memcached
            • Redis
  • 总结

数据库系统

数据库系统(Database System,DBS)由硬件和软件共同构成。硬件主要用于存储数据库中的数据,包括计算机、存储设备等。软件部分主要包括数据库管理系统、支持数据库管理系统运行的操作系统,以及支持多种语言进行应用开发的访问技术等

数据库系统的组成

一个完整的数据库系统一般由数据库、数据库管理系统、应用开发工具、应用系统、数据库管理员和用户组成

数据库系统的组成

数据库系统主要组成为:数据库、数据库管理系统、数据库应用程序

  • 数据库:用于存储数据的地方
  • 数据库管理系统:用于管理数据库的软件
  • 数据库应用程序:为了提供数据库系统的处理能力所使用的管理数据库的软件补充

数据库

数据库:指的就是长期存储在计算机内的、有组织的、可共享的数据集合,即数据库就是存储数据的地方;数据库本质上是一个文件集合,是一个存储数据的仓库,本质是一个文件系统,数据库按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作

数据库管理系统

数据库管理系统:是数据库系统的核心软件之一,是位于用户与操作系统之间的数据管理软件,用于建立、使用和维护数据库

数据管理

数据管理是数据库管理软件的主要目的,数据管理就是对各种数据进行分类、组织、编码、查询和维护,主要可以分为三个阶段:人工管理阶段、文件系统阶段、数据库管理阶段;每一个阶段都是以减少数据冗余(数据重复出现在不同数据文件中)、增强数据独立性和方便操作数据为目的进行的发展

人工管理阶段

20世纪50年代中期,计算机刚刚开始发展,当时数据主要存储在纸带、磁带都介质上或者通过手工来记录,主要特点为:

  • 数据不能长期保存
  • 不便于查询数据
  • 数据不能共享、冗余度大
  • 数据不具有独立性

文件系统阶段

20世纪50年代后期到60年代中期,计算机中的磁盘和磁鼓等直接存取设备开始普及,此时可以将数据存储在计算机的磁盘上,这些数据最终以文件的形式存储,然后通过文件系统来管理这些文件

文件系统通过文件的存储路径和文件名来访问文件中的数据,可以查看、修改、添加和删除这些文件,文件系统阶段主要特点为:

  • 数据可以长期保存
  • 数据由文件系统来管理
  • 数据冗余大、共享性差
  • 数据独立性差
  • 无法应对突发事件(文件误删、磁盘故障)

数据库系统阶段

20世纪60年代后期,随着计算机软硬件的发展,出现了数据库技术;数据库系统阶段使用专门的数据库来管理数据,用户可以在数据库系统中建立数据库,然后在数据库中建立表,最后将数据库存储在这些表中,用户可以通过数据库管理系统来查询表中的数据,数据库系统实现了数据结构化,虽然数据库系统也是分成一个个数据文件,但是更加关注各个数据文件之间的相互联系

数据库阶段的主要特点:

  • 数据由数据库管理系统统一管理和控制
  • 数据共享性高,冗余度低
  • 数据独立性强
  • 数据粒度小

数据库分类

常说的Mysql、Oracle、DB2等数据库,这里的数据库实际上指的是数据库管理系统

数据库可以分为两类:关系型数据库、非关系型数据库

关系型数据库

关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)

在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理

优点

  1. 关系型数据库使用表结构,格式一致,易于维护
  2. 使用通用的SQL语言操作,使用方便,可用于复杂查询
  3. 数据存储在磁盘中,数据安全性强

缺点

  1. 读写性能比较差,不能满足海量数据的高效率的读写
  2. 不节省空间,因为关系型数据库是建立在关系模型上,便要遵循某些规则,如字段值为空时也要分配空间
  3. 固定的表结构,灵活度较低

非关系型数据库

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSql数据库在特定的场景下可以发挥出难以想象的高效率和高性能,它是作为对传统关系型数据库的一个有效的补充**

优点

  1. 非关系型数据库存储数据的形式可以是key-value形式、文档形式、图片形式等,使用灵活,应用范围广,而关系型数据库只支持基础类型
  2. 速度快,效率高,菲关系型数据库可以使用磁盘和随机存储器作为载体,而关系型数据库只能选择磁盘
  3. 海量数据的维护和处理非常轻松
  4. 菲关系型数据库具有扩展简单、高并发、高稳定性、成本低廉的优势
  5. 可以实现数据的分布式处理

缺点

  1. 菲关系型数据不支持SQL语言,学习和使用成本高
  2. 非关系型数据库没有事务处理,没有保证数据的完整性和安全性,适合海量数据处理,但不一定安全
  3. 功能没有关系型数据库完善

数据库分类

数据库使用原因

  1. 数据库可以结构化存储大量的数据信息,方便用户进行有效的检索和访问,数据库可以对数据进行分类保存,并且能够提供快速的查询
  2. 数据库可以有效地保持数据信息的一致性、完整性、降低数据冗余,可以很好地保证数据有效、不被破坏,而且数据库自身有避免重复数据的功能,以此来降低数据的冗余
  3. 数据库可以满足应用的共享和安全方面的要求,把数据放在数据库中在很多情况下也是出于安全的考虑
  4. 数据库技术能够方便智能化地分析,产生新的有用信息

数据库管理系统的功能

数据库管理系统(Database Management System,DBMS)是用户创建、管理和维护数据库时所使用的软件,位于用户和操作系统之间,对数据库进行统一管理。DBMS 能定义数据存储结构,提供数据的操作机制,维护数据库的安全性、完整性和可靠性

数据定义

DBMS 提供数据定义语言(Data Definition Language,DDL),用户通过它可以方便地对数据库中的数据对象进行定义

数据操纵

DBMS 还提供数据操纵语言(Data Manipulation Language,DML),用户可以使用 DML 操作数据,实现对数据库的基本操作,如查询、插入、删除和修改等

数据库的运行管理

数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复

  • 数据的完整性检查功能保证用户输入的数据应满足相应的约束条件
  • 数据库的安全保护功能保证只有赋予权限的用户才能访问数据库中的数据
  • 数据库的并发控制功能使多个用户可以在同一时刻并发地访问数据库的数据
  • 数据库系统的故障恢复功能使数据库运行出现故障时可以进行数据库恢复,以保证数据库可靠地运行

数据库的建立和维护

数据库功能包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监控、分析功能等。这些功能通常由一些使用程序来完成

提供数据库接口和工具

编程人员可通过编程语言与数据库之间的接口进行数据库应用程序的开发。数据库管理员(Database Administrator,DBA)可通过提供的工具对数据库进行管理

数据库访问接口

不同的程序设计语言会有各自不同的数据库访问接口,程序语言通过这些接口,执行 SQL 语句,进行数据库管理。主要的数据库访问接口主要有 ODBC、JDBC、ADO.NET 和 PDO

ODBC

ODBC(Open Database Connectivity,开放数据库互连)为访问不同的 SQL 数据库提供了一个共同的接口。ODBC 使用 SQL 作为访问数据的标准。这一接口提供了最大限度的互操作性。一个应用程序可以通过共同的一组代码访问不同的 SQL 数据库管理系统

一个基于 ODBC 的应用程序对数据库的操作不依赖任何 DBMS,不直接与 DBMS 打交道,所有的数据库操作由对应的 DBMS 的 ODBC 驱动程序完成。也就是说,不论是 MySQL 还是 Oracle 数据库,均可用 ODBC API 进行访问。由此可见,ODBC 的最大优点是能以统一的方式处理所有的数据库

JDBC

Java Data Base(JDBC,Java 数据库连接)用于 Java 应用程序连接数据库的标准方法,是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成

ADO.NET

ADO.NET 是微软在 .NET 框架下开发设计的一组用于和数据源进行交互的面向对象类库。ADO.NET 提供了对关系数据、XML 和应用程序的访问,允许和不同类型的数据源以及数据库进行交互

PDO

PDO(PHP Data Object)为 PHP 访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO 是 PHP 5 新加入的一个重大功能

常用数据库

现在已经存在了很多优秀的商业数据库,如甲骨文(Oracle)公司的 Oracle 数据库、IBM 公司的 DB2 数据库、微软公司的 SQL Server 数据库和 Access 数据库。同时,还有很多优秀的开源数据库,如 MySQL 数据库,PostgreSQL 数据库等

关系型数据库

Oracle

Oracle 是甲骨文公司的一款关系型数据库管理系统,在数据库领域一直处于领先地位的产品,是目前世界上流行的关系型数据库之一,是一种高效率、可靠性好、适应高吞吐量的数据库方案
在这里插入图片描述

优点
  1. Oracle 可移植性好,能在所有主流平台上运行(包括 Windows),完全支持所有工业标准。采用完全开放策略,使客户可以选择最适合解决方案。以及对开发商的全力支持
  2. 获得最高认证级别的 ISO 标准认证,安全性高
  3. 与其它数据库相比,Oracle 性能最高。保持着开放平台下 TPC-D 和 TPC-C 世界记录
  4. 多层次网络计算,支持多种工业标准,可以用 ODBC、JDBC、OCI 等网络客户连接
  5. 完全向下兼容,因此被广泛应用,且风险低
缺点
  1. 对硬件的要求高
  2. 价格比较昂贵
  3. 管理维护麻烦
  4. 操作比较复杂

SQL Server

SQL Server 是 Microsoft(微软)公司推出的关系型数据库管理系统,主要应用于大型的管理系统中

数据库sqlservice图标

优点
  1. 与微软的 Windows 系列操作系统的兼容性很好
  2. 高性能设计,可充分利用 WindowsNT 的优势
  3. 系统管理先进,支持 Windows 图形化管理工具,支持本地和远程的系统管理和配置
  4. 强壮的事务处理功能,采用各种方法保证数据的完整性
  5. 支持对称多处理器结构、存储过程、ODBC,并具有自主的 SQL 语言
缺点
  1. SQL Server 只能在 Windows 系统上运行,没有丝毫开放性
  2. 没有获得任何安全证书
  3. 多用户时性能不佳
  4. 只支持 C/S 模式,SQL Server C/S 结构只支持 Windows 客户用 ADO、DAO、OLEDB、ODBC 连接

MySQL

MySQL 是一种开放源代码的关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。因为其速度、可靠性和适应性而备受关注。MySQL 是流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的应用软件之一

数据库mysql图标

优点
  1. 性能卓越服务稳定,很少出现异常宕机
  2. 开放源代码且无版权制约,自主性强、使用成本低
  3. 历史悠久、社区及用户非常活跃,遇到问题,可以很快获取到帮助
  4. 软件体积小,安装使用简单,并且易于维护,安装及维护成本低
  5. 支持多种操作系统,提供多种 API 接口,支持多种开发语言
缺点
  1. MySQL 最大的缺点是其安全系统,主要是复杂而非标准,只有调用 mysqladmin 来重读用户权限才会发生改变
  2. MySQL 不允许调试存储过程,开发和维护存储过程很难
  3. MySQL 不支持热备份
  4. MySQL 的价格随平台和安装方式变化

PostgreSQL

PostgreSQL 是一款富有特色的自由数据库管理系统,甚至可以说是最强大的自由软件数据库管理系统。该数据库管理系统支持了目前世界上最丰富的数据类型。是自由软件数据库管理系统中唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的自由软件

数据库postgresql图标

优点
  1. PostgreSQL 遵循的是 BSD 协议,是一个完全开源、免费、同时非常强大的关系型数据库
  2. 与 PostgreSQL 配合的有很多分布式集群软件,如 pgpool、pgcluster、slony、plploxy 等等,很容易做读写分离、负载均衡、数据水平拆分等方案,而这些 MySQL 则比较难实现
  3. PostgreSQL 源代码写的很清晰,易读性比 MySQL 强,所以很多公司基本都是以 PostgreSQL 做二次开发的
  4. PostgreSQL 是多进程的,而 MySQL 是多线程的。并发不高时,MySQL处理速度快,但当并发高的时候,对于现在多核的单台机器上,MySQL 的总体处理性能不如 PostgreSQL,原因是 MySQL 的线程无法充分利用 CPU 的能力
  5. PostgreSQL 有很强大的查询优化器,支持很复杂的查询处理
缺点
  1. 对于简单而繁重的读取操作,相比较其它数据库来说,PostgreSQL 性能较低
  2. PostgreSQL 数据库扩容花费时间很长

NoSQL

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

1、NOSQL不是否定关系数据库,而是作为关系数据库的一个重要补充

2、NOSQL为了高性能、高并发而生,忽略影响高性能,高并发的功能

3、NOSQL典型产品memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库)

键值存储数据库(key-value)

键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据库,因为使用key主键访问,所以会获得很高的性能及扩展性

键值数据库主要使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署、高并发

典型产品:Memcached、Redis、MemcacheDB

适用的场景:

  • 储存用户信息,比如会话、配置文件、参数、购物车等等。这些信息一般都和ID(键)挂钩,这种情景下键值数据库是个很好的选择

不适用场景:

  • 取代通过键查询,而是通过值来查询。Key-Value数据库中根本没有通过值查询的途径
  • 需要储存数据之间的关系。在Key-Value数据库中不能通过两个或以上的键来关联数据
  • 事务的支持。在Key-Value数据库中故障产生时不可以进行回滚
Memcached

Memcaced是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的web应用,最初版本由LiveJoumal 的Brad Fitzpatrick在2003年开发完成。目前全球有非常多的用户都在使用它来架构主机的大负载网站或提升主机的高访问网站的响应速度。注意:Memcache 是这个项目的名称,而Memcached是服务端的主程序文件名

缓存一般用来保存一些进程被存取的对象或数据,通过缓存来存取对象或数据要比在磁盘上存取快很多,前者是内存,后者是磁盘,Memcached是一种纯内存缓存系统,把经常存取的对象或数据缓存在memcached的内存中,这些被缓存的数据被程序通过API的方式被读取,memcached里面的数据就像一张巨大的hash表,数据以key-value对的方式存在。Memcached通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度,构建出快速更快的可扩展的Web应用

由于memcached为纯内存缓存软件,一旦重启所有数据都会丢失,因此,新浪网基于Memcached开发了一个开源项目 Memcachedb。通过为Memcached增加Berkeley DB的特久化存储机制和异步主复制机制,使Memcached具备了事务恢复能力、持久化数据能力和分布式复制能力,memcached非常适合需要超高性能读写速度、持久化保存的应用场景,但是最近几年逐渐被其他的持久化产品替代如Redis

Memcached小结:

​ 1、key-value行数据库

​ 2、纯内存数据库

​ 3、持久化memcachedb(sina)

Redis

和Memcached类似,redis也是一个开源、Linux平台、key-value型存储系统。但*redis支持的存储value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)等。这些数据类型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。为了保证效率,redis的数据都是缓存在内存中。区别是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在基础上实现了master-slave(主从)同步

redis是一个高性能的key-value数据库。redis的出现、很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python、Ruby、Erlang、PHP客户端,使用方便

redis特点:

  • 支持内存缓存,这个功能相当于memcached
  • 支持持久化存储,这个功能相当于memcachedb,ttserver
  • 数据库类型更丰富。比其他key-value库功能更强
  • 支持主从集群、分布式
  • 支持队列等特殊功能

应用:缓存从存取memcached更改存取redis

适用场景:

缓存、基础消息队列系统、排行榜系统、计数器使用、社交网站的点赞、粉丝、下拉刷新等应用

总结

数据库系统(Database System,DBS)由硬件和软件共同构成。硬件主要用于存储数据库中的数据,包括计算机、存储设备等。软件部分主要包括数据库管理系统、支持数据库管理系统运行的操作系统,以及支持多种语言进行应用开发的访问技术等

数据库是用于存储数据的地方,数据库管理系统主要是用于管理数据库的软件,数据库应用程序为了提供数据库系统的处理能力所使用的管理数据库的软件补充

赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤,peace&love



这篇关于【Mysql上分之路】第一篇:数据库基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程