加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

31 | 数据观:在你眼里,数据到底是什么?

发布时间:2023-01-08 14:30:46 所属栏目:大数据 来源:未知
导读: 你好,我是臧萌。这一节我来和你漫谈一下数据。工作这么多年来,我看待数据的态度,经历了从轻视、差不多就行,到重视和严谨对待的转变,甚至对数据有些敬畏。
我相信很多同学在刚开始工作

你好,我是臧萌。这一节我来和你漫谈一下数据。工作这么多年来,我看待数据的态度,经历了从轻视、差不多就行,到重视和严谨对待的转变,甚至对数据有些敬畏。

我相信很多同学在刚开始工作的时候,也是只重视程序不重视数据。程序员嘛,就是写程序的。数据结构、算法、设计模式,这才是我们程序员的战场高地。数据什么的,随便搞搞,别耽误我写程序就行。数据大不了删了重来。什么?不能删?那就迁移一下嘛。

还有的同学在抛出自己的观点时,经常是七分靠直觉,两分靠猜测,一分靠经验。就是没数据什么事儿。当别人就某个细节问下去的时候,就开始拍胸脯拍脑袋,但就是给不出什么具体的数据。这时候,沟通基本就进行不下去了。因为当每个人的观点有冲突时,光凭直觉、猜测、经验都无法让对方信服。

今天,我们就从软件系统和与人沟通两个方面,来谈谈数据的重要性。

程序重要?数据更重要

我们来思考一下这个问题,是我们设计的系统和写的程序代码更重要,还是数据更重要呢?相信很多同学都会下意识地觉得系统和代码更重要。但我觉得不然,数据其实更重要。下面我们来聊聊这个话题。

数据是软件系统的根本

我们来打个比方,数据就好像经济活动中的钱和账。数据在各个系统里的流动,就好像钱在不同的组织之间流动。无论是什么经济活动,做账都能把钱的流动一笔笔记清楚,通过账本,你就能够把经济活动给理解清楚。钱和账,是经济活动中最重要的。

公司可以今天卖口罩,明天卖水果,但是账的重要性是不变的。就好像软件系统可以重构、重写,甚至可以换技术、换语言、换平台,这都不重要。重要的是软件系统要能把数据落地入库。只要数据能够按照之前的规则入库,软件系统怎么改都无所谓。

在软件构造的虚拟世界中,数据是唯一的真实存在。尤其是那些以数据处理为目的的软件系统,更是这样。软件系统的目的就是把数据写入库。所以很多程序员戏称自己是专业的 CRUD,从这个层面来说,CRUD 才是根本。如果一个程序不 CRUD,不读取数据,也没有数据落盘,那它跑起来有啥用呢?

下面我们再从实际情况来看看,为什么应该重视数据。

软件系统可以升级,数据很难升级

对于很多偏数据的系统,数据架构设计比软件的架构更重要。数据的架构包括系统中有哪些实体、实体有哪些属性、属性分别是什么类型、实体与实体之间有什么关系、数据如何联动等等。当然也包括采用哪种数据库、数据库怎么分库分表等等。如果采用的是 NoSQL 数据库,则要考虑数据的访问模式、数据的可靠性、数据的可用性等等。当然两种数据库都要考虑如何应对数据的增长问题。

为什么说数据的架构比软件更重要呢?升级软件系统,很多时候是可以测试的。只要最后输出的结果对,就没啥问题。给软件系统升级,还有很多方式可以让系统升级的影响更小,比如灰度发布、A/B 测试等等。只要底层数据结构不变,底气就还有。只要程序没破坏数据,出了问题回滚就可以了。

但是数据升级,难度就远远不止这样了。如果说给业务系统升级是给飞驰的汽车换轮子,那么给数据升级则是相当于是给飞驰的汽车换发动机。有时候还是得从内燃发动机换成新能源发动机,同时车还不能停。

为什么这么说呢?因为给数据升级,有很多沉甸甸的问题需要解决。这里我随便列出几个:

数据如果不兼容怎么办?如果补的话,缺的属性值怎么补?

