工业数据存储数据库选型比较

2023-11-15

我们讲工业互联网、工业大数据,首先需要把数据从工业现场采集上来,这是第一步也是基础。

海量的数据从工业现场采集之后存在哪里呢?使用什么样的存储方式对后面的数据分析和计算有重要影响。

这里对数据库方式的存储进行了一个选型比较。

当前的数据库按类型分可以分为实时数据库,时序数据库,NoSQL数据库,关系型数据库。

实时数据库是工业领域长时间以来的数据存储方式,很多传统的工业软件厂商都提供实时数据库。今年来,随着物联网的发展,时序数据库的应用也越来越广。

 

1 实时数据库一般具备的特点

  1. 高速写入的能力:工业实时数据库通常会对写入的速度有很高的要求。以流程工业的场景为例,每个环节都会设置传感器,每个传感器的采集频率都很高,所以写入的并发量会特别大,有时甚至会要求每秒上百万的测点。所以除了对软件的要求之外,也会选用一些高性能的服务器。
  2. 快速查询的能力:查询的需求分为两块,一是要响应实时的查询请求,用于及时反映系统的状态;二是历史数据也要能快速被查询,由于历史数据的量非常大,在查询时需要对特定时间段的数据做聚合,需要做到即使是查一整年的数据情况,也能很快的反应出来。
  3. 超强数据压缩能力:上面提到监控数据会被存储很长时间,5年甚至是10年都是常有的事,在存储容量有限的情况下,就需要对数据做一定的压缩,通常压缩方式会分成无损压缩和有损压缩,相比而言,有损压缩的压缩比会更大一些,有时甚至会达到1:30-40,这就需要设计合理的算法来保留数据中的细节,使数据在还原后仍能保留重要的特征。
  4. 积累丰富的工具:传统的实时数据库的解决方案一般是从采集开始到直可视化的一整套系统,有多年积累形成的丰富的工具包,比如会积攒上百种的协议,或者各种场景的数据模型,这些都是工业软件的重要竞争力。
  5. 追求极致稳定:工业上对软件的稳定性要求特别高,除了用主备来保证高可用外,完全由软件的质量来保证程序的持续运行,工程师会自豪地拍胸脯保证软件跑十年也不会出错。

2 时序数据库特点

1. 单条数据不会很长,但是数据量很大

2. 它们都带有时间戳,且按顺序生成

3. 数据大部分都是结构化的,用于描述某个参数在某个时间点的特征

4. 写入的频率会比查询的频率高很多

5. 已存储的数据很少有更新的需求

6. 用户会更关心一段时间的数据特征,而不是某一个时间点

7. 数据的查询分析大多基于某一个时间段或者某个数值范围

8. 需要进行统计和可视化的展示

3 选型分析

这里分别选择从一个类型中选择一个代表进行选型比较。

时序数据库选择InfluxDB,这是当前排名最高的时序数据库;

NoSQL数据库选择MongoDB,这也是当前排名最高的非关系型数据库;

关系型数据库选择PostgreSQL。为什么没有选mysql,主要还是从开放性考虑,在功能和性能上PostgreSQL和mysql都非常好,基本差别不大,但是Mysql属于Oracle之后,能否一致保持开源特性让人担忧,PostgreSQL则完全没有这方面的担心。

图一是截止2020.10的数据库的最新排名。

                       图1:数据库排名(截止2020.10) https://db-engines.com/en/ranking

 

                                                                                                                  表1:数据库分项比较

Name

InfluxDB

MongoDB

PostgreSQL

Description

DBMS for storing time series, events and metrics

One of the most popular document stores available both as a fully managed cloud service and for deployment on self-managed infrastructure

Widely used open source RDBMS

Primary database model

Time Series DBMS

Document store

Relational DBMS

Secondary database models

 

Search engine

Document store

DB-Engines Ranking

Score:24.15

Rank:

#28 Overall

#1 Time Series DBMS

Score:448.02

Rank:    

#5 Overall

#1 Document stores

Score:542.40

Rank:

#4 Overall

#4 Relational DBMS

Trend Chart

License

MIT-License; commercial enterprise version available

