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

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 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月前
|
测试技术 Android开发 开发者
移动应用开发之旅:从概念到上线的全栈探索
【9月更文挑战第36天】在这个数字时代,移动应用已经成为我们生活中不可或缺的一部分。本文将带领读者踏上一场精彩的旅程,从最初的构想到最终的应用上线,深入探讨移动应用开发的各个环节。我们将一起揭开移动操作系统的神秘面纱,了解它们如何支撑起整个移动生态系统。通过具体的代码示例和实操建议,本文旨在为初学者提供一份实用的指南,同时给予有经验的开发者一些新的启示。让我们一起构建更智能、更互联的世界吧!
|
5月前
|
前端开发
全栈技术实践问题之全栈开发带来的主要好处是什么
全栈技术实践问题之全栈开发带来的主要好处是什么
|
存储 开发框架 小程序
【全栈小程序开发路线】手把手教你入门小程序开发,小白必看!
以下内容是结合我项目中实战经验,踩坑记录,大量时间学习小程序的积累,总结分享给大家。 学习路线包括前端基础、小程序开发框架、UI组件库、云开发、周边生态以及插件这几个纬度,学完这些,你也能全栈开发一个属于自己的产品。
581 0
|
移动开发 前端开发 Java
|
SQL 存储 固态存储
全栈软件测试工程师宝典连载(10)(下)
全栈软件测试工程师宝典连载(10)(下)
71 0
全栈软件测试工程师宝典连载(10)(下)
|
机器学习/深度学习 人工智能 前端开发
前端已死?全栈当立?取法于中,仅得其下。
开篇明义,前端已死?根本就是扯淡。前端技术精微渊深,驳杂宽广,除了基础的 HTML、CSS 和 JavaScript 技术外,前端技术还涉及到许多其他相关技术和工具,比如前端框架、UI 库、自动化构建工具、代码管理工具等等。这些技术并没有死,反而生态圈愈发健壮,但为什么前端已死的论调甚嚣尘上?
前端已死?全栈当立?取法于中,仅得其下。
|
人工智能 运维 安全
全栈软件测试工程师宝典连载(4)(上)
全栈软件测试工程师宝典连载(4)(上)
110 0
全栈软件测试工程师宝典连载(4)(上)
|
存储 监控 Devops
全栈软件测试工程师宝典连载(8)(下)
全栈软件测试工程师宝典连载(8)(下)
91 0
全栈软件测试工程师宝典连载(8)(下)
|
Web App开发 监控 前端开发
全栈软件测试工程师宝典连载(6)(上)
全栈软件测试工程师宝典连载(6)(上)
81 0
全栈软件测试工程师宝典连载(6)(上)
|
运维 算法 前端开发
全栈软件测试工程师宝典连载(4)(下)
全栈软件测试工程师宝典连载(4)(下)
109 0