虚心求教,数据量上亿的爬虫数据用什么该用什么数据库呢

2024-05-15 10:51:43 +08:00
 morost

本来数据量小的时候用的就是 MySQL ,后来爬虫做过升级后,无论是广度和深度都有了改进,数据量慢慢已经来到了亿级,查询越来越慢,只能一直加索引来加快查询速度,但是这不是长久之计,准备从数据库上改善这个问题。

希望更换一个对于大数据量支持友好的数据库,奈何本人这方面了解的确实不多,希望各位 v 友给点建议。

11460 次点击
所在节点    程序员
77 条回复
smallparking
2024-05-15 15:01:58 +08:00
greenplum 分布式数据库了解一下
user919lx
2024-05-15 15:10:39 +08:00
我在数据公司待过,有专门的爬虫团队和数据开发团队,我们用的方案,最早是 Cassandra ,然后是 TiDB ,最后换成了 HBASE 。
Cassandra 不说了,只是早期过渡方案。
TiDB 的好处是我们和 PingCAP 有交情,技术支持比较到位,而且 MySQL 协议处理方便。缺点就是需要每天增量同步到 Hadoop 集群。
HBASE 则是因为我们后来数据量上来了,用 HBASE 方便在 Hadoop 集群框架下进行处理。

如果你有很多基于 SQL 的分析任务已经在运行了,选择 TiDB 是最好的,迁移成本极低。
如果你有 Hadoop 集群了,MySQL 只用于临时存储爬虫,那可以换成 HBase
user919lx
2024-05-15 15:15:52 +08:00
对了,如果十分追求分析性能,Clickhouse 是正确的选择。但是我们一般把 Clickhouse 用于最后使用的终端,与爬虫数据存储是隔离开的,我们的链路大致上是:爬虫原始数据存储( HBase 或 TiDB) -> 数仓处理和存储(Hadoop 集群) -> 供各应用使用的数据集市(Clickhouse),就算你不使用 Hadoop 来处理数据,读写分离也是很重要的。混在一起的话读写都会被拖慢
wupher
2024-05-15 15:26:43 +08:00
MySQL 单表上亿也不差的。

如果换 No SQL ,比如 MongoDB 上亿走个 sharding / replica 也没啥问题。

关键还是要看需要怎么新增,怎么查。
feiniu
2024-05-15 15:32:16 +08:00
之前公司(爬虫公司),数据也是放在 Hbase 里面的

流程和 @user919x 类似的
chenfang
2024-05-15 15:35:47 +08:00
我提一个 Doris 分布式数据库,之前公司用过 tidb 但是跟 mysql 还是有比较大的差距,迁移不过去....

后来用了 Doris,总的来说还行,1T 数据量的表也能嗖嗖的出结果

不过分布式数据库,重在分布式 成本也会上涨,这个事情也要考虑
rockxsj
2024-05-15 15:42:11 +08:00
redis
iyaozhen
2024-05-15 15:54:53 +08:00
得先看看公司预算

tidb 那玩意搭一个最小集群,都不是一个小公司能承受得了的
janus77
2024-05-15 15:59:40 +08:00
先做常规优化吧,索引、分库分表什么的,然后不知道你的业务细节,是否可以加 cache 层,冷热数据分离等方案,亿级别的话努努力是没必要换数据库的
fengfisher3
2024-05-15 16:01:24 +08:00
@yh7gdiaYW
@Jinnrry
请问你们的 starrocks 的版本是什么,是 2.x 还是 3.x ,我们的 3.1.x 我想升级一下,但不知道哪个版本更稳定,更好。
rust
2024-05-15 16:13:36 +08:00
我们以前爬过某音的视频 meta 数据,大概 6 亿多,放在 MongoDB 里边,跑数据库的机器的 RAM 大概 1T, 然后索引就有 700 多 G, 硬盘占用大概 7.2T 左右,固态阵列. 秒查~
securityCoding
2024-05-15 16:22:17 +08:00
clichhouse 吧 ,不过使用场景不同直接一份 kafka 分发出去分别落库吧
wenxueywx
2024-05-15 17:16:30 +08:00
现在 mysql 使用的磁盘都说 ssd ,亿级数据,只要使用姿势正确完全没有问题
建议先优化原 db
前面也有老哥说了,不清楚你的数据结构,使用场景是这些确实不好推荐
likeman
2024-05-15 17:27:45 +08:00
@morost 如果一定要是一张表,可以看看 postgres 的 table partition ,本质是一个大表,但是可以根据 partition 规则切分为若干个小表(显示还是一个大表),这样索引数据也小了,插入查询也快得多
phrack
2024-05-15 17:33:32 +08:00
这点数据量如果不是数据结构很复杂的,mysql 不是瓶颈
perpetually
2024-05-15 18:05:20 +08:00
starrocks

之前公司 10 几亿的咨询数据都是放在这里面,查询速度还可以
zhaopy4721
2024-05-15 18:11:01 +08:00
你从 mysql 迁移考虑一下 doris 吧
hangszhang
2024-05-15 19:17:30 +08:00
我就好奇,你们这种说几亿条数据,mysql 也不慢的,是只用主键索引检索数据么?
Jinnrry
2024-05-15 20:05:00 +08:00
@fengfisher3 我们是 2.5.12 ,但是我们有自己的 SR 研发团队和运维团队,我只管存数据,查数据就行。其他的直接提工单摇人就行
changdy
2024-05-15 21:01:02 +08:00
嘲讽一波 ...
楼上大部分上来就让楼主换数据库的 对数据库 对大数据 完全是一点都不了解..

建议 op 好好了解下瓶颈在哪里 .表设计表结构是不是有问题.. 查询方式是不是有问题.

这些才是问题的解决思路, 而不是上来就换个数据库 ..

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

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

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

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

© 2021 V2EX