当前位置: 首页 > 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…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

Appium下载安装配置保姆教程(图文详解)

目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...