好奇那些背单词软件背后的数据库是如何组织关系的呢?

2021-01-09 15:06:33 +08:00
 Newyorkcity
所有单词和单词解释,例句什么的,可能都在一个表 A 中。

然后用户『甲』选择学习『四级英语』单词书,那么这个用户在学习过程中,显然软件要记录该用户下一次复习这个单词的日期,用户可能给这个单词添加的笔记。这些都放在另一个表 B 中?

然后用户『乙』,用户『丙』……都是放在这个表中?

那这个表应该有显式主键么?用 user_id 和 word_id 构成一个唯一组合索引?

那显然扩张到我有 10 万个用户,平均每个用户要 3 三千个单词,这就 3 亿条记录了啊,那表 B 不会爆炸吗?分表?
1865 次点击
所在节点    问与答
8 条回复
gavindexu
2021-01-09 17:37:32 +08:00
蹲一下大神的答复 (・_・;
aeo13
2021-01-09 17:38:31 +08:00
同蹲 (・_・;
matrix67
2021-01-09 17:40:05 +08:00
三千单词我感觉存本地啊。四级,六级,雅思,不都可以本地存一下。远端只要存 metadata 就行了啊
towser
2021-01-09 17:43:57 +08:00
单词软件数据边界很清晰,关系型数据库很容易按用户 ID 做分区。存 redis 就更简单了,一个用户一个 hash key 解决问题。
Jooooooooo
2021-01-09 17:49:14 +08:00
用缓存现算
qiayue
2021-01-09 17:55:05 +08:00
有 500 个单词的用户就是高质量用户了,更别说有 3000 个单词的用户。
一个高质量的用户价值 500 块,10 万个就值 5000 万,那时候什么机器买不起啊,性能不够,机器来凑。

从广告角度,背单词类 APP,买一个用户成本按照 20 块钱算(比实际低),高质量用户的比例假设 10%,那么一个高质量用户的成本就是 200 块钱。
10 万个高质量用户的市场营销费用是 2000 万。

你都花出去 2000 万了,更不用担心这个问题啊。
Newyorkcity
2021-01-09 18:01:41 +08:00
@qiayue 额,用户选择了一个四级的单词书,这个单词书里 3000 个单词就要为用户构建下次记背时间了吧,但用户可能转头就把这个 app 卸载了,这样就不是高质量用户了吧。
madingyu
2021-01-09 20:32:51 +08:00
前几年某 app 单词列表到 500 页之后点击就没反应了,投诉未果后转战 anki

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/743324

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX