ToB企服应用市场:ToB评测及商务社交产业平台

标题: 数据库基础、使用C语言构建一个数据库、SQL语言、MySQL_c语言数据库 [打印本页]

作者: 笑看天下无敌手    时间: 2024-7-28 03:58
标题: 数据库基础、使用C语言构建一个数据库、SQL语言、MySQL_c语言数据库
先自我先容一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是本身摸索发展,但本身不成体系的自学效果低效又漫长,而且极易碰到天花板技能停滞不前!
因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望可以或许资助到想自学提升又不知道该从何学起的朋友。





既有得当小白学习的零基础资料,也有得当3年以上履历的小同伴深入学习提升的进阶课程,涵盖了95%以上Go语言开辟知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习条记、源码讲义、实战项目、大纲门路、讲授视频,而且后续会持续更新
假如你需要这些资料,可以添加V获取:vip1024b (备注go)

正文

1.什么是数据库

数据库就是英文的“database”翻译来的,data + base,故名思义就是数据的根源,数据的基础。那么为什么要有数据库呢,数据库起首是个计算机软件,在所谓数据库诞生之前,常用方法可能是程序员本身写一个小程序来完成数据处理分析这样的工作。
伴随着计算机的遍及,越来越多的场景开始使用计算机,产生了越来越多的数据,也催生了越来越多的数据分析需求。为了降低数据分析的门槛,让更多人可以或许更方便高效地管理分析数据,工程师们就打造了一种专门的软件来资助人们对数据进行公道的存储以提高存取服从,提供易用的接口和丰富的分析算法以方便使用,集成有效的管理工具以提高数据安全性等等,这就是数据库,也被称为数据库管理体系(DBMS,Database management system)。
数据库是一整套数据管理体系,包罗数据存储的模子、数据组织的架构、数据分析的算法、数据管理的工具以及数据访问的接口等等。
举个例子,粮仓。假如你有1亩3分地,产的粮食刚刚够一家人吃,吃不完的本身找个缸就放下了,这个缸也只需要方便本身家人使用就行了。随着你种的地越来越多好比1万亩地,生产的粮食根本吃不完,那就必须修建一个专门用来存放粮食的仓库,同时还要方便差别的商家来拉粮食,为了保证粮食存放的安全和服从,就必须对粮仓进行特别的计划和处理,好比恒温恒湿、自动喷淋、传送体系等等。数据库也是雷同的道理。
数据库劈头于阿波罗登月计划,因为需要大量的数据分析人员对大量的数据进行分析,就不得不开辟一款可以或许方便更多人使用的数据管理分析软件。确实是人类其时的灯塔,研发出了多少好东西,不得不给NASA的工程师们点个赞。
2.数据库的焦点功能是什么

数据库会根据应用场景的差别而分为差别的类别,好比最经典的分类OLTP(在线事件处理)和OLAP(联机分析处理)。举个例子,你每天要使用名誉卡支付来坐地铁,买午餐、买饮料、上淘宝购物等等,这每一笔交易都需要配景数据库准确地记载下来,这个数据库就是OLTP类型。
你也会通过体系去查询你上个月的消耗情况,体系会根据你上个月的交易数据做个汇总发给你,并告诉你用饭花了多少、交通花了多少、娱乐花了多少等等,支持这个场景的就是OLAP类型。
OLTP重要处理短小的事件,要求事件吞吐量很高,因为每个人每天可能要支十反复,但每次需要处理的数据量比较小;而OLAP,每个人可能每个月只用一次,但是每次要处理的数据量相对比较大,而且计算比较复杂。
比年来,伴随着人工智能、物联网、边缘计算等数字化场景的兴起,数据库的功能也产生了更多的分类,如HATP(同时可以或许处理OLTP和OLAP的场景)、流式数据处理、时序数据处理、非结构化数据处理、跨平台数据处理、多模态数据处理等等。如何明白这些分类呢?
雷同于差别功能的汽车,有货车,有客车,有MPV,有SUV,有皮卡,有燃油车,有新能源车等等。车的焦点功能是一致的,只是为了顺应差别的场景和需求,差别的车会有差别的架构计划和调教,如此而已。
那么数据库应该有哪些焦点功能呢?
起首,数据库、数据库,必须要把数据保存下来。要把数据按照公道的格式,安全保存在可持久化的存储介质内里,要保证数据的精确性、完整性和安全性。这是所有数据体系最焦点的功能。换句话说,把数据交给数据库,数据库要保证数据不丢、不错。这个是最最起码的要求。正如粮仓,不能粮食存进去都发霉了,被耗子吃了。
其次,数据库要尽可能提高数据存取服从。要用更有服从的方式存储数据,让数据存储得更快,更易于使用者明白,更方便上层业务的使用。查询数据时服从更高,更快给出效果。就像有人来送粮食入库,要快速地称重、烘干、质检、打包、入库,不能让人家等一礼拜。有人要买小麦,有人要买玉米,必须按照要求快速找到相应的存放地点把粮食交给粮商。
再次,数据库要提供丰富的数据分析算法,尽可能把跟数据密切干系的计算在数据库中完成,淘汰数据传输的开销,减轻上层业务逻辑的计算压力。就像粮库要提供美满的粮食处理步伐,好比称重、烘干、打包、品质分级等,方便粮食交易。
末了,数据库要提供易于使用的接口,降低数据分析人员的使用门槛,可以或许支持各种数据分析工具,让使用数据更加方便。就像粮库要有方便的停车场、清晰的指示牌、专业友爱的工作人员等。
3.数据库的焦点组件有哪些

