庚顿新一代实时数据库太快了,得用对数坐标轴放大看

不可否认,实时数据处理已经成为企业数据平台的核心能力之一。如何高效处理海量而复杂的实时数据,则取决于数据库系统的架构设计和处理性能。最近,应广大用户的要求,基于飞腾开放实验室Phytium Open Laboratory(POL)提供的全国产化环境,庚顿新一代实时数据库(以下简称庚顿RTDB,实时数据库英文全称为Real-time DataBase,简称RTDB)与世界知名的文档型数据库MongoDB进行了一场性能对比测试,因为很多人都想知道这两种数据在海量设备传感器数据处理场景中到底会有怎样的表现。

作为一款专为高吞吐、低延迟的实时数据处理而设计的数据库系统,庚顿RTDB以卓越的性能和高效的数据处理能力,成功地吸引了广大工业用户尤其以强实时、高安全、高稳定著称的流程工业用户的强烈关注。而MongoDB则是一种非常受欢迎的开源文档数据库,以灵活性和通用性而闻名。以前没人做过实时数据库与文档数据库的性能对比,所以这次测试,或许可以为让大家更好地了解庚顿实时数据库在工业实时数据处理这一专业领域的优势。

在讲述测试过程之前,我们可以提前看看测试结果:

对比项对比结果
数据写入(普通类型)RTDB比MongoDB快235倍
数据写入(BLOB类型)RTDB比MongoDB快672倍
实时数据查询(普通类型)RTDB比MongoDB快700倍
实时数据查询(BLOB类型)RTDB比MongoDB快50倍
历史数据查询(普通类型)RTDB比MongoDB快390倍
历史数据查询(BLOB类型)RTDB比MongoDB快146倍
历史统计数据查询RTDB比MongoDB快8230倍
存储空间占用对比(无损压缩前)RTDB所占存储空间仅是MongoDB的27%
存储空间占用对比(无损压缩后)RTDB所占存储空间仅是MongoDB的10%
存储空间占用对比(多级压缩后)RTDB所占存储空间仅是MongoDB的万分之4

根据对庚顿RTDB和MongoDB性能测试的对比结果,可以得出以下结论:

● 庚顿RTDB具有更高的写入吞吐量和更低的写入延迟。

● 庚顿RTDB能够更快地响应实时查询请求。

● 庚顿RTDB具备高效处理历史数据查询请求的能力。

● 庚顿RTDB能够更有效地利用存储资源,有更高的数据容纳率。

在海量设备传感器数据处理场景中,庚顿RTDB在数据写入性能、实时数据查询性能、历史数据查询性能以及存储空间利用效率等方面都明显优于MongoDB,基于庚顿RTDB构建的应用解决方案无疑拥有巨大的优势。

本次测试是基于飞腾开放实验室Phytium Open Laboratory(POL)提供的全国产化环境,采用真实的工业实时数据场景,芯片采用FT-2000+/64高性能服务器CPU,服务器规格为64C64G,操作系统采用统信UOS V20。参与测试的软件包括GoldenRTDB V3.0与MongoDB V4.4的ARM64平台版本。该项目测试项目属于性能测试,即针对关键指标测试双方的数据写入性能、实时数据查询性能、历史数据查询性能以及数据压缩能力

由于性能差距较大,为方便阅读和观察,以下所有图表采用对数坐标轴[1]。

1 数据写入性能对比

1)普通类型数据写入性能对比

向20万测点(Float32:Bool=7:3)写入数据,时间戳按100毫秒递增,将跨度1分钟的数据持续急速写入,共1.2亿条数据入库。

测试结论:图1中可以看出随着线程数增加,数据入库吞吐量越高,RTDB数据库最高吞吐量可达1118万条/秒,写入1.2亿条数据耗时约10秒,而MongoDB写入吞吐量最高达4.7万条/秒,数据写入耗时约42分钟,RTDB比MongoDB快235倍

2)Blob类型数据写入性能对比

向10万Blob测点写入长度为901字节、时间戳按1000毫秒递增,将跨度6分钟的数据持续急速写入,共写入3600万条数据。

测试结论:图2中可以看出随着线程数增加,BLOB数据入库吞吐量越高,RTDB数据库最高吞吐量可达2152MB/秒(251万条/秒),64线程写入3600万条长度为901字节数据耗时约14秒,RTDB比MongoDB快672倍,MongoDB写入数据耗时约2.6小时才完成所有数据写入。

