夯实基础,不能忽视的“数据库”

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 如果我们把数据比作“米”,数据库就是“米仓”。没错,从标准定义来讲,数据库就是按照数据结构来组织,存储和管理数据的仓库。

image.png

如果我们把数据比作“米”,数据库就是“米仓”。没错,从标准定义来讲,数据库就是按照数据结构来组织,存储和管理数据的仓库。


  • 数据库的设计初衷?


就像米多了要修建米仓一样,在操作系统出现之后,随着计算机应用范围的扩大、需要处理的数据迅速膨胀。


起初,数据与程序一样,以简单的文件作为主要存储形式。以这种方式组织的数据在逻辑上更简单,但可扩展性差,访问这种数据的程序需要了解数据的具体组织格式。当系统数据量大或者用户访问量大时,应用程序还需要解决数据的完整性、一致性以及安全性等一系列的问题。


因此,必须开发出一种系统软件,它应该能够像操作系统屏蔽了硬件访问复杂性那样,屏蔽数据访问的复杂性。由此产生了数据管理系统,即数据库。


  • 数据库很必要吗?


答案是肯定的。刘慈欣的小说《三体》中有这样一段描述:


下面,贯穿人列计算机的系统总线上的轻转兵快速运动起来,总线立刻变成了一条湍急的河流.这河流沿途又分成无数条细小的支流,渗入到各个模块阵列之中。很快,黑白旗的涟漪演化成汹涌的浪潮,激荡在整块主板上。中央的CPU区激荡最为剧烈,像一片燃烧的火药。突然,仿佛火药燃尽,CPU区的扰动渐渐平静下来,最后竟完全静止了,以它为圆心,这静止向各个方向飞快扩散开来,像快速封冻的海面,最后整块主板大部分静止了,其间只有一些零星的死循环在以不变的节奏没有生气地闪动着,显示阵列中出现了闪动的红色。 ——《三体》·刘慈欣


他描述了这样的一个场景,三千万个人组成了一个计算机来进行计算工作,一个人只表示一个比特位。


虽然现实没这么夸张,但是确实存在过由人为计算单位组成的计算机的。早在 1920 年代的美国,由 2 万人组成的计算机器管理着全国 7000 万人的指纹数据,主要用于出入境指纹收集。


没有数据库,用这种方式去查询信息,无疑是一种巨大的资源消耗。单从“有用”的角度出发看,数据库很必要,它就是来解决信息的插入和查询的。

对于数据库,你可以不熟练掌握,但一定要知道它的一些基本知识,往下看吧。


数据库分类



目前数据库主要分为传统的关系型数据库(SQL)和非关系型数据库(NoSQL),当然还有近几年新出现的 NewSQL 新型数据库、分布式数据库等,暂时先不作额外拓展。

其中最关键的就是关系型数据库和非关系型数据库。


  • 什么是关系型数据库?


传统的关系型数据库有着悠久的历史,从上世纪60年代开始就已经在航空领域发挥作用。因为其严谨的一致性以及通用的关系型数据模型接口,收获了很大一批的用户。

关系型数据库把数据以表的形式进行储存,然后再各个表之间建立关系,通过这些表之间的关系来操作不同表之间的数据。


常见的关系型数据库有 MySQL、Oracle、PostgreSQL 等等。

举个例子:课程管理系统的学生信息表


image.png


  • 什么是非关系型数据库?


到了 2000 年代,由于互联网应用的兴起,互联网应用需要支持大规模的并发用户,并且要保持永远在线。但是传统的关系型数据库却因为无法支持如此大规模数据和访问量而成为了整个系统的瓶颈。


最简单直接的办法是不断升级硬件系统,使用更多的CPU,内存和硬盘。但是这种方法只是提高了性能,并且呈现明显的收益递减效应。更糟糕的是,将数据库从一个机器迁移到另一个机器是一个比较复杂的过程,通常需要较长的停机时间。而这对于 Web 应用来说是不可接受的。


这些问题引发了 2000 年代 NoSQL 的诞生。NoSQL 的关键是它们放弃了传统关系型数据库的强事务保证和关系模型,通过所谓最终一致性和非关系数据模型(例如键值对,图,文档)来提高 Web 应用所注重的高可用性和可扩展性。


相比于关系型数据库,表与表之间是有关系的,利用表与表之间的关系进行各种操作。NoSQL 没有固定的表结构,且数据之间不存在表与表之间的关系,数据之间可以是独立的,因此 NoSQL 也可以用于分布式系统上。


举个例子:NoSQL 中有个大名鼎鼎的代表 —— Redis,它是一个非常快速的非关系类型的 Key-Value 数据库,还记得我们讲过,散列表的最大优先就是检索速度快,所以 Redis 常被用做缓存。


MySQL



MySQL 就是最流行的开源数据库,它的特性有:性能高、成本低、可靠性好,被大规模应用在各大网站或 app 中。


