个人经历如何存储比较好呢?怎么设计数据表才便于交叉比对?

2022-04-07 17:17:58 +08:00
 sjmcefc2

1982.09—1984.07 安徽省气象学校气象学专业学生

类似这样的数据如何存储呢

1567 次点击
所在节点    程序员
9 条回复
Xhack
2022-04-07 17:29:30 +08:00
开始时间 结束时间 学校 专业
shenqi
2022-04-07 17:35:29 +08:00
基础做法
table 用户 {name, id}
table 学校 {name, id}
table 专业 {id, name} // 一般这是通用专业
table 经历 {start_unix,end_unix,学校_id,专业_id,用户_id}

经历数据量大了之后的分表做法:
table 经历_1982 年 {start,end,学校_id,专业_id,用户_id}
table 经历_1984 年 {start,end,学校_id,专业_id,用户_id}
table 经历_xxxx 年 {start,end,学校_id,专业_id,用户_id}

用户数据量大了之后,难搞。
学校数量,再大也不过百万。
专业也是,数量不多。
sjmcefc2
2022-04-07 22:10:47 +08:00
@shenqi 有没有比较系统的案例可以参考呢?
sjmcefc2
2022-04-07 22:11:40 +08:00
想把简历做成数据库来存储
LeegoYih
2022-04-08 09:15:07 +08:00
适合非结构化的数据库,MongoDB 之类的
joApioVVx4M4X6Rf
2022-04-08 09:58:10 +08:00
存 json 字符串不行吗
shanghai1943
2022-04-08 10:33:31 +08:00
得看后期有怎样的需求。如果后期还是不断增加字段而且没有关联统计之类的需求的话,可以试试 MongoDB ,如果有很强的关系查询统计,那优选 MySQL 了
Akiya
2022-04-08 11:11:40 +08:00
图数据库,一个人是一个点,一个省是一个点,一个学校是一个点,一个专业也是一个点,关联关系用边来表示
参考: https://vonng.github.io/ddia/#/ch2?id=%e5%9b%be%e6%95%b0%e6%8d%ae%e6%a8%a1%e5%9e%8b
zyx199199
2022-04-08 20:15:41 +08:00
我上份工作是做商业化的简历自动解析的。我们当时使用的是 MongoDB 数据库存储,主要是考虑到解析的字段经常增加修改

但是我们的存储除本身没有太考虑复杂查询的优化

当时的存储格式大体是

[
{'学校': '北京大学(珠海分校)', // 简历中的原始名称
'标准校名': ''北京大学', // 在解析学校的同时,判断学校的标准名称
'起始时间': '2009.9',
'结束时间': '2013.9',
'专业': '气象学'},
]

数组中的一个 字典( dict )就是一段经历,在存储到数据库前按照时间排序,第一个字典对应第一段经历,以此类推

如果需要实现复杂的高效查询,可以先试试这样存储后的查询效率。如果效率太低,可以考虑在 MongoDB 存储基础数据之外再增加一个 Neo4j 的图数据库,用于存储数据之间的关系

如果不是做实时的复杂查询,而是已经确定好了要查询的内容,至少几十万条数据的情况下,应该还是不太需要 Neo4j 的。分步做好预处理,然后将预处理好的数据用 pandas 加载,一个正常的笔记本就能做到比较快的各种统计查询了

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

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

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

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

© 2021 V2EX