说明:RTDB针对时序数据设计了高效的内存存储优化方案和异步归档方案,解决用户需要将堆积的海量数据瞬间写入数据库的痛点,经过内存层级的缓冲,极大减小磁盘压力,同时RTDB将组织好的数据页以顺序I/O的方式写入文件,最大化数据归档落盘速度。

2 实时数据查询性能对比

1)普通类型最新数据查询对比

测试结论:图3中可以看到,RTDB数据库采用32线程并发查询普通类型10万条最新数据耗时约160毫秒,相同条件下RTDB比MongoDB快700倍

2)Blob类型最新数据查询对比

测试结论:图4中可以看到,RTDB数据库采用32线程并发查询1万条BLOB最新数据耗时约4秒,相同条件下RTDB比MongoDB快50倍

3 历史数据查询性能对比

1)普通类型存储值查询对比

测试结论:从图5、6、7中可以看出,RTDB数据库查询普通类型历史存储值的结果都比MongoDB耗时更短,尤其在查询7天大数据量情况下更为明显,如单线程查询1个点7天数据为60.48万条数据时,RTDB比MongoDB快390倍

2)Blob类型存储值查询对比

测试结论:从图8、9中可以看出,RTDB数据库查询二进制Blob类型历史存储值的结果也比MongoDB耗时更短,在单线程查询1个点1小时3600条数据(每条数据901字节)时,RTDB比MongoDB快146倍

3)普通类型统计值查询对比

查询不同时间范围(1小时、1天、7天)的统计值(包括最大、最小、平均值)

测试结论:从图10、11、12中可以看出,RTDB数据库查询普通类型统计值结果比MongoDB耗时更短。如查询100点在7天总数据量6048万条数据中获取到最大值、最小值、平均值时,RTDB比MongoDB快722倍;查询1个点1小时3600条的统计值时,RTDB比MongoDB快8230倍

接下来,我们看看两个数据库在数据压缩处理方面的差异。庚顿RTDB数据库采用了先进的数据压缩技术,能够在保证数据安全的前提下,大幅度降低存储空间的占用。

相比之下,MongoDB在数据压缩和存储空间优化方面的表现明显不如庚顿RTDB数据库,尤其当处理大数据量时,MongoDB需要更多的存储空间和更高的计算资源。

4数据压缩对比

1)无损压缩对比

测试结论:根据以上图表分析,在全量数据未压缩的情况下,RTDB所占存储空间仅是MongoDB的27%,再经过RTDB更加先进的无损压缩算法压缩之后,RTDB的压缩率为30%,而MongoDB的压缩率仅为77%,压缩率越小越好;开启压缩后,RTDB比MongoDB的优势进一步加大,RTDB所占存储空间仅是MongoDB的10%。总的来说,存储相同的数据量,MongoDB要占用的磁盘空间10倍于RTDB

2)多级压缩对比

RTDB进一步支持有损+无损多级压缩,将存储空间压缩到极致,而MongoDB无法继续压缩。

表2 数据多级压缩性能测试结果

数据库关闭压缩前(MB)仅无损压缩(MB)仅有损压缩(MB)无损+有损压缩(MB)最终压缩比最终压缩率(%)
RTDB704.8217.52.340.89791.9 :10.12
MongoDB2580.481996.81.3 :177.38

测试结论:根据以上表分析,在全量数据未压缩的情况下,RTDB所占存储空间仅是MongoDB的27%,再经过RTDB更加先进的有损压缩+无损压缩算法压缩之后,RTDB的压缩率为0.12%,而MongoDB的压缩率仅为77%,压缩率越小越好;开启压缩后,RTDB对MongoDB体现了绝对优势,RTDB所占存储空间仅是MongoDB的万分之4。总的来说,存储相同的数据量,MongoDB要占用的磁盘空间2000+倍于RTDB

综上所述,在工业实时数据处理场景下,庚顿RTDB数据库在性能方面的各项指标都优于MongoDB。如果您正在寻找一款能够应对高并发、低延迟数据处理需求的数据库,那么庚顿RTDB数据库无疑是您的不二之选。

备注:

