返回

让后端工程师兴奋的线下拉数据是种什么体验?

前端

作为一名工作N年的前端攻城狮,一直在前端的围栏里面安全的待着。一直参与的是前后端分离的项目,跟后端协作一直也比较和谐,多次参加过后端的技术评审,一直有听过 拉数据 、刷数据。算是 虽没吃过猪肉,也算见识过猪跑。

当时每每听见PM对着server同学提出这些诉求时,server同学都显得毫不在乎,一副轻车熟路的样子,我想, 这特么还是活?

直到有一天,PM同学实在忙不过来,便把我叫过去,让我写一条拉数据的脚本,我整个人都蒙圈了,我对拉数据这一块,实在是一窍不通,只能硬着头皮学。

期间无数次百度,求助伟大的Google,终于写好了。

并且测试了好久,然后拿着脚本跟后端的同学说,给我新创建个库,我跑了数据后,需要导入。

那个小哥哥冷不丁的来了句,你先跑。

我整个小脑袋转不过弯来,

原来拉数据这个过程,是前端的工作,拉完了,再移交后端。

拿着入库脚本,以及几张Excel表格,满怀期待的,开始了我的拉数据之旅。

整个过程,花了快三天。

我当时根本不理解,为什么一份小小的报表,居然要那么长的时间。

现在我终于明白了,那三天的时间, 根本就不是 拉数据的时间,而是 准备数据的时间。

往回退一步,拉数据真正的意义是什么?

是为了抓取源数据,然后在前端进行展现,然后供相关人员进行分析,获取一些有价值的信息。

什么有价值的信息?

如用户画像,用户行为,用户活跃度,页面访问量,用户留存率,点击率。

但如果仅仅只是拉数据,那就只能是单次的,并且只能满足最基础的数据查询。

如果想要根据不同维度,多条件查询呢?

这就需要准备数据了。

根据维度,整理数据,将原始数据,在表中,按列进行分组。

这才是真正的耗时大户。

准备好了,接下来,才轮到拉数据。

此时,再点开那个脚本,再拉数据, 那简直就是一个赛一个快。

第二天,我去找那个后端的同学,我说,你把库权限给我吧,

我的那个入库的脚本,不知道咋了,老出错。

那小子乐了, 你应该先把表结构建好。

又是一脸懵逼,还以为那是后端的工作呢。

后端的同学估计是怕我再找他建表,所以迫不及待的,

直接把我拉到了项目的数据库中,那个项目,是个几万表的项目。

在那无数的库中,一眼就找到了,那个我需要建表的新库。

一查询,果然,一张表都没有,我当时瞬间就在想, 那个库是建来干什么的?

想不通。

但还是只能乖乖的,打开查询工具,创建表。

你说创建表,光创建一张表,就创建了一个多小时,关键是,没创建成功。

关键的错误信息如下:

1215 Cannot add foreign key constraint
OK
{ id: 1215,
code: 'ER_CANNOT_ADD_FOREIGN',
errno: 1215,
sqlState: '23000',
sqlMessage: 'Cannot add foreign key constraint' }

找了很多资料,来回折腾了几个小时,还是解决不了。

突然间,一个灵感出现,

会不会是, 没有给那个用户赋权。

立刻找到那个库,果然, 只有查看权限,却没有修改权限。

修改一下权限,再试,果然成功了。

一看时间,我勒个去, 已经快1点了。

没有办法,只能继续, 加班加点的把字段都给建了。

两个小时,终于, 所有的表都建好了, 看看那个导入的脚本, 导入数据,导入的语句,又出错。

再次寻找原因,原来是, 字符串类型的字段, 少了引号。

现在, 终于明白了, 再改一次。

还是报错,

但是这次,是跑了一部分, 还有部分跑不完。

就这个时候,我终于发现了一个残酷的事实,那就是, 不少字段, 都是外键。

还有还有,这些外键关联的表,居然在另一个库里。

这就比较恶心了, 你说拉数据,就拉数据,

怎么还能跨库呢?

没办法, 只能把那个库的权限也给上。

没有办法,再次重新跑。

终于跑完了,

看看时间, 四点多了。

下班赶紧把项目部署一下, 然后设置好定时任务。

回到家,累成狗,洗个澡,倒头就睡。

第二天起来, 看看数据, 有的报表没问题,有的出不来数据。

这是为啥?

上到项目上去看,原来是定时任务没有配置。

赶紧配置好定时任务,问题解决。

这次, 总算是彻底解决问题了。

从刚开始的不理解,到最后慢慢的理解,

再到解决问题, 这期间,我的内心,是十分忐忑的。

心累,现在想来, 也挺有意思的。

<#EOF></#EOF>