为了实现这些焦点功能,通常数据库会包罗以下焦点组件:
a. 存储管理
数据用什么样的方式来组织、存储,是key-value还是关系型,是按行存还是按列存,支不支持压缩,支不支持删除和修改,支持什么样的数据类型和存储接口,Posix还是对象存储。是否要支持计算存储分离,是否要支持分布式存储,是否支持事物处理,是否支持多副本,接纳什么算法来加速数据的检索(索引)等等。存储管理是数据库的焦点组件,解决了存储管理问题,数据库的问题就解决了一半了。

b. 查询优化器
要提高数据查询的服从,数据库必须找到一条最优化的执行路径,好比,查询时是否需要使用索引,假如有多个索引,应该选择哪一个,假如数据分布在差别的存储单位(表、聚集等)里,应该按照什么顺序来访问服从最高等等。优化器面对的问题可能是一个极其复杂的路径规划问题,需要它在很短的时间里计算出最优路径,需要大量焦点优化算法。属于数据库中复杂程度最高的部分。
举个例子,你要带着全家人,包罗老人、小孩一起从上海去海南旅行,要制作一个性价比最好、家人满意度最高的计划,那么在计划时需要考虑哪些因素呢,起首,怎么去,是开车去,还是火车去,还是飞机去。开车,路上要花多久,中心需要休息反复,你和太太有没有时间,老人孩子是不是受得了,汽油费用,过盘费用;飞机,怎么去机场,行李有多少,带不带的下,机票有没有打折,下了飞机怎么办等等。住什么酒店,去什么景点,老人喜欢去人多的人文景观,太太喜欢安静的地方和方便购物的地方,小孩喜欢有游乐场的地方,要不要酒店+景点一起订,会不会有优惠,要不要租车,租什么车…说到这里,是不是可以体会一个查询优化器需要考虑的问题有多少?

固然,这部分工作可以有相对简单的实现(基于规则),好比太太说了,时间确定、飞机往返、五星酒店、带私人沙岸。这样计划就会简单很多,也可以复杂到不可思议(基于机器学习、基于实际开销等等),太太说你全权负责,详细时间不确定,大概在8月-9月,要少费钱多办事,多做调研,找一个最优方案。那么做这个计划就会非常复杂,需要的支持决议信息就会非常多。这样做出来的决议大概率相对会优化,比基于规则实现的计划能顺应更多场景。
c. 执行模块
优化器做好了执行计划后,接下来就会有执行的模块按照执行计划对数据进行干系的计算,包罗数据的存取、常规的加减乘除、排序、平均值、哈希,也会包罗一些机器学习的算法,数据的压缩/解压缩,末了将计算完成的效果返回给客户端。

d. 内部管理和调度
数据库要正常的工作,还会需要一些内部协调管理的模块,好比,内存和存储同步,存储空间整理,元数据管理,集群状态检测,容错和故障规复等。
e. 管理工具和接口
为了提高易用性,数据库都需要提供一套管理工具,好比备份/规复、状态检测、运行时监控、资源隔离、权限管理、安全审计、自定义接口、各种数据访问接口等。
4.数据库发展和预测