接下来引入 MySQL 数据库的一些主要概念以及重要命令,需要重点关注:

  • 概念
    主键: 用来执行每个表的关键性数据,并且,每个表中只有一个主键;
    外键: 这应该是 MySQL,使用外键来关联不同表;
    复合键: 将多个键组合一起来作为索引值。一般用于复合索引;
    索引: 借用一组值,来对表进行排序,可以比作书的目录;
    事务:是指作为单个逻辑工作单位执行的一系列操作,要么完全的执行,要么完全的不执行;
  • 命令
    创建数据库:
create database db1;


  • 创建表:
create table student(
    id int,
    name varchar(32),
    age int ,
    score double(4,1),
    birthday date,
    insert_time timestamp
);


  • 插入数据:
insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);


  • 删除数据:
delete from 表名 where 列名  = 值;


  • 查询语句:
// 查询年龄大于等于20 小于等于30        
SELECT * FROM student WHERE age >= 20 &&  age <=30;


  • 排序:
// 默认升序
SELECT * FROM person ORDER BY math;


  • 分组查询:
// 按照性别分组。分别查询男、女同学的平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;


  • 分页查询:
// 每页显示3条记录 第1页
SELECT * FROM student LIMIT 0,3; -- 


以上命令行即使是不做数据库相关工作,也应该大致混个眼熟。比方在新一代的文本管理工具 Notion ,很多功能都体现出数据库的操作思路,比如排序、分组等,数据库的设计特性在不断扩大它的影响。


关于数据库的范式问题,也是数据库知识重点之一(即使是前端也应该知道,本瓜犹记得大学初学时的场景),后文再介绍吧~


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
存储 运维 关系型数据库
数据的力量:构筑现代大型网站之数据库基础与应用
数据的力量:构筑现代大型网站之数据库基础与应用
90 0
|
4月前
|
人工智能 搜索推荐 算法
数据平台演进问题之数据库技术面临挑战如何解决
数据平台演进问题之数据库技术面临挑战如何解决
102 0
|
3月前
|
存储 关系型数据库 数据库
数据库技术深度解析与未来趋势展望
数据库,简而言之,就是存储数据的仓库。它可以按照一定的规则存储和管理数据,提供数据的增删改查(CRUD)等基本操作。数据库不仅限于存储功能,还具备数据的共享性、持久性和安全性等特点。通过数据库管理系统(DBMS),用户可以方便地对数据进行管理和访问。
93 3
|
3月前
|
NoSQL 大数据 数据处理
现代数据库技术的演进与挑战
传统的数据库管理系统在处理大数据和实时应用方面面临挑战。本文探讨了现代数据库技术如何应对这些挑战,重点关注了分布式数据库、NoSQL 数据库和内存数据库等新兴技术的发展与应用。
|
6月前
|
人工智能 安全 大数据
未来数据库技术发展趋势与挑战
【2月更文挑战第2天】 随着信息时代的快速发展,数据库技术也在不断演进。本文将探讨未来数据库技术的发展趋势与挑战,涉及新型数据库技术的应用、人工智能与大数据对数据库的影响以及数据安全等方面。通过深入分析未来数据库技术的走向,可以更好地把握技术发展的脉搏,应对挑战并抓住机遇。
|
4月前
|
人工智能 NoSQL 关系型数据库
现代数据库技术的发展与挑战
数据库作为现代软件系统的核心组成部分,经历了长足的发展。本文将探讨现代数据库技术的发展趋势,以及面临的挑战,包括大数据处理、实时性要求和安全性等方面的技术创新和应对策略。
|
6月前
|
分布式数据库 数据库 数据安全/隐私保护
开发者关注的数据库技术与创新,未来数据库的演进及理想数据库的构想
作为开发者,想必大家都知道在技术圈中数据库相关领域是技术开发中的重中之重,数据库技术与创新不断推动着数字化时代的发展,数据库技术正在经历着一次创新的浪潮,还有就是数据库技术的不断创新为开发者们在日常实际开发中提供了更多的可能性和好的机遇。那么本文就来简单聊聊最值得开发者关注的数据库技术与创新,包括分布式数据库、图数据库、时序数据库、区块链数据库以及AI与数据库的结合等方面,以及探讨未来数据库的演进趋势,并讨论一下在开发者心目中最理想的数据库的特征与构想。
116 3
|
6月前
|
存储 分布式数据库 数据处理
未来数据库技术发展趋势及挑战
【2月更文挑战第2天】 传统的数据库技术面临着越来越多的挑战,如数据规模的爆炸性增长、实时性和可扩展性要求的提升等。本文将探讨未来数据库技术的发展趋势,包括分布式数据库、无服务器数据库、区块链技术在数据库领域的应用等,并分析这些新技术带来的机遇和挑战。
|
5月前
|
存储 NoSQL Cloud Native
数据库技术前沿:探索、挑战与未来趋势
一、引言 数据库技术作为信息技术领域的核心,随着数字化和智能化的发展,正经历着前所未有的变革
|
5月前
|
存储 Cloud Native 物联网
数据库技术前沿探索:架构、优化与行业实践
一、引言 在信息化和数字化的浪潮中,数据库技术作为企业核心竞争力的关键要素,其重要性不言而喻