数据库与服务端

啥是数据库?

​ 数据库是存储数据的地方,我们平时使用电脑或者手机,接触到的都是图形化界面,不能直接接触到数据库,其实,数据库无处不在,我们使用的绝大多数需要记录的数据都存储在数据库中,可以说,现如今的便捷生活,就是建立在数据库的基础上的。登录网站时,用户的账号和密码都存储在服务器的数据库中。

1)服务器

​ 数据库本身是存储数据的软件,既然是软件,就要在硬件中运行,这个硬件就是服务器,中小型企业使用一台服务器就可以存储所有的数据,对大公司而言,数据较多,一台服务器不能存储所有的数据,通常多台数据库服务器共同来存储。

2)数据库

​ 数据库服务器可以有多个数据库,比如,对电商平台而言,会建立用户数据库、商品数据库、卖家数据库等,不同的数据库之间可以相互独立,也可以存在数据上的联系。

image-20230825145553090

3)数据表

​ 每个数据库又可以有很多个数据表。比如用户数据库,可以有多张数据表,不同数据表用来存储用户的不同数据,用户的账号、密码存储在用户数据表中,用户的购买记录存储在购买记录数据表中,用户操作数据存储在操作记录数据表中。

​ 下面的表格就是个简单的数据表,跟我们经常使用的Excel很像,包括行和列,每一列代表一个属性,每一行代表一条记录。这个用户数据表,有5列,分别是id、name、password、gender、birthday,分别代表编号、姓名、密码、性别、出生时间,有3行,分别表示小明、小红、小军的个人等信息。

image-20230825145652439

SQL、NoSQL数据库

​ 数据库大致可以分为两大类,SQL数据库和NoSQL数据库。SQL (Structured Query Language) 数据库,指关系型数据库,主要代表有SQL Server,Oracle,MySQL。NoSQL(Not Only SQL)指非关系型数据库,主要代表有MongoDB,Redis。

​ SQL、NoSQL在存储数据类型和存储方式上有较大的不同。

  • 第一,储存数据类型不同。
  1. 关系型数据库适合存储结构化数据,如用户的帐号、地址等。这些数据通常需要做结构化查询,比如选出所有的90后用户,使用SQL查询就非常方便,这时候,关系型数据库就要胜出一筹。
  2. NoSQL适合存储非结构化数据,如发微博、文章、评论等。一方面,这些数据通常是海量的,增长的速度难以预期,NoSQL数据库通常可以存储这些无限增长的数据。另一方面,这些数据类型比较复杂,可能同时包括文字、图片、音频、视频等,使用SQL无法直接存储,只能借助NoSQL。
  • 第二,储存方式不同。

数据类型不同,造成存储的方式也不同:

  1. SQL数据存在特定结构的表中,而NoSQL则更加灵活和可扩展,存储方式可以是JSON文档或者其他方式。比如,储存用户账号、密码、性别、出生日期,使用SQL存储的数据表如下。
image-20230825145924837
  1. NoSQL存储方式比较灵活,比如使用类JSON文件存储上表中的个人信息。

image-20230825150015540

SQL和NoSQL存储的数据类型、存储方式有较大不同,在某种程度上是互补关系,因此许多大型互联网项目都会采用SQL+NoSQL的组合存储方案。

服务端是干啥的?

  • 服务端是与前端对应的概念。前端包括Web网页、Android客户端、iOS客户端等,负责与用户交互,服务端则为前端提供支持。

​ 比如,用户注册登录的时候,前端会显示对话框,用户输入账号、密码之后,数据会被传递到服务端,由服务端实现账号、密码的验证。再比如,用户使用新闻客户端查看新闻的时候,手机APP显示新闻列表,每条新闻还有对应的标题、正文、图片,这些数据都存储在服务器上,手机APP从服务端获取这些数据并显示在手机屏幕上。

  • 服务器端的开发通常使用Java、PHP、Python语言,数据库通常使用MySQL、Oracle数据库。
image-20230825150132421

更具体地,服务端实现下列功能。

第一,储存和传递信息。

数据存储在服务器中,当我们访问网页时,服务器可以返回HTML网页数据,也可以返回PDF、图片、视频等类型的文件。服务器同样可以实现数据转发,比如,我们使用的微信、QQ等,发送的消息都是先传递到腾讯的服务器中,接收方再从服务器中接收。