数据库的发展是伴随着计算机体系架构的发展而不停演进的,从主机,到个人电脑+网络(x86),到现在的云服务,数据库也经历了一系列的演化进程。

a. 主机时代
最初的计算机和数据库只是在航空航天、军事领域使用,只需要支持专业的数据分析人员进行数据分析。到了上世纪70年代末,伴随着计算机进入更多的商业场景,产生了大量的数据分析的需求,数据库就需要面对更为广泛的用户需求。在IBM最早发布的关系型数据库的论文中,最夸大的一点就是希望可以或许让数据库的用户不消再去操心数据应该如何存储和组织,而可以或许高服从使用这些数据进行分析。
为了方便用户的使用,SQL(结构化查询语言)被定义了出来,按照这样的语法,数据库用户只需要关注数据该如何分析,不需要关注底层的数据分布和存储等。
为了要支持大量用户的并发数据操作,数据库事件特性被定义了出来,保证在并发的数据操作下,用户可以或许看到符合业务逻辑的数据内容。
为了保证数据库的高服从和安全性,数据库重做日志(事件日志)被计划出来,包罗当前数据库中常常出现的一系列概念,好比回滚日志(Undo Log)、提交日志(commit log)、查抄点(checkpoint)等等。
主机时代由于硬件成本极其昂贵,不论是存储、内存还是CPU资源,相对来说都很稀缺,那么数据库在计划和使用上就会接纳各种算法和架构来降低对内存的使用,淘汰数据的冗余,提高数据的检索服从,因此各种数据索引类型,功能强大的查询优化器,数据缓存算法等在数据库中得到了极大的发展。同时在使用数据库时,也要对数据进行各种复杂的模子计划(3范式模子,星型模子,雪花型模子等等)以降低数据的冗余程度,固然这样也会增加数据库应用的开辟难度。
b. x86时代
伴随着x86服务器的广泛使用和网络技能的发展,把N台x86服务通过网络组建成一个集群,利用这个集群的计算、存储能力来取代昂贵的主机也就更加具有性价比。在这种趋势下,也就计划出了各种可以或许使用集群能力的分布式数据库体系,这些体系的焦颔首脑就是把数据分散在差别的节点上,利用多个节点的计算和存储资源提高对数据的存储和分析能力。在分布式的处理架构下,数据一致性协议、多副本机制、高可用机制、数据分片机制、扩容/缩容机制等等也都成为了分布式数据库必须要计划和解决的问题。
在x86时代,由于硬件成本的大幅降落,用户更多关注数据分析的机动性和交付的服从。因此,使用数据库时更多会关注如何加速数据分析的过程、如何让数据更易于人类明白,而不需要为了降低数据的冗余而进行复杂的模子构建。
c. 云时代
随着技能的进一步发展,通过把传统硬件虚拟化/容器化等技能,提高硬件资源的使用服从,降低生产运维成本的云服务被越来越多企业接纳。为了更好地顺应云服务的技能体系,数据库也计划出了干系的云特性,好比存储计算分离、弹性伸缩、微服务化、跨域数据同步等等。
云时代,用户更加关注数据分析的服从和投入产出比,更加关注产物是否可以或许提供便利的一体化数据处理服务,让业务开辟者可以或许更加专注于业务本身,而数据库服务也在朝着尺度化云服务的方向不停演进。
d. 预测
差别的数据库架构和部署方式不是一个简单的迭代和取代的关系,而是在很长一段时间里会同时存在而且逐步迭代的过程。时至今日,依然有不少金融机构会选择使用在主机上的数据库产物,只是新的业务和场景非常有限。而基于x86服务器的数据处理产物,还是当前企业数据库的主流选择。与此同时,云数据库的市场份额也在逐步增长和扩大。接纳何种数据库产物要根据自身的业务需求来决定,合适的就是最好的。固然从技能演进的方向上看,云技能(包罗公有云和私有云)会是大势所趋,因为云可以或许提供更高的服从。
数据库作为信息产业的三大基础技能(还有芯片和操作体系)之一,在相当长的时间里,不论从资本还是技能方面都非常火热,国内近几年来也出现了相当多良好的数据库产物和企业。在人类迈向数字化文明的进程中,肯定会产生越来越多的数据,也需要从数据中挖掘出更多的代价,而数据库作为承载数据的焦点,也必将持续发挥重要作用。有幸不停在从事这个领域的工作,期待与广大同仁一道为人类数字化技能的进步贡献力量。
二、使用C语言实现一个简单的数据库

这边推荐几篇博客:
(C语言)数据库简单素现
[小项目]c语言实现数据库操作(低仿)
c简易实现数据库
三、使用C语言连接数据库

固然各人基本不会使用本身写的数据库,一样平常都是使用专业的数据库。
下面我们看看怎么使用C语言来连接数据库。
先安装一下MySQL,可以参考这篇博客:超级详细的mysql数据库安装指南
我的安装路径为:C:\Program Files\MySQL

include目录中就包罗我们C语言连接数据库所需要的头文件。

要想使用C语言来连接MySQL数据库,我们需要将头文件的路径和库文件的路径加入进来。

可以看看下面的文章来看看一些详细的操作:
C语言操作mysql范例(增删查改)
c语言连接数据库以及对数据库操作
四、SQL语言和MySQL教程

1.SQL是什么

SQL 是一种操作数据库的语言,包罗创建数据库、删除数据库、查询记载、修改记载、添加字段等。SQL 固然是一种被 ANSI 尺度化的语言,但是它有很多差别的实现版本。
ANSI 是 American National Standards Institute 的缩写,中文译为“美国国家尺度协会”。
SQL 是 Structured Query Language 的缩写,中文译为“结构化查询语言”。SQL 是一种计算机语言,用来存储、检索和修改关系型数据库中存储的数据。
SQL 是关系型数据库的尺度语言,所有的关系型数据库管理体系(RDBMS),好比 MySQL、Oracle、SQL Server、MS Access、Sybase、Informix、Postgres 等,都将 SQL 作为其尺度处理语言。
此外,SQL 也有一些变种,就像中文有很多方言,好比:

SQL 的用途
SQL 之以是广受欢迎,是因为它具有以下用途:

SQL 简史
1970 年,IBM 的 Edgar Frank “Ted” Codd(埃德加·弗兰克·科德)博士描述了关系型数据库的模子,他因此被称为“关系型数据库之父”。
1974 年,IBM 希望把 Codd 的想法变成现实,着手开辟一款名为 System R 的数据库,并研发出一套结构化查询语句 SEQUEL,这就是 SQL 的雏形。System R 数据库于 1978 年第一次发布,用于科研和实行。
1979 年,Oracle 公司起首提供商用的 SQL,随后 IBM 公司也在 DB2 数据库中实现了 SQL。
1986 年 10 月,美国 ANSI 接纳 SQL 作为关系型数据库管理体系的尺度语言,紧接着国际尺度组织(ISO)也将 SQL 采取为国际尺度。
1989 年,ANSI 发布了 SQL 尺度的庞大更新版本,以补充旧版的不足,称为 ANSI SQL 89,该版本也被 ISO 采取。
目前,市场上重要的关系型数据库都有本身的 SQL 变种, 但是它们都遵守 ANSI SQL 89 尺度。
SQL 执行过程
当你在任何一款 RDBMS 中执行 SQL 下令时,体系起首确定执行哀求的最佳方式,然后 SQL 引擎将会翻译 SQL 语句,并处理哀求任务。
整个执行过程包含了多种组件,好比:

传统查询引擎可以或许处理所有的非 SQL 下令,但是 SQL 引擎并不能处理逻辑文件。
下图展示了 SQL 的体系结构:

SQL 下令
与关系型数据库有关的 SQL 下令包罗 CREATE、SELECT、INSERT、UPDATE、DELETE、DROP 等,根据其特性,可以将它们分为以下几个类别。
1) DDL - Data Definition Language,数据定义语言

对数据的结构和情势进行定义,一样平常用于数据库和表的创建、删除、修改等。
下令说明CREATE用于在数据库中创建一个新表、一个视图大概别的对象。ALTER用于修改现有的数据库,好比表、记载。DROP用于删除整个表、视图大概数据库中的别的对象 2) DML - Data Manipulation Language,数据处理语言

对数据库中的数据进行处理,一样平常用于数据项(记载)的插入、删除、修改和查询。
下令说明SELECT用于从一个大概多个表中检索某些记载。INSERT插入一条记载。UPDATE修改记载。DELETE删除记载。 3) DCL - Data Control Language,数据控制语言

