让后端工程师兴奋的线下拉数据是种什么体验?
2023-12-02 15:52:13
作为一名工作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点了。
没有办法,只能继续, 加班加点的把字段都给建了。
两个小时,终于, 所有的表都建好了, 看看那个导入的脚本, 导入数据,导入的语句,又出错。
再次寻找原因,原来是, 字符串类型的字段, 少了引号。
现在, 终于明白了, 再改一次。
还是报错,
但是这次,是跑了一部分, 还有部分跑不完。
就这个时候,我终于发现了一个残酷的事实,那就是, 不少字段, 都是外键。
还有还有,这些外键关联的表,居然在另一个库里。
这就比较恶心了, 你说拉数据,就拉数据,
怎么还能跨库呢?
没办法, 只能把那个库的权限也给上。
没有办法,再次重新跑。
终于跑完了,
看看时间, 四点多了。
下班赶紧把项目部署一下, 然后设置好定时任务。
回到家,累成狗,洗个澡,倒头就睡。
第二天起来, 看看数据, 有的报表没问题,有的出不来数据。
这是为啥?
上到项目上去看,原来是定时任务没有配置。
赶紧配置好定时任务,问题解决。
这次, 总算是彻底解决问题了。
从刚开始的不理解,到最后慢慢的理解,
再到解决问题, 这期间,我的内心,是十分忐忑的。
心累,现在想来, 也挺有意思的。