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

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...