控制数据的访问权限,只有被授权的用户才能进行操作。
下令说明GRANT向用户分配权限。REVOKE收回用户权限。 2.常用数据库访问接口简介

差别的程序计划语言会有各自差别的数据库访问接口,程序语言通过这些接口,执行 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 新加入的一个庞大功能。
3.常用数据库大汇总(附带优缺点)

现在已经存在了很多良好的商业数据库,如甲骨文(Oracle)公司的 Oracle 数据库、IBM 公司的 DB2 数据库、微软公司的 SQL Server 数据库和 Access 数据库。同时,还有很多良好的开源数据库,如 MySQL 数据库,PostgreSQL 数据库等。下面先容这些常见的数据库。
1)Oracle

Oracle 是甲骨文公司的一款关系型数据库管理体系,在数据库领域不停处于领先职位的产物,是目宿世界上盛行的关系型数据库之一,是一种高服从、可靠性好、顺应高吞吐量的数据库方案。

Oracle图标
优点:

   向下兼容指的是高版本支持低版本的大概说后期开辟的版本支持和兼容早期开辟的版本。
  缺点:

2)SQL Server

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

SQL Server图标
优点:

缺点:

3)MySQL

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

MySQL图标
优点:

缺点:

4)Access

Access 是由 Microsoft(微软)发布的小型关系数据库管理体系,是微软把数据库引擎的图形用户界面和软件开辟工具结合在一起的一个数据库管理体系。

Access图标
优点:

缺点:

5)DB2

DB2 是美国 IBM 公司开辟的一款支持多媒体、Web 的关系型数据库管理体系。重要应用于大型应用体系,具有较好的可伸缩性,可支持从大型机到单用户环境。

DB2图标
优点:

缺点:

6)PostgreSQL

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

PostgreSQL图标
优点:

   BSD 开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源大概专有软件再发布。
  缺点:

4.MySQL是什么?它有什么上风?

随着时间的推移,开源数据库在中低端应用中逐渐盛行起来,占据了很大的市场份额。开源数据库具有免费使用、配置简单、稳定性好、性能优良等特点,而 MySQL 数据库正是开源数据库中的良好代表。
   开源全称为“开放源代码”。很多人以为开源软件最明显的特点是免费,但实际上并不是这样的,开源软件最大的特点应该是开放,也就是任何人都可以得到软件的源代码。可以在源代码的基础上加以修改学习,以致重新发放,固然是在版权限制范围之内。不清楚的读者可以参考《开源就等于免费吗?用究竟来说话》一节。
  MySQL 是最盛行的数据库之一,是一个免费开源的关系型数据库管理体系,但也不意味着该数据库是完全免费的。MySQL 由瑞典 MySQL AB 公司开辟,目前属于 Oracle 公司。MySQL 得当中小型软件,被个人用户以及中小企业青睐。
针对差别的用户,MySQL 分为两个版本:
留意:MySQL Cluster 重要用于架设群服务器,需要在社区服务或企业版的基础上使用。
MySQL 的定名机制由 3 个数字和 1 个后缀构成,例如 mysql-5.7.20:

在 MySQL 开辟过程中,同时存在多个发布系列,每个发布系列的成熟度处在差别阶段。

   留意:对于 MySQL 4.1 等低于 5.0 的老版本,官方将不再提供支持。所有发布的 MySQL 版本已经颠末严酷尺度的测试,可以保证其安全可靠地使用。针对差别的操作体系,读者可以在MySQL官方下载页面(http://dev.mysql.com/downloads/)下载相应的安装文件。
  MySQL的特点、上风

MySQL 数据库管理体系具有很多的上风,下面总结了其中几种。
1)MySQL 是开放源代码的数据库

MySQL 是开放源代码的数据库,任何人都可以获取该数据库的源代码。这就使得任何人都可以修正 MySQL 的缺陷,而且任何人都能以任何目标来使用该数据库。MySQL 是一款可以自由使用的数据库。
2)MySQL 的跨平台性

MySQL 不但可以在 Windows 系列的操作体系上运行,还可以在 UNIX、Linux 和 Mac OS 等操作体系上运行。因为很多网站都选择 UNIX、Linux 作为网站的服务器,以是 MySQL 的跨平台性保证了其在 Web 应用方面的上风。固然微软公司的 SQL Server 数据库是一款很良好的商业数据库,但是其只能在 Windows 系列的操作体系上运行。因此,MySQL 数据库的跨平台性是一个很大的上风。
3)价格上风

