Mysql 5.7 JSON 与 物联网设备上数完美结合

简介:

MySQL 5.7.15 新特性一 (json)


更多更浓参考官网

https://dev.mysql.com/doc/refman/5.7/en/json.html


一、测试过程


1.创建库表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
create  database  veh_history;
use veh_history;
CREATE  TABLE  `t_equipment_traffic` (
   `id`  bigint (20)  NOT  NULL  AUTO_INCREMENT COMMENT  '自增主键' ,
   `cn`  char (17)  NOT  NULL  COMMENT  '设备号' ,
   `st` datetime  NOT  NULL   COMMENT  '采集时间' ,
   `description` json,
   PRIMARY  KEY  (`id`,`st`),
   KEY  `idx_cn_ct` (`cn`),
   KEY  `idx_st` (`st`) 
) ENGINE=InnoDB AUTO_INCREMENT=1  DEFAULT  CHARSET=utf8 COMMENT= '历史数据'
PARTITION  BY  RANGE (to_days(st))
(PARTITION p201601  VALUES  LESS THAN (to_days( '2016-12-01' )),
  PARTITION p201612  VALUES  LESS THAN (to_days( '2017-01-01' )),
  PARTITION p201701  VALUES  LESS THAN (to_days( '2017-02-01' )),
  PARTITION p201702  VALUES  LESS THAN (to_days( '2017-03-01' ))
  );

 

2.插入json类型测试数据 

1
2
3
4
5
6
insert  into  `t_equipment_traffic` (cn,st,description)  values  ( 'liaoa12345roiland' ,now(),
'{"time":"2015-01-01 13:00:00","speed":"100","result":"fail"}' );
insert  into  `t_equipment_traffic` (cn,st,description)  values  ( 'liaoa12345roiland' ,now(),
'{"time":"2017-01-01 13:00:00","speed":"110","result":"fail"}' );
insert  into  `t_equipment_traffic` (cn,st,description)  values  ( 'liaoa12345roiland' ,now(),
'{"time":"2017-01-02 13:00:00","speed":"110","result":"sucessed"}' );


3.json简单查询方法

1
2
3
4
select  cn,description  from  t_equipment_traffic  where  cn= 'liaoa12345roiland' ;
select  from  t_equipment_traffic  where  description -> '$.time'  '2016-12-31' ;
select  cn,json_extract(description, '$.speed' AS  'speed' ,json_extract(description, '$.result' AS  'result' 
from  t_equipment_traffic;


4.创建虚拟列

1
2
ALTER  TABLE  t_equipment_traffic   ADD  description_speed  int (10) 
GENERATED ALWAYS  AS  (description-> '$.speed' ) VIRTUAL;


5.创建索引

1
alter  table   t_equipment_traffic  add  index  idx_speed (description_speed);


6.查看执行计划

1
explain partitions  select  from  t_equipment_traffic  where  description_speed=100;


二、小结 

1.mysql 5.7 已开始支持json数据类型,存储引擎使用Innodb

2.对于物联网设备上数存储完全可以采用json,大数据量,经常会变更字段的场景十分适合。

3.uuid+json+innodb+partition 解决数据手动同步可能导致的主键冲突,经常字段变更,数据的定期删除,保留了MVCC特性。


###############################################











本文转自 roidba 51CTO博客,原文链接:http://blog.51cto.com/roidba/1881311,如需转载请自行联系原作者
相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
25天前
|
存储 Java 关系型数据库
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
17 0
|
29天前
|
消息中间件 网络协议 物联网
MQTT常见问题之物联网设备端申请动态注册时MQTT服务不可用如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
1月前
|
监控 安全 数据挖掘
物联网平台中如何快速检测设备异常
物联网平台中如何快速检测设备异常
29 0
|
1月前
|
存储 监控 安全
Java基于物联网技术的智慧工地云管理平台源码 依托丰富的设备接口标准库,快速接入工地现场各类型设备
围绕施工安全、质量管理主线,通过物联感知设备全周期、全覆盖实时监测,将管理动作前置,实现从事后被动补救到事前主动预防的转变。例如塔吊运行监测,超重预警,升降机、高支模等机械设备危险监控等,通过安全关键指标设定,全面掌握现场安全情况,防患于未然。
148 5
|
1月前
|
XML JSON 网络协议
【开源视频联动物联网平台】设备接入
【开源视频联动物联网平台】设备接入
27 2
|
1月前
|
存储 运维 网络协议
【开源物联网平台】物联网设备上云提供开箱即用接入SDK
IOTDeviceSDK是物联网平台提供的设备端软件开发工具包,可简化开发过程,实现设备快速接入各大物联网平台。设备厂商获取SDK后,根据需要选择相应功能进行移植,即可快速集成IOTDeviceSDK,实现设备的接入。
121 0
|
1月前
|
安全 搜索推荐 物联网
物联网设备的OTA基本原理
物联网设备的OTA基本原理
39 1
|
7月前
|
消息中间件 运维 JavaScript
使用物联网平台远程管理运维设备
本实验提供在阿里云物联网平台使用试用企业版实例,将设备接入物联网平台并收发消息。
149 0
|
3月前
|
供应链 NoSQL 物联网
链接全球数十亿台设备!物联网行业如何应对数据管理、实时分析和供应链优化的挑战?
物联网已成为面向未来的解决方案的关键组成部分,且其所蕴含的巨大经济价值潜力有待挖掘
1440 0
链接全球数十亿台设备!物联网行业如何应对数据管理、实时分析和供应链优化的挑战?
|
3月前
|
JSON 关系型数据库 MySQL
这个问题是由于Flink的Table API在处理MySQL数据时,将MULTISET类型的字段转换为了JSON格式
【1月更文挑战第17天】【1月更文挑战第84篇】这个问题是由于Flink的Table API在处理MySQL数据时,将MULTISET类型的字段转换为了JSON格式
34 1

相关产品

  • 物联网平台