MongoDB Inc.'s Server Side Public License v1. Prior versions were published under GNU AGPL v3.0. Commercial licenses are also available.

BSD

Implementation language

Go

C++

C

Server operating systems

Linux

OS X

Linux

OS X

Solaris

Windows

FreeBSD

HP-UX

Linux

NetBSD

OpenBSD

OS X

Solaris

Unix

Windows

Data scheme

schema-free

schema-free

         yes

Typing

Numeric data and Strings

yes

yes

XML support

no

 

yes

Secondary indexes

no

yes

yes

SQL

SQL-like  query language

Read-only SQL queries via the MongoDB Connector for BI

yes

APIs and other access methods

HTTP API

JSON over UDP

proprietary protocol using JSON

ADO.NET

JDBC

native C library

ODBC

streaming API for large objects

Supported programming languages

.Net

Clojure

Erlang

Go

Haskell

Java

JavaScript

JavaScript (Node.js)

Lisp

Perl

PHP

Python

R

Ruby

Rust

Scala

 

(don’t support C++)

Actionscript info

C

C#

C++

Clojure info

ColdFusion info

D info

Dart info

Delphi info

Erlang

Go

Groovy info

Haskell

Java

JavaScript

Lisp info

Lua info

MatLab info

Perl

PHP

PowerShell info

Prolog info

Python

R info

Ruby

Rust

Scala

Smalltalk info

Swift

.Net

C

C++

Delphi

Java info

JavaScript (Node.js)

Perl

PHP

Python

Tcl

Triggers

no

yes(in MongoDB Atlas only)

yes

Partitioning methods

Sharding

(enterprise version only)

Sharding

partitioning by range, list and (since PostgreSQL 11) by hash

Replication methods

selectable replication factor

(enterprise version only)

Multi-Source deployments with MongoDB Atlas Global Clusters

Source-replica replication

Source-replica replication

MapReduce

no

yes

no

Consistency concepts

 

Eventual Consistency

Immediate Consistency

Immediate Consistency

Foreign keys

no

no

yes

Transaction concepts

no

Multi-document ACID Transactions with snapshot isolation

ACID

Concurrency

yes

yes

yes

Durability

yes

yes

yes

In-memory capabilities

yes

(Depending on used storage engine)

yes

no

Access control

simple rights management via user accounts

Access rights for users and roles

fine grained access rights according to SQL-standard

4 结论

数据库

优势

劣势

InfluxDB

时序数据库

schema-free

官方不提供C++ API,需要自己封装;(https://github.com/awegrzyn/influxdb-cxx)

单机版,不支持集群

MongoDB

schema-free,

提供C++ API

支持集群

没有时序,需要自己实现

PostgreSQL

提供C++ API

支持集群

has schema,table can not change.

没有时序,需要自己实现

https://github.com/timescale/timescaledb

只针对开源版本来说,Influxdb不支持集群,集群和高可靠用需要自己设计实现方案,在生产环境下不是最佳选择,如果不考虑这个方面或者可以购买企业版的话,influxdb是不错的选择。

PostgreSQL 在有了timescaledb 之后具备了时序数据库的功能,同时又天然支持集群和高可用方案,很好的选择。

MongoDB需要自己设计时序方案,稍显麻烦了,如果技术实力可以的话,也是一个选择。

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

工业数据存储数据库选型比较 的相关文章

  • Anaconda环境下的opencv实现人脸检测

    文章内容 本文主要介绍python3 9 Anaconda pytorch Jupyter Opencv安装教程 以及opencv的图片加载以及人脸检测 目录 一 anaconda的安装 二 pytorch的安装 三 Jupyter的配置
  • windows下apache开启FastCGI

    1 在此链接下载一个合适的mod fcgid 文件 64位下载第一个 32位第二个 http www apachelounge com download 2 将解压后将文件中的 mod fcgid so 复制到apache的modules目
  • IDEA中Translation插件无法使用怎么办?

    昨天一个小偷 来我家偷钱 我们一起找了一晚上 问题 谷歌翻译退出中国了 导致我的 IDEA 翻译插件 Translation 也不能用了 会出现这样的错误 更新 TKK 失败 请检查网络连接 解决办法 使用百度翻译 很多翻译都收费 百度翻译
  • 树莓派安装卸载软件命令apt-get

    apt get命令用法 1 安装软件 apt get install 软件名 2 卸载软件但不删除配置 apt get remove 软件名 3 卸载软件并且删除相关配置 apt get purge 软件名 4 更新数据库 apt get
  • MATLAB算法实战应用案例精讲-【时序模型】循环神经网络-GRU(附MATLAB和Python代码)

    目录 前言 几个高频面试题 1 GRU与LSTM的区别与联系 2 LSTM和RNN的区别 GRU的引入 算法原理
  • STA(静态时序分析) 详解:如何计算最大时钟频率,以及判断电路是否出现时钟违例(timing violation)?

    1 什么是STA STA 静态时序分析 是时序验证的一种方法 用于计算和分析电路是否满足时序约束的要求 2 为什么需要STA 电路能否正常工作 其本质上是受最长逻辑通路 即关键路径 的限制 以及受芯片中存储器件的物理约束或工作环境的影响 为
  • ERC20 协议

    https www jb51 net blockchain 797814 html https blog csdn net bareape article details 124275062 代币标准 ERC20协议源码解析 我们在买入US
  • 高性能计算(HPC)和智能计算理解

    1 现代终端设备一般都跟云端服务器相连 但只要可能 我们都希望计算可以在本地终端解决 这样做的好处是多方面的 既可以减小网络带宽的压力 又可以避免网络传输产生的时延 还可以让用户的数据更安全 现代终端设备一般用一个片上系统 SoC 做计算
  • vs2019+QT5.12.0打不开现有文件,提示This application failed to start because no Qt platform plugin问题

    按照要求配置好vs2019和QT5 12 0后 qt addin插件仍然不能使用 已经尝试更换了2 8 0 2 6 0 2 5 0版本的qt development releases vsaddin 仍旧报错 出现以下问题 后来找方法 在电
  • 【一】第一个java程序详解

    第一个java程序详解 一 前言 二 创建并编写java源代码的文件 创建java源代码文件 更改文件后缀 java代码的结构 三 编译执行 编译 执行 四 总结 五 附 java关键字 一 前言 通过之前上一节 开篇 Java语言介绍及环
  • 5V转±12V无变压器双boost电路

    最近有个新项目 需要 10V范围的模拟量输出 非隔离 对于5V以下供电的控制板而言单端输出绝对没问题 可现在需要有正负输出 是少不了正负电源的 因此准备设计一个5V转 12V的电源 然后选择一个双向供电的运放 来实现单端模拟量信号向双向模拟
  • FPGA硬件工程师Verilog面试题(基础篇二)

    作者简介 大家好我是 嵌入式基地 是一名嵌入式工程师 希望一起努力 一起进步 个人主页 嵌入式基地 系列专栏 FPGA Verilog 习题专栏 微信公众号 嵌入式基地 FPGA硬件工程师Verilog面试题 二 习题一 多功能数据处理器
  • kafka的安装和使用

    ZooKeeper简介 ZooKeeper 是一个为分布式应用所设计的分布的 开源的 java 协调服务 分布式的应用可以建立在同步配置管理 选举 分布式锁 分组和命名等服务的更高级别的实现的基础之上 ZooKeeper 意欲设计一个易于编
  • 劳务派遣员工转正制度是什么

    一 劳务派遣员工转正制度是什么 要根据不同的单位来看 因为具体的制度还是要看用工单位的相关规定 比如大部分银行每年都会有一定的转正名额 公务员和事业单位的转正机会则较少 想要成为正式员工还是要参加招聘考试 银行招聘的时候会以劳务派遣的方式招
  • C规范编辑笔记(四)

    往期文章 C规范编辑笔记 一 C规范编辑笔记 二 C规范编辑笔记 三 正文 大家好 今天来给大家分享一下C规范编辑笔记第四篇 距离我们C规范编辑笔记第三篇也快过去了一个月 这次继续分享一波 1 以大写形式声明常量 为避免误解 常量值必须根据
  • 关于高并发与多线程中的线程池

    关于高并发与多线程中的线程池 定义 线程是稀缺资源 它的创建与销毁是一个相对偏重且耗资源的操作 而Java线程依赖于内核线程 创建线程需要进行操作系统状态切换 为避免资源过度消耗需要设法重用线程执行多个任务 线程池就是一个线程缓存 负责对线
  • Queue队列简介说明

    转自 Queue队列简介说明 下文笔者讲述Queue队列的简介说明 如下所示 Queue队列简介 Queue也是Java集合框架中定义的一种接口 直接继承自 Collection 接口 除了基本的Collection接口规定测操作外 Que
  • 【网安入门】怎样花3个月零基础入门网络安全?

    写这篇教程的初衷是很多朋友都想了解如何入门 转行网络安全 实现自己的 黑客梦 文章的宗旨是 1 指出一些自学的误区 2 提供客观可行的学习表 3 推荐我认为适合小白学习的资源 大佬绕道哈 一 自学网络安全学习的误区和陷阱 1 不要试图先成为
  • 面对内卷严重的2023年,测试人员该怎样修炼?

    这几天马上就要双12大促 相信大家都准备花了不少钱吧 其实在每一次大促的背后各大电商平台还在遭受一次又一次的的黑产攻击 拿阿里巴巴去年双十一举例 2684 亿交易额的背后 有一天内 22 亿次的黑产攻击 近几年网络安全事件层出不穷 相信大家
  • 计算机提示vcruntime140.dll丢失的解决方法,多种修复教程分享

    vcruntime140 dll是一个非常重要的动态链接库文件 它包含了许多运行时的函数和类 然而 有时候我们可能会遇到vcruntime140 dll无法继续执行代码的问题 这会给我们带来很大的困扰 那么 这个问题是什么原因导致的呢 又应

随机推荐

  • ubuntu安装无线网卡驱动

    摘要 在笔记本上安装ubuntu系统 安装好后是可以连接wifi的 而台式机安装ubuntu的话 特别是组装的台式机 是无法立即连wifi的 是需要安装无线网卡驱动的 如果你身边无法连网线 而又无法连接wifi 根本无法更新或者下载 所以
  • https证书申请 nginx ssl配置

    打算开发api要弄一个https的域名 于是我就搞了一个把过程记录下来 留给有用的人 分割线 我用的是阿里云的证书 现在有一个免费的不知道以后会不会一直有 就在阿里云服务里CA证书服务就可以找到 购买的时候选择自动生成证书 这样就不用自己制
  • ionic5/angular11通过修改ShadowRoot样式更改ionic UI组件原样式

    通过浏览器调试可以找到需要更改的UI组件样式 找到其CSS class类名后 通过CSS无法直接修改样式 需要使用shadowRoot appendChild 方法注入新的样式覆盖原来的样式达到修改原样式的目的 一 编写HTML
  • 农行网银登录无法显示该网页_Edge Dev新版发布:支持网页预加载以更快搜索和浏览...

    今天早些时候 微软宣布了 Edge Dev 通道的最新 85 0 531 1 版本 本次版本更新支持某些网页的预加载 可以更快地搜索和浏览 该版本中还包含了一些BUG修复和改进 下载地址 https www microsoftedgeins
  • C#DataTable转List互转

    using System using System Collections Generic using System Data using System Reflection namespace BT Preservation Models
  • 疫情期间沙雕文案

    1 希望如约而至的不至是春天 还有疫情过后平安的你 2 早知道半个月前是最后一次出门 就不应该喝一杯奶茶 3 刚刚有人约我出去过情人节 我果断拉黑删除了 非常时期骗我感情可以 但要我名不可以 4 烟花三月下扬州 愿我三月能下楼 5 疫情你走
  • postman进行post、get参数传递及中文乱码和各类型参数传递和json格式传参和日期型参数传递和响应数据传回

    postman是一种测试工具 用postman直接在其上输入参数名和参数值就行 不用区分post和get请求方法 当然java代码要改变一点 在响应注解的方法里面添加和postman中输入的参数名一样的形参 get请求 代码 注意在响应注解
  • Android 9 底部导航栏样式不正确

    1 项目预制了GMS后 底部导航栏只剩下一个返回键和唤醒Assistant的按钮 需要回到原来的导航栏来 修改方式屏蔽掉 config defaultAssistantAccessPackage 使用Android原始的config def
  • 原码、补码、反码的关系及应用场景

    是三种表示有符号整数的方法 它们之间存在一定的关系 概念 原码是最基本的表示方法 即将一个数的符号位和数值位分开表示 符号位用0表示正数 用1表示负数 例如 7的原码为00000111 7的原码为10000111 反码是在原码的基础上 将负
  • 局域网、城域网、广域网、国际互联网(internet)

    计算机网络按覆盖范围分类可分为局域网 城域网 广域网 一 局域网 1 地理分布范较小 一般为数百米至数公里 可覆盖一幢大楼 一所校园或一个企业 一个家庭 2 数据传输速率高 一般为100Mbps 目前已出现速率高达1000Mbps的局域网
  • vue3 element-plus el-form的二次封装

    form表单的二次封装 vue3 element plus el form的二次封装 属性说明 属性名 类型 默认值 说明 data Array 页面展示数据内容 onChange Function false 表单事件 bindProps
  • R语言的科学编程与仿真 chapter 4 答案

    chapter 4 Ex1 programe cha4 6 ex1 Ex1 https img blog csdn net 20151226125117523 12 25 15 author Sigua file path file age
  • java 加载oracle 驱动 19c_037、Java--JDBC技术

    1 JDBC 简介 JDBC Java DataBase Connectivity java 数据库连接 是 JavaEE 平台下的技术规范 定义了在 Java 语言中连接数据 执行 SQL 语句的标准 可以为多种关系数据库提供统一访问 数
  • https认证过程(TLS认证过程)

    最近在准备春招 刚好看到https 网上搜了一圈没看到满意的 于是打算自己整理一下 以下内容来源于 计算机网络 第8版 谢希仁 加上了一些自己的拙见 目前的HTTPS是使用http tls的 所以直接了解tls的认证过程即可 曾经广泛使用的
  • SAP接口 财务凭证集成_差旅费报销

    OA系统调用此接口 传输差旅费报销流程的凭证信息到SAP 生成借款类型SAP凭证 调用标准的BABI方法实现 1 首先先介绍一下实现会计凭证生成的BAPI 参考链接 2 增强操作在另一篇文章 SAP接口 财务凭证集成 借款 在此不再赘述 3
  • 最近研究xcodebuild批量打包的一些心得

    转自Rainbird的个人博客 以前的时候只知道做安卓开发的兄弟挺辛苦的 不但开发的时候要适配一堆的机型 好不容易开发完了还要打一堆不同的包给不同的市场 没想到现在这些市场都开辟iOS市场 于是需要打一堆的包给不同的市场 面对暂时给的十二个
  • +-1 RMQ

    考虑分块 令 b log 2 n
  • [SQL系列] 从头开始学PostgreSQL 分库分表

    什么是分库分表 分库分表是一种数据库架构设计的方法 用于应对大规模数据的存储和查询 当单个数据库的存储容量或查询性能无法满足需求时 可以通过将数据分散存储在多个数据库服务器上 以提高系统的可扩展性和性能 分库分表通常包括两个步骤 分库和分表
  • 【模板】AC自动机(加强版)【AC自动机fail树上求最多出现次数】

    题目链接 P3796 给出N个模式串 然后我们用一个文本串去进行匹配 这样的做法 就是AC自动机了 于是乎 我们可以先将N个模式串丢进去 然后建立fail树 然后先对所有的节点求出最大串在文本串中出现的次数 然后利用dfs跑fail树的办法
  • 工业数据存储数据库选型比较

    我们讲工业互联网 工业大数据 首先需要把数据从工业现场采集上来 这是第一步也是基础 海量的数据从工业现场采集之后存在哪里呢 使用什么样的存储方式对后面的数据分析和计算有重要影响 这里对数据库方式的存储进行了一个选型比较 当前的数据库按类型分