数据的结构变化升级,如何保证业务不受影响?要知道历史数据的大小,绝不是一个 alter 可以简单搞定的。alter 一下数据库可能很久很久没反应,甚至直接挂了都有可能。

如何保证数据不丢失?

这种数据升级往往是没有回退可能的,或者回退的代价极高。如何能做到万无一失?

删库的代价和删程序的代价是不能比的。删库给公司带来重大损失,甚至倒闭的例子有很多。但是把程序删了,恢复的挑战和风险要小得多。比如当年携程不小心把线上的程序给删了,但是真的恢复起来大数据思考,也很快。对后续的业务,也没有任何影响。

这里我们再强调一点。程序写得烂,比如跑得慢一点,设计得不好等等,这些问题很多时候并不麻烦,大都是稍微花点时间就能够修复,也不会造成什么损失。我们写程序的时候,尤其需要注意的是生成入库数据和写入数据的代码。在对这些程序代码进行更改的时候,更是要谨慎谨慎再谨慎。如果破坏了数据或者写入了脏数据就麻烦了。这点一定要注意,敬畏数据。

数据是新时代的土地

对于很多行业来说,比如 AI、自动驾驶等,数据就是根基。再牛的算法和模型,也顶不过真实的海量数据有价值。算法可以招人来做,实在不行可以买。而数据呢,得自己积累,需要时间和渠道。想购买数据呢,也很难买得到,因为数据就是核心竞争力,谁会去卖自己的核心竞争力呢?

我们可以把数据理解为新时代的土地,是一切的根基。有了数据,干什么都可以。没有数据,再好的种子,也没有发芽的空间。种子和土地,当然都重要,但是两者的分量不在一个级别上。数据够多,随便什么算法模型都能得出不错的结果。但如果没数据,能做到的事情就会很受限。可以说,数据起的是决定性的作用,是基础,是土地,算法和模型是地上开花。

即使是算法和模型工程师,日常工作中很大一部分时间,也是在整理数据。俗话说:数据从来不是干净的。所以能把数据整理好,基本上就胜利一大半了。

没数据,莫开口

我们之前反复聊了沟通。今天我们从沟通的角度来看看数据。我们可以思考一下,我们在和同事沟通的时候,信息是否足够地准确和清晰呢?我们在沟通中,有没有提供或者接收到足够多的数据呢?

先说数据

我刚工作那几年,交流的时候经常无法传递准确的信息。比如被问起数据量增长了多少,我就说增加了一点;被问起数据丢失了多少,就说丢失了不多;被问起一行数据有多大,就说不太大;被问起有几个单元测试没过,就说没几个。有时候对方不再追问,我可能还感觉自己回答得挺好。

有时候对方一个反问:增加了一点具体是增加多少?我就傻眼了,可能支支吾吾也说不出个所以然来。当然,数据我确实是看过,在我看来,也确实就是增加了一点,但是具体的数字没上心,被问起来,就很尴尬。

可能有时候我心里还有点不平:一点就是一点,你管他多少,反正不多嘛。但是实际情况是,每个人对于一点、不多、不大、没几个这些词语的理解都是不一样的,很多时候这些都会掺杂进个人的判断。而交流首先应该提供事实,而不是个人的主观判断。当大家对事实都有了一致的认识之后,再各抒己见。

再比如说单元测试,很多人看来,一个不过就是有问题的,也有的人心大觉得 10% 以内的就没问题。当然这个也和具体的项目有关系,可能某些项目的单元测试已经对环境有依赖了,有几个不过确实难免。所以,交流应该从具体有几个单元测试不过,具体是哪几个单元测试不过这些方面开始。而不是上来就给出自己的结论。可能有些测试特别重要,而且一定要求过呢?

所以我渐渐地养成了给出准确数据的习惯。任何问题,先找出数据,罗列清楚,再去做自己的分析。准确、经过整理的数据是自带力量的。我们经常说:一图胜千言。这里除了具象的图画之外,我觉得图表也应该算在这个图里面。一份整理好的数据传递的信息,有时候胜过反反复复地讨论得出的结论。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!