Sql和NoSql
SQL使用:如果有大量的更新操作,一定要使用事务,效率高。大数据情况下,要对表字段建索引。比nosql好的地方:有事务,能回滚。
SQL遇到的瓶颈:水平扩展
场景:不同设备(水泵,流量计),不同属性的数据采集,统计分析
水泵表(泵id,组id,泵状态,选择开关,故障状态)
流量计表(泵id,组id,瞬时流量,累计流量)
水泵历史数据表(泵id,泵状态,选择开关,故障状态)
流量计历史数据表(泵id,瞬时流量,累计流量)
数据展示:联表查询(问题:大数据下,查询慢)
1. 同类型不同品牌的设备,有各自的属性,就得水平扩充字段
2. 数据量大,为减少联表查询的耗时,会将同组设备的所有字段入库(方案1:建字段(参数值需跟设置属性值对应,做好对照表);方案2:用json存储),哪种方案都得水平扩充,受关系型数据库最大字段数,字符串最大长度限制
而nosql可以很好的解决水平扩展问题。
nosql,不仅可以存key/value,文档,文件,更加容易的分表(本地文件:lietedb,服务器:monogdb),缓存:redis
数据采集入库设计:
mysql:实时数据
influxdb:时序数据库,历史设备点位数据
monogdb/litedb:分组数据
https://github.com/lidanger/LiteDB.wiki_Translation_zh-cn/wiki
InfluxDB的写性能是MongoDB的2.4倍,存储效率是MongoDB的20倍,查询效率是MongoDB的5.7倍
InfluxDB函数:https://blog.csdn.net/yao_wen_yu/article/details/118182220