数据库基本概念:数据库的定义、特点、分类、组成、作用 ...

打印 上一主题 下一主题

主题 566|帖子 566|积分 1698

数据库的基本概念数据库的基本概念-CSDN博客
1.1 什么是数据库

数据库(database)是用来组织、存储和管理数据的堆栈。
当今世界是一个充满着数据的互联网世界,充斥着大量的数据。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。
为了方便管理互联网世界中的数据,就有了数据库管理系统的概念(简称:数据库)。用户可以对数据库中的数据举行新增、查询、更新、删除等操纵。
1.2 常见的数据库及分类

市面上的数据库有很多种,最常见的数据库有如下几个:
MySQL 数据库(目前使用最广泛、流行度最高的开源免费数据库;Community + Enterprise)
Oracle 数据库(收费)
SQL Server 数据库(收费)
Mongodb 数据库(Community + Enterprise)
其中,MySQL、Oracle、SQL Server 属于传统型数据库(又叫做:关系型数据库 或 SQL 数据库),这三者的计划理念相同,用法比力类似。
而 Mongodb 属于新型数据库(又叫做:非关系型数据库 或 NoSQL 数据库),它在一定水平上补充了传统型数据库的缺陷。
数据库的特点?


  • 长期化存储数据:数据库答应你将产品信息和订单数据长期地存储在硬盘上。这意味着纵然在关机或断电后,数据也不会丢失,并且可以在需要时重新加载。
  • 方便数据检索和更新:数据库提供了强大的查询语言和索引功能,使得你可以轻松地检索和更新存储的数据。例如,你可以使用SQL查询语言来查找特定类型的产品,大概更新订单状态为已发货。
  • 保证数据完备性:数据库提供了机制来确保数据的完备性。你可以定义约束条件,例如主键约束、唯一约束和外键约束,以防止数据的重复、不一致或无效。
  • 保证数据安全性:数据库提供了安全性功能,以确保只有授权用户可以访问数据。你可以设置访问权限和用户身份验证机制,以控制谁可以读取、写入或修改数据库中的数据。
如果我们像平时以变量的形式来存储数据那么会出现什么标题?

变量是有生命周期的,无法长期化存储,数据管理困难(而数据库管理系统解决这个标题),数据共享和多用户访问标题:每个用户都有自己的独立变量,无法共享和同步数据。
而数据库是每个用户在程序中修改数据的时候,数据都会回调给数据库,把数据也给修改,此时其他人看到的数据是从数据库中查询得到了,也就是更改过的。
1.3 传统型数据库的数据组织布局

数据的组织布局:指的就是数据以什么样的布局举行存储。
在传统型数据库中,数据的组织布局分为数据库(database)、数据表(table)、数据行(row)、字段(field)这 4 大部分组成。

除了四大部分外数据库的组成应还有

  • 索引:用于快速定位和访问数据的数据布局,可以加快数据检索和查询的速率。
CREATE INDEX idx_customers_name ON Customers (Name); //给予Name索引后, SELECT * FROM Customers WHERE Name = 'John Doe';//用Name来作为判断信息
那么数据库就可以直接定位到索引中名为“John Doe" 的客户姓名匹配的数据行,而不需要对整个表举行通盘扫描。这样可以大大镌汰查询的时间和资源斲丧。

  • 视图:基于一个或多个数据表的查询结果集,可以简化复杂的数据查询和提供数据安全性。
视图一方面可以帮我们使用表的一部分而不是全部的表,另一方面也可以针对不同的用户制定不同的查询视图。
视图是一种 虚拟表 ,自己是 不具有数据 的,占用很少的内存空间,它是 SQL 中的一个紧张概念。
视图建立在已有表的基础上, 视图赖以建立的这些表称为基表

比如select * from books;查询视图


  • 存储过程和触发器:用于在数据库中执行特定的操纵,如数据处理、验证和约束等。 目前还用不到。
是数据库中的两种紧张的编程对象。它们都是预先定义的数据库逻辑,可以在特定的事件或条件发生时自动执行。可以理解为数据库中的一种函数
存储过程是数据库中的一个独立对象,可以被调用和执行。存储过程通常用于封装和组织复杂的业务逻辑,提供重复使用和高性能的数据库操纵。比如创建一个存储过程来插入一条新的客户记录,并返回插入后的客户ID:
触发器是与数据库表相关联的代码块,它在特定的数据操纵事件(如插入、更新、删除)发生时自动触发执行。

  • 数据库管理系统(DBMS):用于管理和操纵数据库的软件系统,如MySQL、Oracle、SQL Server等。
