当前位置: 首页 > news >正文

MatrixOne 助力西安天能替换MySQL+MongoDB+ES打造一体化物联网平台

物联网(IoT)时代,企业正以前所未有的速度加快数字化转型。西安天能软件科技有限责任公司(Skyable)作为工业物联网领域的领先企业,携手MatrixOne,共同构建新一代一体化物联网平台,实现了从设备连接、数据处理到智能预测的全方位提升。

客户简介

西安天能软件科技有限责任公司(Skyable是一家为企业级用户提供物联网云服务和解决方案的高新技术企业,核心研发团队来自BAT、大唐电信、360等互联网软硬件和安全领域的顶级架构师。公司主要产品——Matrix物联网云平台,已成功连接近千万台设备,服务于海尔、海信、国家电投集团、亚都、苏泊尔、康凯斯、佛朗斯、菲斯曼、智意、Mill、豹米等国内外近300家企业客户。其业务主要涵盖工业物联网(IIoT)以及基于IIoT延伸的各类业务系统,致力于为企业提供智能化设备管理和数据分析服务。

业务挑战

Skyable的物联网场景是典型的混合数据负载场景:

第一,系统需要接入,配置和管理海量的设备,每个设备都涉及到通信协议的配置,数据解析的规则,同时还有系统本身的各类管理模块,这里需要处理的都是事务性的OLTP负载。

第二,设备时刻都在产生大量数据,数据一部分会服务于实时监控服务,大量历史数据也会被存储起来进行历史趋势的分析,这里需要能对海量历史数据进行快速查询及分析的能力。

第三,设备及平台也会产生大量的日志文本数据,这些日志需要进行解析和查询,以确保平台的稳定性和可靠性,同时也用于安全审计相关的目的。

面对这样的业务特点,Skyable采用的数据架构是基础数据和流程管理采用MySQL,实时数据采用Redis,历史数据采用MongoDB,日志数据采用ElasticSearch

历史数据架构

海量数据处理压力Skyable的物联网场景涉及大量设备实时上报数据,平台每天接收大约1000万条设备数据,单条数据最大大小为1KB,年数据量达到约360亿条,总数据量约33TB。现有系统的多数据库架构带来了维护成本增加和架构复杂性的问题,特别是随着数据量增长,写入性能变差、查询速度下降。

系统复杂性与高运维成本:由于Elasticsearch的索引机制,当索引数据量过大时,写入性能会显著下降。为了应对这一问题,Skyable将每月的数据分表存储,以减轻单个索引的写入压力,但这种方案加剧了系统的复杂性,导致业务处理变得繁琐。与此同时,使用多种数据库导致运维负担重,服务器成本居高不下。

性能瓶颈与实时性要求:物联网业务场景对设备实时监控有极高的性能要求,需要及时获取车辆的工作时长、里程数、在线与离线状态等信息。然而,现有架构难以在数据量持续增长的情况下保证高效的查询与写入性能,尤其在日志数据和设备上报信息的分析上,统计效率低下,影响了平台的实时性。

指标统计难度高:设备数据在MongoDB中以JSON形式大量存储,这种格式虽然有很强的灵活性,但是MongoDB的查询能力相对较弱,对于较为复杂的跨表进行指标统计的表达,需要在应用层进行大量代码逻辑的开发。而且由于数据量庞大,应用层代码容易面临性能问题,有的时候甚至还会出现OOM

架构扩展与技术迁移成本高:在现有架构中,Skyable不仅需要维护三套存储系统,还需要针对不同的数据源进行复杂的业务逻辑处理和查询优化。业务的快速扩展对系统的弹性扩展和高效迁移提出了更高的要求。

MatrixOne的解决方案

MatrixOne是一款云原生超融合数据库,对于物联网IoT场景具备良好的支持能力,可以以单一数据引擎承载多种负载,降低架构复杂度。针对Skyable的物联网平台来说,MatrixOne可以在以下几方面产生价值:

提升写入与查询性能:针对之前Elasticsearch的查询、写入问题。通过对MatrixOne的性能测试,发现其单表的写入和查询性能均能满足现有的业务需求,避免了繁琐的分表处理,极大地简化了数据管理流程。针对MongoDB的查询表达弱的问题,MatrixOne支持标准SQL语法及众多分析函数,可以将较重较复杂的数据查询在数据库层面进行计算,MatrixOne本身已有较好的内存管理及并行机制,避免大数据量计算OOM的问题。

简化架构,降低运维成本MatrixOne的解决方案通过将所有数据存储于同一系统中,极大简化了系统架构,降低了运维难度与成本。数据统一管理后,平台的维护和扩展变得更加灵活高效。

无缝数据源切换MatrixOne兼容MySQL语法,Skyable可以在不大幅修改现有业务代码的前提下,顺利将数据存储和查询切换到新平台。大多数代码无需更改,仅需对日志模块的持久化存储与读取部分进行轻微调整即可完成迁移,大大降低了迁移成本和时间。

同时支持多种负载MatrixOne的混合负载能力使其能够同时处理事务处理(TP)和分析处理(AP)任务,也支持针对文本的全文检索。Skyable平台中的基础数据处理使用MatrixOneTP特性,确保了数据的高效读写。而对于设备上报和日志数据的查询,则通过MatrixOneAP特性和全文检索能力,满足了实时性和数据分析的双重需求。

新型数据架构

客户收益

通过引入MatrixOneSkyable大幅简化了原有的系统架构。此前使用MySQLElasticsearchMongoDB的三数据库架构被精简为单一的MatrixOne平台,所有数据得以统一存储与管理。这一架构简化不仅减少了系统的复杂性,还显著降低了硬件资源的使用和日常运维的成本。与此同时,数据处理流程也得到了显著优化,原本繁琐的设备数据上报和查询流程需要经过多个系统处理,而现在数据直接从Kafka流转至MatrixOne,查询性能大幅提升,响应时间显著缩短,整体处理效率得到极大提高。

基于这样的新型数据架构,Skyable交付新的IoT平台项目的部署周期和实施难度都大幅缩减,极大提高了业务敏捷性。

相关文章:

MatrixOne 助力西安天能替换MySQL+MongoDB+ES打造一体化物联网平台

物联网(IoT)时代,企业正以前所未有的速度加快数字化转型。西安天能软件科技有限责任公司(Skyable)作为工业物联网领域的领先企业,携手MatrixOne,共同构建新一代一体化物联网平台,实现…...

正则表达式---元字符

简介 正则表达式分为两种语法:POSIX标准的语法,Perl语法。 正则表达式的POSIX规范,分为基本型正则表达式(Basic Regular Expression, BRE),扩展型正则表达式(Extended Regular Expression&…...

数据库Redis篇

系列文章目录 第一章 C/C语言篇第二章 计算机网络篇第三章 操作系统篇第四章 数据库MySQL篇第五章 数据库Redis篇第六章 场景题/算法题第七篇 常见HR问题篇 本系列专栏:点击进入 后端开发面经 关注走一波 秋招阶段,面过很多大中小厂,积攒了…...

在区块链技术中,什么是权益证明(PoS)?

权益证明(Proof of Stake, PoS)是一种与工作量证明(Proof of Work, PoW)类似的共识机制,但它通过不同的方式来确保区块链网络的安全性和一致性。PoS的主要目标是解决PoW中存在的高能耗问题,并提高网络的扩展…...

Spring Boot——日志介绍和配置

1. 日志的介绍 在前面的学习中,控制台上打印出来的一大堆内容就是日志,可以帮助我们发现问题,分析问题,定位问题,除此之外,日志还可以进行系统的监控,数据采集等 2. 日志的使用 在程序中获取日…...

Python实现全国岗位招聘信息可视化分析(源码+论文+部署讲解)

项目源码&数据源获取 利用Python实现全国岗位招聘信息可视化分析 项目背景: 1.为企业招聘决策提供科学的依据和参考,可以帮助人力资源部门、招聘机构和求职者了解当前的就业形势、行业趋势和人才需求,从而做出更明智的招聘和求职决策。…...

【真题笔记】16年系统架构设计师要点总结

【真题笔记】16年系统架构设计师要点总结 存储部件接口嵌入式处理器产品配置配置管理用户文档系统文档CMM(能力成熟度模型)螺旋模型敏捷软件开发的方法学软件工具面向对象的分析模型设计模型COP(面向构件的编程)构件原子构件模块S…...

2024 CSS保姆级教程二 - BFC详解

前言 - CSS中的文档流 在介绍BFC之前,需要先给大家介绍一下文档流。​ 我们常说的文档流其实分为定位流、浮动流、普通流三种。​ ​ 1. 绝对定位(Absolute positioning)​ 如果元素的属性 position 为 absolute 或 fixed,它就是一个绝对定位元素。​ 在…...

Knowledge-refined Denoising Network for Robust Recommendation

Knowledge-refined Denoising Network for Robust Recommendation(Sigir23) 摘要 知识图(KG)包含丰富的边信息,是提高推荐性能和可解释性的重要组成部分。然而,现有的知识感知推荐方法直接在KG和用户-项目…...

轴流风机和后倾式风机的安装要求

后向离心风机风压大,风量足,安装方便。因为不需要蜗壳,所以风道往往需要自行设计,而风道的合理与否,大大影响了后向离心风机的效率。那么后向离心风机的安装技巧有哪些?怎样达到风机的最佳使用效果呢&#…...

代码笔录1

10-16 出入栈序列是否合法 // // Created by 86184 on 2024/10/16. // #include <stdio.h>//IIOOOIO int jude(char s[]) {int count 0, i 0;while (s[i] ! \0) {if (s[i] I) count;else if (s[i] O) count--;else return 0;if (count < 0) return 0;i;}if (cou…...

强网杯2024 Web WP

强网杯2024 参考链接&#xff1a;https://mp.weixin.qq.com/s/Mfmg7UsL4i9xbm3V3e5HMA https://mp.weixin.qq.com/s/vV_II8TpyaGL4HUlUS57RQ PyBlockly 源码&#xff1a; from flask import Flask, request, jsonify import re import unidecode import string import ast …...

《双指针篇》---盛最多水的容器_Java(中等但简单)

题目传送门 1.首先计算出暂时的盛水体积 2.求暂时体积和最大体积max的最大值 3.更新right和left。如果height[left] > height[right] 那么right--否则left; class Solution {public int maxArea(int[] height) {int left 0,right height.length-1; int ret 0;while (lef…...

Linux: network: 环境:网络burst的一个原因,虚拟机感染病毒导致,外部网络设备太忙

最近碰到一个问题&#xff0c;测试人员在测试一周内的产品稳定性&#xff0c;带有的业务非常大。 总是不能满足需要的时长&#xff0c;总是在一段时间内出现丢包&#xff0c;业务出现错误的现象。从tshark/tcpdump的抓包看&#xff0c;确实在某个时间段&#xff0c;有一次十几秒…...

idea使用Translation插件实现翻译

1.打开idea&#xff0c;settings&#xff0c;选择plugins&#xff0c;搜索插件Translation&#xff0c;安装 2.选择翻译引擎 3.配置引擎&#xff0c;以有道词典为例 3.1 获取应用ID&#xff0c;应用秘钥 3.1.1 创建应用 点击进入有道智云控制台 3.1.2 复制ID和秘钥 3.2 idea设…...

[OS] sys_mmap() 函数+

流程图分析 1. 调用 sys_mmap() 步骤&#xff1a;当用户程序调用 mmap() 时&#xff0c;操作系统会进入 sys_mmap() 函数。作用&#xff1a;这是整个 mmap() 操作的入口。系统调用的实现从这里开始。 2. 提取参数&#xff08;Fetch Argument&#xff09; 步骤&#xff1a;从…...

轧钢机辊道多电动机传动控制系统

轧钢机辊道多电动机传动控制系统是一种复杂的工业自动化系统&#xff0c;主要用于控制轧钢车间中多个电动机驱动的辊道&#xff0c;以实现轧件的高效、稳定输送和加工。以下是对该系统的详细介绍&#xff1a; 系统组成 轧线辊道TDC控制器&#xff1a;作为系统的核心控制单元&a…...

使用 Nginx 部署 Python 项目

今天的目标是完成一个 Python Web 项目的线上部署&#xff0c;我们使用最新的 Django 项目搭建一个简易的 Web 工程&#xff0c;然后基于 Nginx 服务部署该 Python Web 项目。 1. 前期准备 1.1 安装虚拟环境pyenv 使用虚拟环境逐渐成了 python 项目开发中的一种主流方式。py…...

[笔记] SQL 优化

一. 数据库设计优化 1. 选择合适的字段类型 设计表时&#xff0c;尽量选择存储空间小的字段类型&#xff1a; 整型字段&#xff1a;从TINYINT、SMALLINT、INT到BIGINT。小数类型&#xff1a;对于金额等需精确计算的数值使用DECIMAL&#xff0c;避免使用FLOAT和DOUBLE。字符串…...

【InfluxDB】InfluxDB 2.x基础概念及原理

InfluxDB简介 什么是时序数据库 时序数据库&#xff0c;全称时间序列数据库&#xff08;Time Series Database&#xff0c;TSDB&#xff09;&#xff0c;用于存储大量基于时间的数据。时序数据库支持时序数据的快速写入、持久化&#xff0c;多维度查询、聚合等操作&#xff0…...

.net Core 使用Panda.DynamicWebApi动态构造路由

我们以前是通过创建controller来创建API&#xff0c;通过controller来显示的生成路由&#xff0c;这里我们讲解下如何不通过controller&#xff0c;构造API路由 安装 Panda.DynamicWebApi 1.2.2 1.2.2 Swashbuckle.AspNetCore 6.2.3 6.2.3添加ServiceAction…...

Spring框架和Spring Boot框架都使用注解来简化配置和提高开发效率,但它们之间存在一些区别

Spring框架和Spring Boot框架都使用注解来简化配置和提高开发效率&#xff0c;但它们之间存在一些区别&#xff1a; Spring框架注解&#xff1a; Autowired&#xff1a;自动导入对象到类中&#xff0c;被注入的类需要被Spring容器管理。Component、Repository、Service、Contro…...

从数据提取到管理:TextIn平台的全面解析与产品体验

一、引言 在现代信息时代&#xff0c;文档解析和管理已经成为企业和开发者不可或缺的工具。TextIn是合合信息旗下的一款智能文档处理平台&#xff0c;为开发者和企业提供高效、精准的文档解析工具&#xff0c;帮助用户轻松应对各种复杂的文档处理需求。本文将深入探讨TextIn的…...

2024 Rust现代实用教程 Error错误处理

文章目录 一、错误处理之&#xff1a;Result、Option以及panic!宏1.Result2.Option3.panic! 二、错误处理之&#xff1a;unwrap()与?1.unwrap()2.&#xff1f;运算符 三、自定义一个Error类型参考 一、错误处理之&#xff1a;Result、Option以及panic!宏 Rust中的错误可以分为…...

android 逆向破解360加固(MT管理器反编译)

1.需要准备的环境MT管理器 2.一台root手机 3,需要给app脱壳https://nop.gs/在这里脱壳 4.将脱壳的文件解压之后解压 5.用MT管理器打开需要反编译破解的app 6.然后把脱壳的classes.dex添加到破解的app里面删除原来的classes.dex 7.删除360加固的so,so在assets文件里面删除libjia…...

使用 SSH 蜜罐提升安全性和记录攻击活动

文章目录 使用 SSH 蜜罐提升安全性和记录攻击活动前言整体逻辑讲解安全最佳实践蜜罐的类型与选择数据分析与响应进一步学习资源修改 SSH 服务端口部署 FakeSSHFakeSSH 简介部署步骤记录攻击 部署 SSHSameSSHSame 简介部署步骤观察攻击行为 总结 使用 SSH 蜜罐提升安全性和记录攻…...

无人机拦截捕获/直接摧毁算法详解!

一、无人机拦截捕获算法 网捕技术 原理&#xff1a;抛撒特殊设计的网具&#xff0c;捕获并固定无人机。 特点&#xff1a; 适用于小型无人机。 对无人机的损害较小&#xff0c;基本不影响其后续使用。 捕获成功率较高&#xff0c;且成本相对较低。 应用实例&#xff1a;…...

后端eclipse——文字样式:UEditor富文本编辑器引入

目录 1.富文本编辑器的优点 2.文件的准备 3.文件的导入 导入到项目&#xff1a; 导入到html文件&#xff1a; ​编辑 4.富文本编辑器的使用 1.富文本编辑器的优点 我们从前端写入数据库时&#xff0c;文字的样式具有局限性&#xff0c;不能存在换行&#xff0c;更改字体…...

thinkphp6 redis 哈希存储方式以及操作函数(笔记)

逻辑&#xff1a;如果redis里没有指定表数据就进行存储再输出&#xff0c;如果有就直接输出&#xff0c;代码优化后几万条数据从数据库入redis也是三四秒的时间&#xff0c;数据以json方式存储&#xff1a;key用于数据ID 跟数据库数据ID同步&#xff0c;value用于存储整个字段包…...

「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现

本篇将带你实现一个滑动选择器应用&#xff0c;用户可以通过滑动条选择不同的数值&#xff0c;并实时查看选定的值和提示。这是一个学习如何使用 Slider 组件、状态管理和动态文本更新的良好实践。 关键词 UI互动应用Slider 组件状态管理动态数值更新用户交互 一、功能说明 在…...