[1]对数坐标轴:对数坐标轴是某些图表中经常采用的一种坐标轴类型,可以在两个变量之间展现非常大的比例范围。对数坐标轴的刻度不是等分的,而是根据指数函数和对数函数的对称性,以指数方式进行划分。例如,如果我们有一个数据集包含了许多数量级相差很大的值,使用常规的线性坐标轴可能会导致某些小值的柱子无法正确显示,甚至被完全压缩成一条直线。而通过使用对数坐标轴,可以拉大较小值的比例范围,从而更好地展示数据中的细节和差异,帮助我们更清楚地分析数据。

[2]MongoDB建模:创建3个Collection,分别是TableInfo(存储表名和表描述)、TagInfo(存储测点/标签点名称、描述、单位和上下限属性)、DataPoint(存储全部Tag的时序数据),时序数据定义为VTQ(value/timestamp/quality)格式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/110058.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang反射相关知识总结

1. Golang反射概述 Go语言的反射(reflection)是指在运行时动态地获取类型信息和操作对象的能力。在Go语言中,每个值都是一个接口类型,这个接口类型包含了这个值的类型信息和值的数据,因此,通过反射&#x…

JAVA高级技术入门(单元测试,反射,注解,动态代理)

JAVA高级技术入门(单元测试,反射,注解,动态代理) 一、Junit单元测试二、反射1.认识反射,获取类概念:快速入门:获取Class对象的三种方式 2.1获取类的构造器2.2获取类的构造器的作用&a…

【算法专题突破】滑动窗口 - 找到字符串中所有字母异位词(14)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:438. 找到字符串中所有字母异位词 - 力扣(Leetcode) 这道题很好理解,就是找出从不同位置开始的所有异位词。 2. 算法原理 那我们该如…

Android笔记(二十九):利用python自动生成多语言

背景 项目需要支持十几种多语言,而且每个版本的新功能ui都有很多地方需要多语言,如果手动添加非常耗时,于是设计了一个python脚本,通过excel表格转化多语言到项目values/strings文件内 步骤 android工程项目结构 脚本位于langu…

MAUI android连接sqlserver

PDA是android系统,调用金蝶云星空webapi实现仓库收发料,使用读取webapi有些功能无法实现,需要直接读写数据库,读取报错,如图: 用控制台程序测试正常读取 google搜索了一圈, 都需要使用ssl证书才…

pdf添加水印

给pdf文件添加水印 引入依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.3</version></dependency>添加水印 package com.it2.pdfdemo02.util;import com.itextpdf.tex…

MySql安装包配置

电脑重配过多次&#xff0c;此为mysql安装记录贴&#xff0c;方便查阅 从官网下载的安装包进行本地配置 下载地址 解压下载下来的zip压缩包 解压出来的文件中新增配置my.ini文件 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirD:\\software\\package\\M…

知识图谱实战导论:从什么是KG到LLM与KG/DB的结合实战

前言 本文侧重讲解&#xff1a; 什么是知识图谱LLM与langchain/数据库/知识图谱的结合应用 比如&#xff0c;虽说基于知识图谱的问答 早在2019年之前就有很多研究了&#xff0c;但谁会想到今年KBQA因为LLM如此突飞猛进呢 第一部分 知识图谱入门导论 //待更.. 第二部分 LLM与…

ipad手写笔有必要买吗?好用的平板触控笔

众所周知&#xff0c;随着Apple pencil的出现&#xff0c;市面上出现越来越多平替电容笔的出现&#xff0c;无论是价格和功能&#xff0c;几乎都很接近。很多小伙伴不知如何下手&#xff0c;不知道如何从众多品牌中挑选出适合自己的电容笔&#xff0c;今天我为大家总结一下网上…

LeetCode 428. Serialize and Deserialize N-ary Tree【树,BFS,DFS】困难

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

9月15日作业

Qt代码 #include "mywnd.h"//构造函数的定义 mywnd::mywnd(QWidget *parent): QWidget(parent) //显性调用父类的有参构造完成对子类从父类继承下来成员的初始化工作 {//窗口设置this->resize(QSize(500, 433));this->setWindowTitle("Widget&quo…

Vue前端页面打印

前端依赖10-插件"print-js": “^1.6.0” 一&#xff1a;简介 print-js 是一个 Vue.js 插件&#xff0c;用于在 Vue.js 项目中实现打印功能。它依赖于 print-js 库&#xff0c;所以需要安装这个库。 能实现以下功能&#xff1a; PDF打印&#xff08;默认&#xff…