将数据放在服务器中,可以实现客户端之间的切换,比如用户使用浏览器看电影时,服务器会存储播放记录,当用户切换到手机端观看时,可以接着看。

第二,控制访问内容。

服务器允许站点限制对用户的访问,并仅提供允许用户查看的信息,这就保证了数据的安全。除此之外,将数据集中存放,比分开放在不同的地方,维护起来更简单,也更能避免出现数据泄露等风险。

第三,数据分析。

服务器还可以对存储的数据进行分析,比如个性推荐,服务器会收集用户搜索、购买、点击、停留时间等数据,这些数据都存储在数据库中,服务端的软件可以实现数据挖掘、个性推荐。

常见的服务器架构

(1)最简单的服务器架构
image-20230825150353344

最初,服务器的架构非常简单,应用程序、数据库、文件等所有的资源都在一台服务器上。比如使用Linux作为操作系统、Apache作为服务器软件、MySQL作为数据库、PHP作为服务端编程语言,这个组合被称为LAMP。简单、成本低,可以满足日常的需求,个人网站和小公司网站通常就使用这种服务器架构,但是对于更大的公司,这种方式就不能满足对速度、存储容量的需求了。

(2)应用服务和数据服务分离
image-20230825150439334

随着系统访问量的增加,服务器的带宽和响应速度成为系统的瓶颈,特别是访问图片、视频等较大的文件时,下载速度会特别慢。

为了提高相应速度,通常会将应用程序、数据库、文件分别放置在不同的服务器中,提供处理能力,即使用应用服务器、文件服务器、数据服务器,分别实现相应的功能。

(3)使用缓存改善性能
image-20230825150538732

从数据库中读取数据要花费较长的时间,为了提高响应速度,会将一些经常访问的内容拿出来,放在缓存中,提高响应速度。比如,微博热搜的访问量非常大,通常都有几千万甚至上亿的访问量,如果把热搜数据保存在数据库中,每次都需要从数据库中读取,会花费大量的时间,但是如果把热搜的数据直接保存在缓存中,就不需要每次都从数据库读取,响应速度会大大提高。有时候,为了提高缓存的容量,还会建一个缓存服务器。

(4)使用应用服务器集群和分布式数据库
image-20230825150626491

​ 随着用户、数据量的进一步增加,原有的系统已经不能满足响应速度和存储容量需求,服务器集群和分布式数据库应运而生。

​ 服务器集群主要解决服务器响应速度问题。举个例子,有1万个用户同时访问服务器,应用服务器的访问量只有1万,服务器可以实现在短时间内响应。但如果有1000万个用户同时访问服务器,单个应用服务器端服务器的访问量就有1000万,此时系统根本无法响应,就需要多个服务器同时工作,比如有1000个服务器,平均每台服务器只有1万个用户。

​ 为了分配访问流量,通常还需要负载均衡。比如1000万个用户,1000个服务器,如果没有负载均衡,在1000万个用户可能会访问1000个服务器中的某些服务器,造成局部过载,添加了负载均衡,可以是1000万个用户较为均匀分配在这1000台服务中。

​ 单个数据库服务器、文件服务器无法满足系统对存储容量和响应速度的要求,同样要使用多个数据服务器和文件服务器,也就是采用分布式数据库和分布式文件系统,据统计,Google的数据中心有7万台服务器同时工作!

服务端与客户端的数据交互

​ 服务端与客户端通过网络进行数据传输,那又是如何传输数据的呢?比如用户使用账号、密码登录,但这些数据并不能直接传递,而是需要编码之后才能传递,否则在传输的过程中很容易出现错误,密码等敏感信息通常还会加密。

常见的有两种编码方式,分别是XML编码和JSON编码。

  • 扩展标记语言 (Extensible Markup Language, XML) ,用于标记数据使其具有结构性,是一种允许用户对自己的标记语言进行定义的源语言。 XML格式统一,跨平台和语言,早已成为业界公认的标准。概念有些拗口,我们举个例子,比如中国部分省市。
image-20230825150740497

使用XML表示这些数据。

image-20230825150821076

  • JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性,可在不同平台之间进行数据交换,使用JSON表示上面的表格:

    image-20230825150931689

从编码效率上看,XML包含很多重复的标记字符,长度也要长很多,相比之下JSON要短不少,因此JSON的通信效率更高。因为上面的这些原因,JSON的使用范围比XML使用范围要更广。

posted @ 2023-09-04 13:49  德琪  阅读(48)  评论(0编辑  收藏  举报