从编程小白到全栈开发:数据 (1)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 有些事情时刻都在发生,但是我们通常很少意识到它们的存在。比如,当我们使用网页或移动应用的时候,其实在不断的产生着数据:注册一个网站或app的账号、发一条微博、写一篇简书文章、提一个知乎问题、亦或是给别人点了一个赞,甚至,只是你的鼠标或手指在界面上随意的滑来点去的。

有些事情时刻都在发生,但是我们通常很少意识到它们的存在。比如,当我们使用网页或移动应用的时候,其实在不断的产生着数据:注册一个网站或app的账号、发一条微博、写一篇简书文章、提一个知乎问题、亦或是给别人点了一个赞,甚至,只是你的鼠标或手指在界面上随意的滑来点去的。这些数据都可能被通过网络发送到网站或app的服务端,被存储起来以供后续的处理和使用。

这些数据之后可能还会被你自己再次使用,比如你登录网站或app的时候,本次输入的账号密码会拿来和你注册时输入的账号密码进行比对,校验通过后才能确认你的合法使用者身份;或者,这些数据也可能会被发送到其他用户那边去,被其他人看到,比如你写的文章会被其他人搜索和阅读;亦或者,这些数据只会被网站或app的开发运营者使用,通过分析这些数据,了解你的阅读爱好、年龄层次、使用何种设备上网等等,最后他们可能会根据分析结果来进一步改善网站或app的使用体验,或者用于向你推荐更多符合你口味的文章、推销你可能想买的商品等等。

数据的存储与处理,是软件开发中极其重要和有价值的一个部分,因此,我们肯定需要好好的了解和掌握它。在后面的文章中,让我们花多一点时间来学习这方面的内容吧,主要会集中在数据收集、数据传输、数据存储、以及数据的再使用等方面。

数据收集

数据收集,就是从数据源处获得数据。数据收集有很多种不同形式,比较典型的有:

  • 设计一些网页表单,让用户填写该表单
  • 在代码中埋点,当代码执行到指定的埋点位置,即向服务器发送相应数据
  • 对接第三方系统API、硬件传感器等,由第三方主动推送、或由己方拉取数据
  • 编写数据爬虫,选取固定格式或无视格式的从其他网站上抓取数据
  • 手动收集数据,整理成比较规整的结构,比如csv,excel文件等

没记错的话,在之前的文章中我们其实已经涉及到了一些如何将前端的数据发送到服务端的知识,比如在简易计算器的例子中就有一个网页表单,通过该表单,我们可以收集到用户输入的数字和操作符,并发送到服务端进行数学运算。

数据传输

数据从客户端发送到服务端,我们通常会根据实际的应用场景,来决定使用什么方式进行传输,比如我们通常会考虑以下情况:

  • 是否需要进行实时传输
  • 网络状况是否稳定
  • 传输过程是否需要对数据进行加密

由于存在这类诸多原因,因此有了各种各样应用在数据传输过程中的网络应用层协议,比如HTTP、HTTPS、WebSocket、FTP、MQTT等等,以应对不同数据源和不同网络的要求。

数据存储

当我们从目标数据源获取到了数据后,肯定不希望数据就放在计算机的内存里,因为这样数据可能很快就丢了,下次要用的时候找不到了。因此我们需要将数据进行持久化,保证我们在以后需要使用这些数据的时候,能顺利的再次调出数据。

我们最熟悉的数据持久化形式,就是我们硬盘中的各种文件,通过文件的形式,我们可以将数据长期保持起来,想查看的时候可以随时查看,并可以进行分类整理,或者想分享给别人的时候可以通过网络发送给别人、或是通过U盘等介质复制给别人。

不过这种单纯的文件形式,在数据查询和数据操作上的能力还是非常弱的,比如我想从我硬盘上一堆文件中,得知文件内容中含有“一斤代码”四个字的文件的总字数,这个需求要通过纯文件的方式来实现,恐怕是比较难的。

