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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 有些事情时刻都在发生,但是我们通常很少意识到它们的存在。比如,当我们使用网页或移动应用的时候,其实在不断的产生着数据:注册一个网站或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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
2月前
|
前端开发 JavaScript 数据库
全栈开发者的成长之路:从基础到精通
【7月更文挑战第25天】全栈开发者的成长之路是一条既充满挑战又充满机遇的旅程。通过广泛积累基础知识、精进专业技能和积累实战经验,你可以逐步成长为一名优秀的全栈开发者。在这个过程中,保持对新技术的好奇心和学习热情是至关重要的。同时,也要注重团队合作和沟通能力的培养,因为在软件开发领域,一个人的力量是有限的,而团队的力量是无穷的。希望本文能为你的全栈开发之旅提供一些有益的启示和帮助。
|
2月前
|
前端开发
全栈技术实践问题之全栈开发带来的主要好处是什么
全栈技术实践问题之全栈开发带来的主要好处是什么
|
存储 开发框架 小程序
【全栈小程序开发路线】手把手教你入门小程序开发,小白必看!
以下内容是结合我项目中实战经验,踩坑记录,大量时间学习小程序的积累,总结分享给大家。 学习路线包括前端基础、小程序开发框架、UI组件库、云开发、周边生态以及插件这几个纬度,学完这些,你也能全栈开发一个属于自己的产品。
516 0
|
10月前
|
SQL 前端开发 JavaScript
初中级前端开发工程师如何提升个人能力?
初中级前端开发工程师如何提升个人能力?
73 0
|
移动开发 前端开发 Java
|
机器学习/深度学习 人工智能 前端开发
前端已死?全栈当立?取法于中,仅得其下。
开篇明义,前端已死?根本就是扯淡。前端技术精微渊深,驳杂宽广,除了基础的 HTML、CSS 和 JavaScript 技术外,前端技术还涉及到许多其他相关技术和工具,比如前端框架、UI 库、自动化构建工具、代码管理工具等等。这些技术并没有死,反而生态圈愈发健壮,但为什么前端已死的论调甚嚣尘上?
前端已死?全栈当立?取法于中,仅得其下。
|
SQL 开发框架 小程序
小程序开发-第二章第七节个人中心-全栈工程师之路-中级篇
小程序开发-第二章第七节个人中心-全栈工程师之路-中级篇
179 0
小程序开发-第二章第七节个人中心-全栈工程师之路-中级篇
|
Web App开发 JavaScript 前端开发
从编程小白到全栈开发:寻找代码中的问题
很少有人能一下子就写出完全没有问题的代码。工作良好的程序,都是经过一遍遍的反复测试运行、发现问题、剔除问题(也就是我们所说的找Bug和修Bug)过后的产物,经过了这一过程,程序才能最终达到一个相对稳定的状态。
1320 0
|
JavaScript 前端开发 API
从编程小白到全栈开发:服务的调用
忙带懒,好久没有更新文章了(其实主要是想留给你们一些消化前面文章知识点的时间,哈哈哈)。 我们在前文 《从编程小白到全栈开发:基于框架开发服务端》中,初步学习了如何使用Node.js服务端框架Express来编写后端服务,并基于Express,对我们先前的简易计算器程序的代码进行了一次重构。
1361 0
|
JavaScript 中间件 API
从编程小白到全栈开发:基于框架开发服务端
上文中,我们了解了关于服务器端的一些概念知识,尤其是HTTP协议相关的最基本知识点,今天我想跟大家分享一下在平时正真的开发中,是如何来利用和体现这些内容的。
1286 0