
近期有一个项目,需要大量数据的高速存储。希望大家能提供一些思路。 要求: 1、数据的采集速度是 10ms 一次; 2、每次采集的数据大概有 4000 列,数据类型为双精度浮点。 我们现在使用的是 MySQL5.8,windows 平台。
1 lhx2008 2019-06-27 23:06:11 +08:00 via Android 4000 列,大概也不会查,主 key 几个单列几列,其他插一列文本就行。 另外,没有试过列数对 mysql 影响大不大,如果从索引角度来讲,影响是不大的 |
2 sun522198558 2019-06-27 23:15:05 +08:00 5.8 支持 json 的吧,不常用的字段可以用 json |
3 samwalt 2019-06-27 23:20:22 +08:00 一次采集到的数据有多少条? |
4 est 2019-06-27 23:22:31 +08:00 myisam 可破。 |
5 opengps 2019-06-28 00:09:50 +08:00 via Android 列这么多合适吗? |
6 misaka19000 2019-06-28 00:55:35 +08:00 via Android elasticsearch 非常适合高速写入的场景 |
7 shiny 2019-06-28 01:12:53 +08:00 可以补充下读取的需求。 |
8 MoHen9 2019-06-28 06:01:16 +08:00 via Android 数值型,时序数据库? |
9 polymerdg 2019-06-28 08:45:59 +08:00 myisam 很容易 |
10 feiyunruyue 2019-06-28 09:10:41 +08:00 听着适合时序数据库普罗米修斯( prometheus ),安装简单,我做的一个监控系统就是用这个,挺好用 |
![]() | 11 qilishasha 2019-06-28 09:18:09 +08:00 4K 列,如果行数一多,想想都头疼,我要提前下班休息一下 |
12 fkmc 2019-06-28 09:37:40 +08:00 时序数据库吧 不要为难 mysql 了 |
13 realpg PRO 就算你用 mysql,也扔了 windows 先 各种莫名其妙无解问题 |
14 realpg PRO 没打完就发出去了 就这数据量 单录入而论,只要你的磁盘写入性能够,只要不检索,单纯写入性能是没问题的。不要用各种 GUI client 做写入结果验证,select 返回结果会让你死掉的 更好的选择是扔了 mysql 换时序数据库 |
15 nooper 2019-06-28 10:04:27 +08:00 扔了 win。不扔不做。 |
16 lastpass 2019-06-28 10:07:49 +08:00 via Android 使用一种 mq 做个缓存吧。 比如加个 kafka 当中间件+缓存+备份。 防止你的数据库炸掉。 |
17 sarices 2019-06-28 10:09:33 +08:00 如果不是需要实时,可以放到缓存,异步写入 mysql |
18 realpg 2019-06-28 10:38:14 +08:00 @neroanelli 血泪经验告诉你 如果锁定了 windows,那就开个虚拟机吧 要么就直接开个 sql server 当然这是你不用专门为你这个场景设计的时序数据库的前提下 这并不是运维天成鄙视 windows windows 的 mysql 确实会有各种奇奇怪怪的性能问题,别说解决,连发现真正的问题在哪都做不到 而且各种偶然各种莫名其妙 而且这是我们有专业的 windows 高级工程师+MYSQL 工程师的运维团队排查的情况下 显然一般用户并没有这种分析实力更显得莫名其妙 |
19 neroanelli OP @realpg 恩,谢谢。我也想用 Linux,但是服务器还有其他 windows 程序需要跑。我打算用时序数据库,influxdb 或 elasticsearch,现在正在测试。 MySQL 测试情况很不理想,列太多了。。。 |
20 CallMeReznov 2019-06-28 11:18:13 +08:00 这种情况肯定用时序库,influxdb 有 WINDOWS 单机版 绿色运行一键启动,支持 API 里打 SQL 必须要用 MYSQL 的话那就用 JSON 吧. |
21 ziding 2019-06-28 11:19:44 +08:00 @neroanelli 你这个需求,上 timescaledb,分析起来方便 |
22 leorealman 2019-06-28 11:40:50 +08:00 建议上时序数据库推荐 InfluxDB,10ms 写一次数据点,1 小时就是 360000 |
23 shawshi 2019-06-28 12:11:28 +08:00 kafka + elasticsearch |
24 iexplorer 2019-06-28 12:34:57 +08:00 上消息队列 |
25 Asice 2019-06-28 12:53:37 +08:00 4000 列,这表设计就有问题 插入没有马上查询的需求,直接队列就行了 |
26 dt2vba 2019-06-28 13:18:23 +08:00 via Android 我用 goroutine 和 go-nsq,一个小时轻松插入百万条数据。很稳定。当然表的字段只有 11 个。 |
27 swulling 2019-06-28 13:47:43 +08:00 via iPhone 这个用时序数据库 |
28 shiny 2019-06-28 16:41:33 +08:00 反正只运行几个小时,也不需要实时读取,只需要后期导出。所以只要保证写入速度就可以。 硬件上确定下写入 io 不是瓶颈就无问题,时序数据库对这种场景优化较好。 如果真的无法突破 io 瓶颈,还有别的办法,简单的就是写入内存,再慢慢刷入 db ;复杂的可以是多台机器承担写入压力。 |