这是 pubmed 2023 年的 baseline 数据库(一堆 gz 格式的 XML 文件),我全部下载到本地后,光 gz 文件合起来就超过 40G 大小了,全部解压后估计要 500G 左右。我正式工作中一直是做前端的,这么大的数据量第一次碰到。
请问如果我想做搜索和统计分析,应该如何处理呢?这种需要另外再转移到特定数据库里吗还是直接用文件系统到数据库(并发量不大,以读取为主,数据一年更新一次)。
读取数据是读取完一部分之后清掉内存占用,接着读取下一部分的内容吗(内存肯定不够加载所有内容,假定只有 8G 内存)。
有没有建议/思路可以参考。提前谢谢各位大佬。
——————
追加更新:这种服务,购买服务器配置最低需要什么样才能正常使用,是不是要买那些 1T 硬盘的。
1
TheCure 2023-08-27 15:15:58 +08:00
直接上 elasticsearch, 才 40G 有点大材小用. 直接 postgres 存问题也不大, 看你想怎么用了.
不过我比较好奇拿 pubmed 数据来做什么, 可以交流下 很感兴趣 |
2
TheCure 2023-08-27 15:16:24 +08:00
ps: 500G postgres 只要配置够也问题不大
|
3
cleveryun OP @TheCure 自己以前是学药的,前段时间有个在日本做生物药这一块的销售的同学和我沟通说想做个基于 pubmed 的检索、统计分析站。加上老婆是搞生物医药研发的,做了自己也能用就答应有偿给做一个了。他主要是想基于这个服务,寻找一些目标用户。
|
4
cleveryun OP @TheCure 除了直接检索,就是比如相关通路、主流实验方法、相关基因、按引用关系来的重要作者/文献、相关文献的影响因子逐年变化趋势这类。
|
5
dayeye2006199 2023-08-27 15:32:56 +08:00
40G 放 PG 里面,可能要做一下格式转换,XML 关系型数据库不认的,至少要 flatten 成表的格式。40G 的数据,加工和入库的方式,如你所说,流式处理,处理掉一批之后,再读入下一批。
入库之后,取决于你想怎么检索,假设你要按照标题,摘要检索这类的,就对相应的字段简历全文检索 https://www.postgresql.org/docs/current/textsearch.html 如果要按照时间之类的检索,记得也要对相应的字段加上索引。 再复杂点,要做语义检索之类的,记得安装 pgvector 这种插件,对相应的字段调用 embedding 模型之后,存入 vector 类型。 我也觉得 elastic 有点太复杂,pg 可能已经足够你使用了 |
6
coffeesun 2023-08-27 18:37:11 +08:00
@cleveryun #4 这个数据是只有摘要的吧,用这个训练 AI ,也可以对研究有所帮助,之前的相互关联,新的领域方法等。如果有更多的全文数据会更好些。
|
7
levelworm 2023-08-27 20:38:38 +08:00 via Android
sqlite 就可以吧,500GB 不算很大啊。不过还是不清楚你的需求是什么,说的有些广泛了。
|
8
cleveryun OP @dayeye2006199 感谢细致回复。
@coffeesun 对,是摘要。 @levelworm 后端部分之前自己弄的都是些小东西,没遇到过这么大的,看了各位的回复,感觉这个好像也不算大。格局小了,哈哈。 |
9
sdshiyan2005 2023-08-27 21:13:52 +08:00
要是分析目标明确,建议逐个分析 xml 提取有效字段,然后只存储有用的分析部分。费劲把所有信息入库平常用不着也是浪费
|
10
Jirajine 2023-08-27 21:18:28 +08:00 via Android
试试 meilisearch ,比 es 简单轻量。
云服务器的话可以不用硬盘,单独购买托管的数据库服务就行。 |
11
sickick 2023-08-28 08:35:52 +08:00
|
12
Tanbobby 2023-08-28 21:06:53 +08:00 via Android
Pubmed 是有 API 的,直接调用即可分析。
|
13
saveai 2023-12-22 15:00:33 +08:00
op ,请问你这个后来怎么做的呢?我们公司打算做个影响因子,排名相关的功能,不知道怎么入手。
类似: https://www.storkapp.me/marketing/templates/Stork1/big.php |