每天新增8640w数据,怎么存储比较好

客户端每10秒产生一条数据(包含客户端的唯一ID/时间/业务数据),每个客户端每天生成8640条数据。
共10000个客户端,每天新增8640w条数据


数据示例:

client_id start_time finish_time video_id
1 2021-12-27 11:05:21 2021-12-27 11:05:31 11
2 2021-12-27 11:05:25 2021-12-27 11:05:35 11
2 2021-12-27 11:05:35 2021-12-27 11:05:45 12

后期查询需求

需要按客户端,指定时间范围查询,比如:

SELECT client_id,COUNT(video_id) FROM table WHERE video_id=11 start_time > 'xxxx' AND finish_time < 'xxx' GROUP BY client_id

也需要按业务数据查询,比如:

SELECT video_id, COUNT(client_id) FROM table WHERE  start_time > 'xxxx' AND finish_time < 'xxx' GROUP BY video_id

请问这种情况,数据应该怎么存储比较好?

本帖已被设为精华帖!
本帖由系统于 5个月前 自动加精
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 45

可以补充个数据结构出来。从现在的文字描述没办法理解你这个业务数据 指的是枚举字段还是一种数据结构。

7个月前 评论
张三 (楼主) 7个月前

TIDB是你的不二选择

7个月前 评论
张三 (楼主) 7个月前
kolin 7个月前
Sunn 7个月前

如果不需要修改或删除数据,可以考虑第三方日志服务

7个月前 评论
张三 (楼主) 7个月前
liaosp 7个月前

这个数据量有点大,可以考虑一下使用mongodb来存储日志类的数据,设置保存一段时间数据,之前的数据做一个或者多个统计表,然后定期删除已经做过统计表的数据,减少数据存储的量。

7个月前 评论
张三 (楼主) 7个月前
pi_phq 7个月前
她来听我的演唱会 (作者) 7个月前

hbase?

7个月前 评论
张三 (楼主) 7个月前

物联网行业? 使用mongodb吧 这种日志一般也只是查,甚至只是存档而已

7个月前 评论
张三 (楼主) 7个月前
她来听我的演唱会 7个月前
张三 (楼主) 7个月前

不知道楼主知道,时序性数据库不?这个是针对物联网海量数据设计的查询数据库。不过需要一定的学习难度。

7个月前 评论
张三 (楼主) 7个月前
fatrbaby

clickhouse

7个月前 评论
梦想星辰大海

楼主关注一下这个:www.taosdata.com/cn/ php的连接器是这个:github.com/Yurunsoft/php-tdengine

7个月前 评论
张三 (楼主) 7个月前
playmaker

pgsql 也有时序功能 或者 了解一下 ELK

7个月前 评论

es 或者阿里云sls 腾讯云日志服务

7个月前 评论
游离不2

怎么存不是问题,怎么用才是你的问题

7个月前 评论

只存不改的话,可以考虑下MySQL的Archive存储引擎

不过最终还是要看你要拿这些数据做什么

7个月前 评论

elk或者mongodb

7个月前 评论
陈先生

按照你这个数据量,不要使用关系型数据库,使用时序数据库吧。类似数据上报一样了

7个月前 评论

1、楼上说时序性数据库可以,你可以试试 2、目前我自己在从事广告数据开发方向。这种场景下,如果数据只增不减,可以考虑直接采用 OLAP 列式的数据库,这点数据量还是很轻松的。楼上举得 clickhouse 就是个不错的选择,擅长做日志等明细数据

7个月前 评论
张三 (楼主) 7个月前

单客户端一天8640条数据,目前1w台客户端,一天8640*1w=8640w条数据,一年大概315亿条数据。

TDengine的超级表感觉很不错,可以按客户端存到子表里,但是TDengine的查询功能好像不如clickhouse支持的好。

但是不知道clickhouse单表(大概10列,都是id,datetime类型)存几百亿数据数据会不会有啥问题。

昨天自己的电脑测试了下clickhouse单表三列(id UInt32, name String, created Datetime)mergeTree引擎,10亿数据查询速度挺快(机器配置 AMD 2400G / 16G DDR4 3200 / 海康c2000pro NVME硬盘)

@Rytia @laravelcc @fatrbaby @梦想星辰大海

7个月前 评论
张三 (作者) (楼主) 7个月前
nion 7个月前
梦想星辰大海 7个月前

看了 TDengine 官网贴出的性能对比图,为啥 说性能远超 clickhouse ?

7个月前 评论

有很多人推荐clickhouse类分析数据库,此类数据库适合多写少读,我认为这个场景作为多写多读的场景,更适合使用MongoDB分片实例,再根据读场景进行分表,比如说取某个视频下的开始结束时间,就根据视频id分表,然后记录开始,结束时间.用户id,极大减少每个表的数据量,根据用户id做一个索引,并且不用担心video_id增长带来的表过大问题,另外可以考虑删除过期数据,或者定期搬运数据到冷数据表

6个月前 评论
张三 (楼主) 6个月前
梦想星辰大海

试试用bitmap存储你的数据,比如搜索条件作为key,业务数据作为value,这个value是个bitmap。 这样做的前提是你的value部分的值必须是int

6个月前 评论
张三 (楼主) 6个月前
SanXiao

一天百万数据 目前再用 influxdb

6个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!