MySQL 数据库是一个自由软件,任何人都可以从 MySQL 的官方网站上下载该软件,这些社区版本的 MySQL 都是免费试用的,纵然是需要付费的附加功能,其价格也是很便宜的。相对于 Oracle、DB2 和 SQL Server 这些价格昂贵的商业软件,MySQL 具有绝对的价格上风。
4)功能强大且使用方便

MySQL 是一个真正的多用户、 多线程 SQL 数据库服务器。它可以或许快速、有效和安全的处理大量的数据。相对于 Oracle 等数据库来说,MySQL 的使用黑白常简单的。MySQL 重要目标是快速、健壮和易用。
MySQL 与常用的主流数据库 Oracle、SQL Server 相比,重要特点就是免费,而且在任何平台上都能使用,占用的空间相对较小。但是,MySQL 也有一些不足,好比对于大型项目来说,MySQL 的容量和安全性就略逊于 Oracle 数据库。
5.MySQL实用于哪些场景?

MySQL 是目宿世界上最盛行的开源关系数据库,大多应用于互联网行业。好比,在国内,各人所熟知的百度、腾讯、淘宝、京东、网易、新浪等,国外的 Google、Facebook、Twitter、GitHub 等都在使用 MySQL。社交、电商、游戏的焦点存储往往也是 MySQL。
任何产物都不可能是万能的,也不可能实用于所有的应用场景。那么 MySQL 到底实用于哪些场景又不实用于哪些场景呢?
1. Web 网站体系

Web 网站开辟者是 MySQL 最大的客户群,也是 MySQL 发展史上最为重要的支持力量。
MySQL 之以是能成为 Web 网站开辟者们最青睐的数据库管理体系,是因为 MySQL 数据库的安装配置都非常简单,使用过程中的维护也不像很多大型商业数据库管理体系那么复杂,而且性能精彩。还有一个非常重要的原因就是 MySQL 是开放源代码的,完全可以免费使用。
2、日志记载体系

MySQL 数据库的插入和查询性能都非常的高效,假如计划的好,在使用 MyISAM 存储引擎的时候,两者可以做到互不锁定,达到很高的并发性能。以是,对需要大量的插入和查询日志记载的体系来说,MySQL 黑白常不错的选择。好比处理用户的登录日志,操作日志等,都黑白常得当的应用场景。
3、数据仓库体系

随着现在数据仓库数据量的飞速增长,我们需要的存储空间越来越大。数据量的不停增长,使数据的统计分析变得越来越低效,也越来越困难。下面是几个重要的解决思路。
1)接纳昂贵的高性能主机以提高计算性能,用高端存储设备提高 I/O 性能,效果理想,但是成本非常高;
2)通过将数据复制到多台使用大容量硬盘的廉价 PC Server 上,以提高团体计算性能和 I/O 能力,效果尚可,存储空间有一定限制,成本低廉;
3)通过将数据水平拆分,使用多台廉价的 PC Server 和本地磁盘来存放数据,每台机器上面都只有所有数据的一部分,解决了数据量的问题,所有 PC Server 一起并行计算,也解决了计算能力问题,通过中心代理程序调配各台机器的运算任务,既可以解决计算性能问题又可以解决 I/O 性能问题,成本也很低廉。
在上面的三个方案中,第二和第三个的实现,MySQL 都有较大的上风。通过 MySQL 的简单复制功能,可以很好的将数据从一台主机复制到另外一台 ,不但仅在局域网内可以复制,在广域网同样可以。
固然,很多人可能会说,其他的数据库同样也可以做到,不是只有 MySQL 有这样的功能。确实,很多数据库同样能做到,但是 MySQL 是免费的,其他数据库大多都是按照主机数目大概 cpu 数目来收费,当我们使用大量的 PC Server 的时候,License 费用相当惊人。以是第一个方案,基本上所有数据库体系都可以或许实现,但是其高昂的成本不是每一个公司都可以或许承担的。
4、嵌入式体系

