近期有一个项目,需要大量数据的高速存储。希望大家能提供一些思路。 要求: 1、数据的采集速度是 10ms 一次; 2、每次采集的数据大概有 4000 列,数据类型为双精度浮点。 我们现在使用的是 MySQL5.8,windows 平台。
1
lhx2008 2019-06-27 23:06:11 +08:00 via Android 1
4000 列,大概也不会查,主 key 几个单列几列,其他插一列文本就行。
另外,没有试过列数对 mysql 影响大不大,如果从索引角度来讲,影响是不大的 |
2
sun522198558 2019-06-27 23:15:05 +08:00 1
5.8 支持 json 的吧,不常用的字段可以用 json
|
3
samwalt 2019-06-27 23:20:22 +08:00 1
一次采集到的数据有多少条?
|
4
est 2019-06-27 23:22:31 +08:00 1
myisam 可破。
|
5
opengps 2019-06-28 00:09:50 +08:00 via Android 1
列这么多合适吗?
|
6
misaka19000 2019-06-28 00:55:35 +08:00 via Android 1
elasticsearch 非常适合高速写入的场景
|
7
shiny 2019-06-28 01:12:53 +08:00 1
可以补充下读取的需求。
|
8
MoHen9 2019-06-28 06:01:16 +08:00 via Android 1
数值型,时序数据库?
|
9
polymerdg 2019-06-28 08:45:59 +08:00 1
myisam 很容易
|
10
feiyunruyue 2019-06-28 09:10:41 +08:00 1
听着适合时序数据库普罗米修斯( prometheus ),安装简单,我做的一个监控系统就是用这个,挺好用
|
11
qilishasha 2019-06-28 09:18:09 +08:00
4K 列,如果行数一多,想想都头疼,我要提前下班休息一下
|
12
wccc 2019-06-28 09:37:40 +08:00 2
时序数据库吧 不要为难 mysql 了
|
13
realpg 2019-06-28 09:41:12 +08:00
就算你用 mysql,也扔了 windows 先
各种莫名其妙无解问题 |
14
realpg 2019-06-28 09:45:36 +08:00 1
没打完就发出去了
就这数据量 单录入而论,只要你的磁盘写入性能够,只要不检索,单纯写入性能是没问题的。不要用各种 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 1
这种情况肯定用时序库,influxdb 有 WINDOWS 单机版 绿色运行一键启动,支持 API 里打 SQL
必须要用 MYSQL 的话那就用 JSON 吧. |
21
ziding 2019-06-28 11:19:44 +08:00 1
@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 ;复杂的可以是多台机器承担写入压力。 |