用于管理和组织数据库。它提供了一系列的功能和工具,用于创建、操纵、维护和查询数据库。
以上所说都是传统型数据库mysql(关系型数据库),之后我们分析一下非关系型数据库和关系型数据库的区分,以便对数据库有一个更好的理解。

关系型数据库 VS 非关系型数据库 - 知乎 (zhihu.com)
关系型数据库是一种基于关系模型的数据库管理系统。在关系型数据库中,数据以表(Table)的形式组织,每个表由行(Row)和列(Column)组成。简单来说,关系模式就是二维表格模型
2.优点

(1).轻易理解,二维表的布局非常贴近现实世界,二维表格,轻易理解。
(2)使用方便,通用的sql语句使得操纵关系型数据库非常方便。
(3)易于维护,数据库的ACID属性,大大降低了数据冗余和数据不一致的概率。、
1.4说一下关系型数据库的事件

数据库就是用来存储数据,那么其中一定有改变数据的时候,事件就是在这个步调中起作用的。
事件是用来确保无论发生什么情况,你使用的数据都将处于一个合理的状态:
  1. import mysql.connector
  2. # 连接到数据库
  3. conn = mysql.connector.connect(user='username', password='password', host='localhost', database='mydatabase')
  4. # 创建游标对象
  5. cursor = conn.cursor()
  6. try:
  7.     # 开始事务
  8.     cursor.execute("START TRANSACTION")
  9.     # 执行一系列操作
  10.     cursor.execute("UPDATE accounts SET balance = balance - 100 WHERE account_id = 1")  -- 转出账户减去100元
  11.     cursor.execute("UPDATE accounts SET balance = balance + 100 WHERE account_id = 2")  -- 转入账户加上100元
  12.     # 提交事务
  13.     cursor.execute("COMMIT")
  14. except Exception as e:
  15.     # 发生异常时回滚事务
  16.     print("An error occurred:", e)
  17.     cursor.execute("ROLLBACK")   //回滚事务 ROLLBACK  这样可以撤销之前的所有操作,包括第一个UPDATE语句的修改,从而保证数据的一致性。
  18. finally:
  19.     # 关闭游标和连接
  20.     cursor.close()
  21.     conn.close()
复制代码
ACID属性是关系型数据库的焦点特点之一。
数据库事件必须具备ACID特性,分别是Atomic原子性,Consistency一致性,Isolation隔离性,Durability长期性
ACID特性确保了数据库事件的精确性、可靠性和一致性。它们提供了事件的基本保证,使得在并发执行和故障规复的情况下,数据库能够维护数据的完备性和可靠性。


  • 原子性(Atomicity):即不可分割性,事件中的操纵要么全不做,要么全做 一个事件纵然一个原子
  • 一致性(Consistency):一个事件在执行前后,数据库都必须处于精确的状态,满意完备性约束 一致性是acid中最紧张的属性,而原子性、隔离性和长期性都是作为保障一致性的手段
  • 隔离性(Isolation):多个事件并发执行时,一个事件的执行不应影响其他事件的执行 可以理解为是锁的抢占资源,
  • 长期性(Durability):事件处理完成后,对数据的修改就是永久的,即便系统故障也不会丢失
既然关系型数据库这么美满?为什么还要非关系型数据库?


关系型数据库为了规范性,把数据分配成为最小的逻辑表来存储避免重复,获得精简的空间利用。但是多个表之间的关系限定,多表管理就有点复杂。