嵌入式环境对软件体系最大的限制是硬件资源非常有限,在嵌入式环境下运行的软件体系,必须是轻量级低消耗的软件。
MySQL 在资源的使用方面的伸缩性非常大,可以在资源非常充裕的环境下运行,也可以在资源非常少的环境下正常运行。它对于嵌入式环境来说,是一种非常合适的数据库体系,而且 MySQL 有专门针对于嵌入式环境的版本。
而且,MySQL 的定位是通用数据库,各种类型的应用一样平常都能利用到 MySQL 存取数据的上风。业内生产实践证实,MySQL 更得当中小型企业。以目前的软硬件产物水平来看,假如数据超过几个 TB 将难以高效利用 MySQL。
MySQL 可以作为传统的关系型数据库产物使用,也可以当作一个 key-value 产物来使用。由于它具有良好的灾难规复功能,因此相对于目前市场上的一些 key-value 产物会更有上风。
6.学MySQL前,需要相识这些数据库专业术语

在正式学习 MySQL 数据库前,我们有必要先相识一下数据库中的专业术语。下面汇总了一些在学习 MySQL 过程中会碰到的专业术语。
数据库管理体系(DBMS)是位于操作体系与用户之间的一种操纵和管理数据库的软件。关系型数据库通过关系数据库管理体系(RDBMS)进行管理。
关系(Relational,即 RDBMS 里的 R)表现这是一种特别的 DBMS,数据库中表与表之间要存在关系。
数据库(DataBase,即 RDBMS 里的 DB)是一个用来存储和管理数据的仓库。它的存储空间很大,而且有一定的数据存放规则。通过由行和列构成的二维表(雷同 Excel 工作表)来管理数据。数据库中可以同时存储多个表。
管理体系(Management System,即 RDBMS 里的 MS)是一个软件,我们可以通过它来插入(insert)、查询(query)、修改(modify)或删除(delete)表中的数据。
用来管理数据的二维表在关系数据库中简称为表(Table),每个表由多个行(Row)和列(Column)构成。
表的列(垂直方向)称为字段,是具有相同数据类型的数据聚集。表的行(水平方向)称为记载(Record),相当于一条数据。记载可以包含多项信息,表中的每一列都对应于其中的某一项。
下图是一个统计学生信息的 student 表。可以看到,每个列都包含了所有学生的某个信息,好比 name(姓名)。而每行则包含了某个学生的所有信息,即 id(编号)、name(姓名)、 age (年龄)、stuno(学号)等。

SQL(Structured Query Language,结构化查询语言)是用来操作关系型数据库的语言,使用 SQL 可以对数据库和表进行添加、删除、修改和查询等操作。
与别的计算机语言一样,初次接触 SQL 的人肯定会以为它很希奇。例如,在创建表时,很多人都会把表与图表或图片接洽起来,但是 MySQL 不是这样的。在 MySQL 中创建表时,你必须输入雷同下面这样的内容。
CREATE TABLE student (
id int(4),
name varchar(20),
age int(4),
stuno int(11),
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
网上学习资料一大堆,但假如学到的知识不成体系,碰到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技能提升。
需要这份体系化的资料的朋友,可以添加V获取:vip1024b (备注Go)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感爱好的新人,都欢迎加入我们的的圈子(技能交流、学习资源、职场吐槽、大厂内推、口试辅导),让我们一起学习发展!
都包含了所有学生的某个信息,好比 name(姓名)。而每行则包含了某个学生的所有信息,即 id(编号)、name(姓名)、 age (年龄)、stuno(学号)等。

SQL(Structured Query Language,结构化查询语言)是用来操作关系型数据库的语言,使用 SQL 可以对数据库和表进行添加、删除、修改和查询等操作。
与别的计算机语言一样,初次接触 SQL 的人肯定会以为它很希奇。例如,在创建表时,很多人都会把表与图表或图片接洽起来,但是 MySQL 不是这样的。在 MySQL 中创建表时,你必须输入雷同下面这样的内容。
CREATE TABLE student (
id int(4),
name varchar(20),
age int(4),
stuno int(11),
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
网上学习资料一大堆,但假如学到的知识不成体系,碰到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技能提升。
需要这份体系化的资料的朋友,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-kFQxkDwn-1713225335583)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感爱好的新人,都欢迎加入我们的的圈子(技能交流、学习资源、职场吐槽、大厂内推、口试辅导),让我们一起学习发展!

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




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4