如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
https://www.v2ex.com/pro/about

如果你经常使用铜币置顶主题,持有 V2EX Solana Token 会在每日签到时获得额外铜币:
https://www.v2ex.com/solana
itskingname
V2EX  ›  推广

数据工程师妹子养成手记——数据库篇[盖楼送书]

  •  
  •   itskingname · Feb 23, 2019 · 12212 views
    This topic created in 2820 days ago, the information mentioned may be changed or developed.

    这篇文章没有代码,请放心阅读。

    程序员最宝贵的东西是生命,生命属于程序员只有一次。一个程序员的一生应该这样度过:当她回首往事的时候,她不会因为搭建环境浪费时间而悔恨,也不会因为集群无法运行而羞耻。这样,在她开发的时候,她能够说:“我的整个生命和全部精力,都已经献给了开发中最重要的事情——设计程序,实现程序和调 Bug。” —— P 酱。

    P 酱是公司新来的实习生妹子。听说是一个文科生。文科生应该会去文案组或者策划组吧。什么?来数据组?让我来带?

    于是我和 P 酱~~生活~~工作在了一起。

    P 酱你会些什么?

    “我叫 P 酱,在 XX 大学读研二,爱好是拍照和被拍,大家可以在 B 站找到我跳舞的视频,比如 av170001。我的另外一个爱好是写代码……”

    当一个文科妹子说自己喜欢写代码的时候,整个办公室热闹了起来。

    “ P 酱,听说你喜欢写代码,那你写过什么东西吗?”新人介绍会议结束以后,我问 P 酱。

    “一般都是各种分析程序,我们的专业要做很多调查报告,他们都是用 Excel 来计算的。我喜欢用 Python 来把这些统计过程自动化。后来也写过自动写诗的程序、鬼畜视频生成器等等。”

    “真不敢相信你是文科生。这么说你的兴趣是数据分析方向咯?”

    “其实我对师父你做的爬虫很有兴趣。但是听说会经常和网站发生对抗?女孩子还是不要打打杀杀的好~”

    于是我让 P 酱负责对爬虫的原始数据进行清洗、整理并做简单的分析。

    一种船新的数据储存方式

    “ P 酱,爬虫抓到的原始数据是存放在 MongoDB 里面的,你的 Python 还不错吧,你试一试用 Python 来读写 MongoDB 看看。”

    “ MongoDB 是什么呀?”

    “是一个和 MySQL 不太一样的数据库。”

    “ MySQL 我知道,MongoDB 和 MySQL 有什么不一样呢?”

    “我举个例子,当你要插入数据的时候,你需要做的,就是‘插入’。咳咳,你不要脸红,我是指你不需要写 SQL 语句、不需要建表、不需要提前定义字段。仅仅只需要一行代码就能够实现了。我这里给你写了一篇文档,讲到了 MongoDB 的增删改查,你试一试。数据库已经给你搭建好了,你直接连上去用吧”

    半天以后。

    “师父,我已经会使用 MongoDB 啦。”

    “你读爬虫的原始数据,主要涉及到的就是查询操作,为了巩固插入、修改和删除的操作,再给你一个小任务吧。试一试写一个人员管理系统吧。”

    既然有关系,就整整齐齐放在一起看吧

    “ P 酱,你看起来很高兴的样子啊。”

    “因为我觉得 MongoDB 比起 MySQL 太简单了啊~”

    “你确定?那我看看你怎么对整行数据去重的?”

    “师父,我知道 distinct 关键字可以对一个字段去重。但是整行数据我是读出来用 Python 来去重的。”

    “这个时候你就要用到 MongoDB 的聚合查询了。文档已经给你写好了,拿去看吧。”

    “还有还有,这里你把店铺信息和菜单信息放在了两个集合里面,我怎么样才能把他们联表查询出来呢?”

    “联表查询是 MySQL 里面的操作,在 MongoDB 里面,没有表,只有集合,所以叫做联集合查询更恰当一些。这也是要用到聚合查询,也在这个文档里面了。”

    再给你一个玩具吧。

    “ P 酱,之前让你做的爬虫数据监控系统怎么样了?”

    “功能已经做好了,但是有一个地方查询起来特别慢。我已经加过索引了,但还是很慢。怀疑是同时联了四个集合的数据造成的。”

    “这边的数据实际上每小时才更新一次,你没有必要每次刷新页面都去查询 MongoDB 的。我觉得是时候让你用一下 Redis 做缓存了。”

    “ Redis 就是那个内存数据库吗?我知道我知道。”

    “给你写了一份文档,包含 Redis 里面的各种数据类型和使用方式。你试一试把 Redis 和 MongoDB 结合起来看看能不能提高速度。”

    你怎么擅自加功能啊!

    “ P 酱,你怎么在爬虫监控系统的网页上加了一个广播窗口?”

    “呀,被师父发现了。因为我想到同一个爬虫可能会被几个人监控,所以就用 Redis 的发布订阅功能做出来了这个广播的功能。一旦爬虫状态发生改变,所有人都能收到推送。”

    “既然你这么闲,那不如加上账号登录功能,把权限验证也做上去?不同的人只能看到自己负责的爬虫。顺便你可以试一试用 Redis 实现……”

    “实现布隆过滤器和 Session 管理是吗?”

    “你怎么知道我要说什么?”

    “因为我早上看到你在文档上面更新了布隆过滤器和 Session 管理相关的内容啊~”

    红色的锁?

    “师父师父,你知道什么是 RedLock 吗?”

    “你学得这么快?都知道 RedLock 了? RedLock 是 Redis 官方给出的分布式锁的算法。已经有很多编程语言实现它了。”

    “原来 RedLock 只是一个算法啊……”

    为什么我学的这么快呢?

    “师父师父,我觉得很奇怪啊,为什么 MongoDB 和 Redis 我学得这么快呢?难道是因为他们本来就简单?还是因为我太聪明了?”

    “为什么你不说是因为你师父教的好呢?“

    “因为这是事实啊~不用我说出来~”

    “咳咳,实际上是因为两个原因。一是你一直通过项目驱动来学习,先有需求,然后再去学习实现这个需求所要涉及到的技能。所以你知道你学的东西能用来干什么,自然就能学得快……”

    “那第二个原因是什么呢?”

    “第二个原因,我先问你一个问题,你会搭建 Redis 集群吗?会搭建 MongoDB 集群吗?知道什么叫做哨兵吗?你知道如何优化 MongoDB 的启动参数吗?”

    “这…………好像都不知道额…………”

    “因为你的角色是数据工程师,不是数据库工程师,所以数据库搭建、底层优化这些内容我都给你跳过了。”

    “这些听起来都很重要啊,师父你会教我吗?”

    “你想经常值夜班吗?想半夜 3 点被人打电话叫起来修数据库吗?认清自己的定位啊,数据库工程师的技能当然很重要,但你是要成为数据工程师的人,技能树应该点在合适的方向。”

    后记

    后来,P 酱成了别人的女朋友。

    幸好我还有左手和右手,于是我把我给 P 酱总结的文档编撰成了《左手 MongoDB,右手 Redis ——从入门到商业实战》这本书。本书现在已经在京东、亚马逊、淘宝上架。

    这本书的定位是 MongoDB 和 Redis 的应用,所以有意弱化了数据库的搭建、维护和底层优化。所以本书可能不适合数据库工程师。

    希望本书能够给那些一直想掌握 MongoDB、Redis,但是又不知道从何处下手的读者,提供一个学习的方向。

    福利时间

    感谢你读到了这一行,希望我这篇蹩脚的软文没有让你觉得讨厌。新书上架,回馈 V 友。我将会从所有留言的 V 友中选中 6 人,一人赠送一本《左手 MongoDB,右手 Redis ——从入门到商业实战》。

    按照惯例,选人的方式如下:

    1. 2019 年 2 月 26 日早晨 10 点,我会打开网易财经查询 2019 年 2 月 25 日的网易收盘价。
    2. 网易收盘价转成字符串分别加上『 P 』、『 y 』、『 t 』、『 h 』、『 o 』、『 n 』获得 6 个字符串。例如『 2,806.81P 』、『 2,806.81y 』等等
    3. 通过 Python 自带的 hashlib 中的 sha256 算法,计算这 6 个字符串的哈希值。
    4. 哈希值转换为十进制以后除以截至 2019 年 2 月 26 日 10:00 的总楼层数,获得 6 个余数
    5. 6 个余数对应的楼层数将会获得赠书。
    6. 如果同一个人中奖两次,第二次自动顺延给下一层楼。
    7. 顺丰包邮(港澳台、新疆西藏除外)

    抽奖用到的数据,如下图红框框住的这一列。

    Supplement 1  ·  Feb 23, 2019
    Supplement 2  ·  Feb 26, 2019

    @tianrandai @ouyangpiao @abellee000 @houzhimeng @imNull @chotow

    恭喜以上同学中奖,请使用 base64 编码自己的邮箱回复到本帖并 @我。我会使用 Y29udGFjdEBraW5nbmFtZS5pbmZvCg== 对应的邮箱给各位发送邮件确认领奖事宜。

    抽奖代码:

    238 replies  •  2019-03-12 09:39:50 +08:00
    1  2  3  
    ❮ ❯
    crystom
    crystom
    Feb 23, 2019
    101
    标题怎么好像换了
    itskingname
    itskingname
    OP
    Feb 23, 2019
    102
    @crystom V 站可不支持换标题的功能啊
    itskingname
    itskingname
    OP
    Feb 23, 2019
    103
    @ebony0319 千万不要去 B 站搜索这个代码。
    xhemm
    xhemm
    Feb 23, 2019 via iPhone
    104
    6666
    mingyun
    mingyun
    Feb 23, 2019
    105
    排队
    Shynoob
    Shynoob
    Feb 23, 2019
    106
    去搜完 av 号的我回来了
    ranleng
    ranleng
    Feb 23, 2019 via Android❤️1
    107
    文案厉害。
    itskingname
    itskingname
    OP
    Feb 23, 2019
    108
    @Shynoob 什么想法。
    i0error
    i0error
    Feb 23, 2019
    109
    分母。
    dyxang
    dyxang
    Feb 23, 2019 via Android
    110
    @itskingname 这个公仔太真实了,若不是笔套之类的我还以为那个洞是削笔刀开的孔
    Tvulin
    Tvulin
    Feb 23, 2019 via iPhone
    111
    分母~
    iamshang
    iamshang
    Feb 23, 2019 via Android
    112
    加个分母😁
    B1ock
    B1ock
    Feb 23, 2019
    113
    分母 qwq
    itskingname
    itskingname
    OP
    Feb 23, 2019 via iPhone
    114
    @dyxang 那是黑色的球,不是洞。
    liuxingbaoyu
    liuxingbaoyu
    Feb 23, 2019
    115
    @itskingname 妹子跑了,差评!
    green15
    green15
    Feb 23, 2019 via iPhone
    116
    分母吧
    ialva
    ialva
    Feb 23, 2019 via Android
    117
    666
    hzw94
    hzw94
    Feb 23, 2019
    118
    刚刚吃饱饭就来成为一个有自知之明的分母了.
    lostspirit0
    lostspirit0
    Feb 23, 2019 via iPhone
    119
    留名
    slogon
    slogon
    Feb 23, 2019
    120
    支持
    reticentfat
    reticentfat
    Feb 23, 2019
    121
    分母
    onlyonen
    onlyonen
    Feb 23, 2019
    122
    来凑个数
    itskingname
    itskingname
    OP
    Feb 23, 2019 via iPhone
    123
    @liuxingbaoyu 不用担心,都在计划中
    sixm
    sixm
    Feb 23, 2019
    124
    凑个分母
    input2output
    input2output
    Feb 23, 2019
    125
    分母
    xfcy
    xfcy
    Feb 23, 2019 via Android
    126
    好奇,想要书ヽ(*´з`*)ノ
    frankyxu
    frankyxu
    Feb 23, 2019
    127
    凑个分子
    Donate
    Donate
    Feb 23, 2019
    128
    分。。。分母
    Les1ie
    Les1ie
    Feb 23, 2019
    129
    计算楼层的方式有点意思耶
    web88518
    web88518
    Feb 23, 2019 via Android
    130
    先看看书学习学习
    Wa1k3r
    Wa1k3r
    Feb 23, 2019 via iPhone
    131
    拉低中奖率
    zerozz
    zerozz
    Feb 23, 2019
    132
    分子来了
    lekai63
    lekai63
    Feb 23, 2019 via iPhone
    133
    楼主给力
    mongodb 加油
    viko16
    viko16
    Feb 23, 2019 via Android
    134
    突然有点喜欢这种软文风格…😂
    eryuan
    eryuan
    Feb 23, 2019
    135
    好,好赞!
    itskingname
    itskingname
    OP
    Feb 23, 2019 via iPhone
    136
    @viko16 我另一篇也是这个风格,看 append
    abellee000
    abellee000
    Feb 23, 2019 via Android
    137
    我认真的去碧站搜了下 av170001 …
    5qwang
    5qwang
    Feb 23, 2019 via iPhone
    138
    凑个分子
    itskingname
    itskingname
    OP
    Feb 23, 2019 via iPhone
    139
    @abellee000 什么感觉
    lawler
    lawler
    Feb 23, 2019
    140
    管他呢,万一中了呢
    x97bgt
    x97bgt
    Feb 23, 2019
    141
    我还以为是真妹子....拉低中奖率
    liuxingbaoyu
    liuxingbaoyu
    Feb 23, 2019
    142
    @itskingname 抽奖送妹子还差不多
    blackstarry
    blackstarry
    Feb 23, 2019 via Android
    143
    分母
    kkkhs
    kkkhs
    Feb 23, 2019 via Android
    144
    分母
    fuxinya
    fuxinya
    Feb 24, 2019 via Android
    145
    最近在学习 Redis
    wenning
    wenning
    Feb 24, 2019 via Android
    146
    分母+1
    quericy
    quericy
    Feb 24, 2019
    147
    170001 一打开就感觉不妙了
    ooTwToo
    ooTwToo
    Feb 24, 2019 via Android
    148
    odk
    chu1337
    chu1337
    Feb 24, 2019
    149
    计算方式 cool
    liu19931020
    liu19931020
    Feb 24, 2019
    150
    蹭蹭
    aristotll
    aristotll
    Feb 24, 2019
    151
    plus one
    lqzhgood
    lqzhgood
    Feb 24, 2019
    152
    这个妹子有点快。。
    ouyangpiao
    ouyangpiao
    Feb 24, 2019
    153
    我早就记住那个 av 了
    kang666
    kang666
    Feb 24, 2019 via Android
    154
    牛牛逼了老铁
    hdjs5264
    hdjs5264
    Feb 24, 2019
    155
    分母
    llpy
    llpy
    Feb 24, 2019
    156
    666
    nervdy
    nervdy
    Feb 24, 2019
    157
    要不写个 P 酱的后续
    claymore94
    claymore94
    Feb 24, 2019
    158
    分母+1
    AngryPanda
    AngryPanda
    Feb 24, 2019 via Android
    159
    想起了一本书: 大话数据结构。

    希望楼主的作品也能成为经典吧。
    itskingname
    itskingname
    OP
    Feb 24, 2019 via iPhone
    160
    @AngryPanda 感谢
    itskingname
    itskingname
    OP
    Feb 24, 2019 via iPhone
    161
    @nervdy 保密
    cctv6
    cctv6
    Feb 24, 2019 via iPhone
    162
    随缘加一个分母
    mutou99
    mutou99
    Feb 24, 2019
    163
    有点意思哟
    testlc
    testlc
    Feb 24, 2019 via iPhone
    164
    文笔有点意思
    cwcauc
    cwcauc
    Feb 24, 2019 via iPhone
    165
    分母,数据库教科书还没看。。
    IntFloat
    IntFloat
    Feb 24, 2019
    166
    这小故事小的可以啊
    flyzero
    flyzero
    Feb 24, 2019 via Android
    167
    万一中奖呢
    itskingname
    itskingname
    OP
    Feb 24, 2019 via iPhone
    168
    @IntFloat 还有大故事
    itskingname
    itskingname
    OP
    Feb 24, 2019 via iPhone
    169
    @cwcauc 正好通过目录对比一下,看看我的书和教科书哪一本更适合你。
    running17
    running17
    Feb 24, 2019 via Android
    170
    666
    tianrandai
    tianrandai
    Feb 24, 2019
    171
    去 b 站搜了 av 号的我回来了哈哈哈哈
    itskingname
    itskingname
    OP
    Feb 24, 2019 via iPhone
    172
    @tianrandai 什么感受
    kingcc
    kingcc
    Feb 24, 2019
    173
    抽奖方式越来越有趣了
    itskingname
    itskingname
    OP
    Feb 24, 2019 via iPhone
    174
    @kingcc 第二次用这种方式了
    Applenice
    Applenice
    Feb 24, 2019
    175
    那个 av 号有毒
    trying
    trying
    Feb 24, 2019 via iPhone
    176
    分母
    itskingname
    itskingname
    OP
    Feb 24, 2019
    177
    @Applenice 彩蛋
    jimages
    jimages
    Feb 24, 2019
    178
    我来做分子了
    AppxLite
    AppxLite
    Feb 24, 2019
    179
    分母
    itskingname
    itskingname
    OP
    Feb 24, 2019 via iPhone
    180
    @jimages 可以
    Rcnaec
    Rcnaec
    Feb 24, 2019
    181
    分母!
    cyrbuzz
    cyrbuzz
    PRO
    Feb 24, 2019
    182
    跟着我左手右手....
    leo00000
    leo00000
    Feb 24, 2019
    183
    分母!!
    byron
    byron
    Feb 24, 2019
    184
    很好
    itskingname
    itskingname
    OP
    Feb 24, 2019 via iPhone
    185
    @cyrbuzz 看慢动作学 NoSQL
    ethusdt
    ethusdt
    Feb 24, 2019 via iPhone
    186
    分母
    BruceYuan
    BruceYuan
    Feb 24, 2019 via Android
    187
    看完才意识到是广告
    uasier
    uasier
    Feb 24, 2019 via Android
    188
    。。。
    halfer53
    halfer53
    Feb 24, 2019
    189
    分母
    y9u9h1
    y9u9h1
    Feb 24, 2019 via Android
    190
    觉得是真的故事,不过是楼主不想泄露小徒弟隐私才诙谐的搞了个保加利亚妖王的链接而已
    itskingname
    itskingname
    OP
    Feb 24, 2019 via iPhone
    191
    @y9u9h1 哈哈哈
    itskingname
    itskingname
    OP
    Feb 24, 2019 via iPhone
    192
    @BruceYuan 不是广告
    xyzxiaoking
    xyzxiaoking
    Feb 24, 2019 via Android
    193
    这年头挑个分子都这么复杂了吗。。
    ID2333
    ID2333
    Feb 24, 2019
    194
    一看,就是充满哲学的大佬!
    kimibob
    kimibob
    Feb 24, 2019
    195
    有故事!
    itskingname
    itskingname
    OP
    Feb 24, 2019
    196
    @xyzxiaoking 要确保真正随机啊。
    itskingname
    itskingname
    OP
    Feb 24, 2019
    197
    @ID2333 绅士向。
    itskingname
    itskingname
    OP
    Feb 24, 2019
    198
    @kimibob 没有故事
    jsyzdej
    jsyzdej
    Feb 24, 2019 via Android
    199
    当我看到 av 号时我就直接跳到了后记
    itskingname
    itskingname
    OP
    Feb 24, 2019 via iPhone
    200
    @jsyzdej 那我精心写的东西你都没有看到
    1  2  3  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3928 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 217ms · UTC 09:40 · PVG 17:40 · LAX 01:40 · JFK 04:40
    ♥ Do have faith in what you're doing.