日增 3 亿数据如何存储?

2022-04-06 15:34:45 +08:00
 chi1st
如题,目前有日增大概 3 亿条的网络会话数据,写多读少,目前的需求是保存七天数据供用户查询(没有太复杂的查询条件)
公司内部可供选择的数据库有 MySQL ,MongoDB, TiDB

以上 3 种该如何选型?或者有无其他方案?
2260 次点击
所在节点    问与答
13 条回复
D0n9
2022-04-06 15:45:33 +08:00
如果用上述三种库,查询不方便,库表设计也不友好

最方便的使用 elasticsearch + kibana ,基本开箱即用
CodeCodeStudy
2022-04-06 15:51:00 +08:00
用时序数据库 InfluxDB ,适合大量数据写入,不更新数据,进行单表查询,定期删除数据的场合
SbloodyS
2022-04-06 15:52:02 +08:00
扔数仓里就好
CodeCodeStudy
2022-04-06 15:53:37 +08:00
InfluxDB 的 Continuous Queries 可以定时汇总数据到一个表里,Retention Policies 可以定期删除旧数据,保留近期数据
chi1st
2022-04-06 16:04:49 +08:00
@D0n9 如果只存一天数据,以目前的需求来看 MySQL 问题也不大,ES 也在考虑范围内,确实开箱即用,不过需要自己去运维

@CodeCodeStudy 据我了解时序数据库的确很适合目前的需求,不过我没玩过且公司没有对应的服务,运维成本也就增加了
CodeCodeStudy
2022-04-06 17:13:21 +08:00
@chi1st 运维成本并没增加多少,InfluxDB 可以自动汇总数据,自动删除旧数据,增加的是开发的时间
chi1st
2022-04-06 17:40:56 +08:00
@CodeCodeStudy 都是新开发,开发成本差不多,公司内部有上面三种数据库的云服务,省心很多,目前准备先用 mongo 测下
gabon
2022-04-06 20:35:40 +08:00
clickhouse
Mithril
2022-04-06 21:39:56 +08:00
MongoDB 带这些数据没什么问题的。
首先要确定查询的场景,如果只是简单的连续区段按 id 搜索,你甚至都可以直接存文件。
如果需要做字符串的通配符或者分词检索,考虑使用 ES 。
更复杂的查询就得看你具体需求了。
但本质上是要确定你的需求和范围,不要为了基本没啥人用的功能增加成本,无论是技术成本,人员成本或是硬件成本都是如此。
如果一个功能你估计只有几个人每个月用几次,那最好的办法就是告诉它这功能坏掉了,没准以后哪天会修好。
netnr
2022-04-06 21:52:40 +08:00
SQLite 按小时存储
chi1st
2022-04-07 07:52:26 +08:00
@SbloodyS @gabon @netnr 感谢大家,目前准备用 MongoDB 了
chi1st
2022-04-07 07:59:31 +08:00
@Mithril 感谢,目前决定先使用 MongoDB ,这个功能领导挺看中的,发生网络异常时对异常定位还是有所帮助的,功能使用次数也许如你所说,但是我们是对公司层面提供私有云服务的,如果一个使用频次不高但领导很关注的功能使用时发现它坏了,这种也挺尴尬的。。。
mk98
2022-04-07 08:53:24 +08:00
掏钱的话国内有很多这种产品,比如日志易

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

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

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

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

© 2021 V2EX