为了支持更多的并发量,SQL数据采用纵向扩展,提高处理能力,通过提高计算机性能来提高处理能力。
NoSql通过横向拓展,非关系型数据库天然是分布式的,以是可以通过集群来实现负载均衡。 在处理大规模数据和高并发访问时可以方便地在集群中添加更多的节点来处理更大规模的数据和负载。
高性能和低延迟:NoSQL 数据库通过优化数据存储和查询方式,追求更高的读写性能和较低的查询延迟。这对于需要处理大量实时数据和高吞吐量的应用场景非常紧张。
非关系型数据库(NoSQL)不使用传统表格关系的数据库,它可以存储和处理非布局化、半布局化和布局化数据。非关系型数据库通常不依赖于SQL语言而是使用其他查询语言或API来操纵和检索数据。这些查询语言和API的具体形式取决于所使用的非关系型数据库的类型和厂商。非关系型数据库则更加灵活。它们使用不同的数据模型来存储数据
文档型数据库(例如MongoDB)通常采用通过JSON格式,最适合架构无法定义或频仍更改的非布局化数据

、键值型数据库(例如Redis)、
即内部全部信息都是通过key-value的形式存储的

列族数据库(例如Cassandra)以列族(Column Family)的形式组织和存储数据
图形数据库(例如Neo4j) 数据存储在节点之中

关系型数据库和非关系型数据库各有其优势和适用场景。
关系型数据库适用于需要严酷的数据一致性和复杂的查询操纵的应用场景,而非关系型数据库则适用于需要处理大量非布局化数据、需要高性能和可扩展性的应用场景。
。这些模型答应你以更自由的方式组织和表示数据。例如,键值对数据库将数据存储为键值对的形式,其中键是唯一标识符,值可以是任意类型的数据。这种布局非常适合快速存储和检索简单的数据,如缓存数据或会话信息
Mysql存储引擎

MySQL存储引擎是一种用于管理数据库表的底层软件组件,是DBMS的一部分。它负责处理数据的存储、检索和操纵。比如建表的原理
每种存储引擎都有其特定的功能和性能特点。通过选择符合的存储引擎,用户可以根据自己的需求来优化数据库的性能、可靠性和功能。
常用的存储引擎有

在MySQL的早期版本中,默认的存储引擎是MyISAM,因此在过去的一段时间里,MyISAM是MySQL中最常用的存储引擎之一。然而,自从MySQL 5.5版本开始,InnoDB成为了MySQL的默认存储引擎。随着时间的推移,InnoDB的使用率逐渐增加,并成为目前最常用的存储引擎。
下面我们来举个例子说明InnoDB和MyISAM的区别
1数据的存储布局不同 先看两者再存储上的文件定义

MyISAM InnoDB

我们可以看到在MyISAM中数据和索引是分开。而在InnoDB中的数据和索引是在一个文件中的,
也就是MyISAM中的叶子节点的终极是存储的是地址,然后再根据地址来查找文件, InnoDB的叶子节点都是直接把数据给存储的

2另一个标题是存储空间的斲丧不同

MyISAM存储的是静态表、动态表、压缩表 而InnoDB存储空间需要更多的内存和存储 他会在主内存中建立它专有的缓冲池,用来高速缓冲数据和索引,索引InnoDB所在的表都生存在同一个数据文件中
3对事件的支持不同

MyISAM讲求是性能,每次查询都具有原子性,执行速率比InnoDB更快一些,但是不支持事件操纵,而InnoDB不但支持事件,还有外键等一些高级数据库的功能,还有一些日志修复等一些安全设施
4对锁的支持不同

如果支持大量的查询,MySIAM是更好的选择,MyISAM在增删改的时候需要去锁定整个表格,效率低,InnoDB支持行锁,修改哪一行,锁哪一行就行
5对外键的支持不同

前面说过MyISAM是不支持外键的 什么是外键 :外键是用来建立两个表之间的关联的约束,通常用于指定一个表中的数据与别的一个表的数据的关系,其中一个该表,别的一个也会自动改变。确保数据的关联性以及数据的完备性和一致性

【Java面试】技术总监带你剖析,MySQL储存引擎,MyISAM和InnoDB的区别?_哔哩哔哩_bilibili
DBMS跟数据库是什么关系?
数据库管理系统(DBMS)是一个更广泛的概念,它是指用于管理和组织数据库的软件系统。
数据库是在DBMS下创建和存储数据的集合。
数据库管理系统负责处理数据库的各种操纵和管理任务,包罗创建数据库、定义表布局、插入和更新数据、执行查询、管理用户权限、处理事件等。它提供了一组功能和工具,使用户和应用程序能够方便地对数据库举行操纵,并确保数据的安全性、完备性和一致性。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表