为了实现这种数据持久化和数据管理方便性等问题,出现了一种系统软件:数据库软件。你可能听说过下面中的某些:MySQL,Oracle,SQL Server,DB 2,PostgreSQL等等,这些就是一些我们当今比较常用的数据库软件了,它们可以实现对数据进行高效组织、快速管理和查询。此外,数据库软件也分为关系型(SQL)和非关系型(NoSQL),关系型数据库主要比较擅长于存储和处理结构化的数据(就是数据集合中每条数据的字段都是事先定义好的,比如一张记录用户登录信息的表格中,你总事先定义出这张表格所包含的字段,如登录名,密码,性别,生日等等);而非关系型数据库则更擅长于存储和处理非结构化的数据,比如百货公司要在一张表里存储货物信息,而用于存储描述水果和刀具所需要的字段是不太一样的,如果用结构化的描述,很可能会出现一些冗余字段,比如对水果来说,用于描述刀具的厚度这个字段肯定是不需要的;而对于刀具来说,用于描述水果的保质期字段也显得多余。而如果使用非结构化的数据库,则我们就不需要考虑这样的情况了,在同一个表里容许数据之间的格式不统一。

像上面提到的MySQL,Oracle,SQL Server,DB 2,PostgreSQL等都是关系型数据库;而非关系型数据库近年来也呈飞速发展态势,比如著名的有MongoDB,Redis,CouchDB,Cassandra等。

关系型和非关系型数据库各有其长处和短处,目前来说并不是某一种数据库能包治百病。在实际使用过程中,需要好好调研,根据项目自身的实际情况,切实的清楚要解决什么问题,以此来决定选用何种数据库,或结合选用多种数据库。

数据的再使用

当我们把收集到的数据存储到数据库后,后面的事情就是对这些数据根据我们的业务需要进行使用了。最常见的就是使用后端开发语言比如Java、Python等,连接数据库并进行对数据的查询、新增、修改、删除等操作。也可以将数据库中的数据,按照某些业务逻辑,导出成报表,供用户下载查看等。或者将数据输入到某些数学模型,进行模型的训练,比如最近非常热门的人工智能机器学习,就需要使用大量数据对其数学模型进行训练。

今天就讲这么多吧,给大家一个比较笼统的概念,虽然笼统,但总比完全没有概念好,哈哈~祝大家学习愉快。

DT时代,数据就是生产力!
欢迎关注一斤代码的系列课程《从编程小白到全栈开发》

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
3天前
|
移动开发 前端开发 JavaScript
谈谈你对移动应用全栈开发的理解。
**全栈移动开发**涉及前端、后端、数据库及服务器技能,包括HTML、CSS、JavaScript、Java等语言。开发者需独立完成应用的开发与部署,具备团队协作和沟通能力,以保证应用质量、性能及用户需求。
|
6月前
|
SQL 前端开发 JavaScript
初中级前端开发工程师如何提升个人能力?
初中级前端开发工程师如何提升个人能力?
58 0
|
10月前
|
移动开发 前端开发 Java
|
敏捷开发 监控 Devops
全栈软件测试工程师宝典连载(2)
全栈软件测试工程师宝典连载(2)
115 0
全栈软件测试工程师宝典连载(2)
|
监控 网络协议 NoSQL
全栈软件测试工程师宝典连载(11)
全栈软件测试工程师宝典连载(11)
66 0
全栈软件测试工程师宝典连载(11)
|
存储 监控 Java
全栈软件测试工程师宝典连载(12)
全栈软件测试工程师宝典连载(12)
132 0
全栈软件测试工程师宝典连载(12)
|
数据可视化
低代码开发扫盲篇
随着数字化转型的兴起向远程工作方式的转变,使得许多企业需要快速做出改变以满足员工的新需求。这就要求公司必须继续学习如何更好的支持移动用户并快速开发新的应用程序,以帮助他们的工作人员保持生产力、协作性和效率。
771 0
低代码开发扫盲篇
|
SQL Java 程序员
独家下载!《Java开发手册》灵魂13问,深度剖析一线大厂开发思维
《〈Java开发手册(泰山版)〉灵魂13问》独家首发!全网千万阅读量技术博主深度剖析Java规约背后的原理,从“问题重现”到“原理分析”再到“问题解决”,下载《Java开发手册》必备的伴读书目!
248924 2
独家下载!《Java开发手册》灵魂13问,深度剖析一线大厂开发思维
|
Web App开发 JavaScript 前端开发
从编程小白到全栈开发:寻找代码中的问题
很少有人能一下子就写出完全没有问题的代码。工作良好的程序,都是经过一遍遍的反复测试运行、发现问题、剔除问题(也就是我们所说的找Bug和修Bug)过后的产物,经过了这一过程,程序才能最终达到一个相对稳定的状态。
1300 0