TSDB与Blockchain

article/2025/9/2 20:48:22

各位小伙伴们我们又见面了,伴随着区块链技术的推广,很多企业也在思考是否将其应用。其实TSDB与区块链有很多共通之处,本期Jesse就来和大家聊聊TSDB与区块链。本文参考了Nicolas Hourcard的文章“You Don’t Need a Blockchain, You Need a Time-Series Database”。 

本文仅代表个人观点,如有偏颇之处,还请海涵~  

在企业应用中区块链技术的使用在近些年来迅猛增长。理论上来说,区块链技术可以提供跨行业的支持,从房地产到金融服务,从大健康产业到供应链管理。然而,真实情况却不是如此,相关调查显示,全球只有14%的区块链项目通过了POC,投入到了生产环节。这也让我们不禁思考,企业应用程序真的需要区块链加持吗?

About Blockchain

我们首先先简要回顾一下区块链是什么。首先,区块链是一个随着时间的推移存储信息的数据库,其也引入了一种完全去中心化的共识机制。我们以比特币为例,其可以在参与者之间验证金融交易,而无需求助于独立第三方(绕过了中介)。在这个网络中,任何人都将是其一部分,他们都可以决定这笔交易是否有效。一旦交易被验证有效,这笔交易也将添加到新的交易区块中。然后每个新区块添加到区块链中。通过这种方式,我们达到了同一数字货币不被多次消费的目的。同时,因为任何人都可以参与并验证交易,因此该网络被认为是无权限网络。公共的、无需许可的区块链在去中心化方面为我们提供了新的视角。

我们应该承认,对于数字货币来讲,一个对所有人开放的点对点框架确实具有创新性。但对企业而言却并非完全如此,因为很多企业并不想公开自己的敏感记录,并且他们只希望允许少数受信任的用户拥有审批权。也就是说大多数企业应用程序首先不需要去中心化,而是最好由一个具有单点的中心化数据库来提供服务,因此这种去中心化的区块链组织形式需要企业去谨慎的权衡和取舍。区块链的主要缺点是:首先,其缺乏可扩展性。以太坊——企业区块链的基础,其平均每秒只能处理15笔交易。这与企业需求相去甚远——单个数据库每秒可能读取数百万个数据点。其次,因为区块链需要依赖资源密集型的共识机制,因此会导致更多处理开销和更高能耗。

TSDB与区块链

事实上,TSDB与企业区块链有很多共同的属性。首先,二者都是以时间为主轴。在区块链中,区块被以有规律的时间间隔加入到链中,这也就意味着对于每一个区块的数据,其都会关联一个时间戳。而在TSDB中,因为其针对时间进行了优化,所以我们可以有效地查询与检索与时间戳相关的数据。比如,我们可以想象,股票价格每时每秒都在改变。其次,二者都具有不变性。在区块链的世界中,一旦将区块加入链中,我们就无法再更改。这在数据库的领域里,类似于可以“插入”,但没有“删除”或“更新”的功能。在TSDB中,替代更新的操作,我们只需要添加最近的数据(近期数据更常被读取)。最后,二者都可以支持长地址格式(256个比特)。在区块链中,这是加密货币公共地址的格式。在TSDB中,我们也可以构建比字符串更好的数据类型,以支持更有效地写入和读取区块链地址。

因此我们可以使用TSDB按时间来重现单个已完成交易事项的完整历史记录。这其实也就是区块链节点的工作方式,他们的相似之处在于:第一,数据复制。区块链中的每个节点都保存着整个交易历史。如果一个节点遭到破坏,我们依靠其他节点来提供完整的历史记录。同样,这个概念在传统数据库中已经存在了几十年,如果一个数据库出现故障,我们可能需要另一个数据库作为备份。第二,共识。区块链有多方(即节点)就特定交易达成一致。传统数据库中有Raft和Paxos等共识算法,类似于投票机制。第三,分片。不是让所有节点计算所有操作来验证交易和执行智能合约,而是分配节点只处理某些计算。数据库分片将大型数据库分成更小的块,以促进跨多个服务器的水平扩展。

综合来看,对于大多数企业来讲,如果去中心化不是必须,那么由具有单点的中心化数据库提供服务是更好的存储解决方案。如果时间是这些企业的主轴,那么TSDB就将是他们的最佳选择。

CnosDB 简介

CnosDB 是一款高性能、高易用性的开源分布式时序数据库,现已正式发布及全部开源。

欢迎关注我们的代码仓库,一键三连🙇🙇🙇:https://github.com/cnosdb/cnosdb


http://chatgpt.dhexx.cn/article/ioVJnGkE.shtml

相关文章

FlashDB嵌入式数据库之TSDB数据存储解析

一、驱动层:SFUD(Serial Flash Universal Driver) 是一款开源的串行 SPI Flash 通用驱动库 二、中间层:FAL(FLASH ABSTRACTION LAYER))FLASH 抽象层 三、应用层:FlashDB(FlashDB 是一…

时间序列数据库 (TSDB)

参考文档:时间序列数据库 TSDB_时间序列数据库 TSDB-阿里云帮助中心 什么是时序数据库 时序数据是随时间不断产生的一系列数据,简单来说,就是带时间戳的数据。数据可能来自服务器和应用程序的指标、物联网传感器的读数、网站或应用程序上的…

TSDB在高速公路大数据平台的应用

好久没有跟大家聊TSDB的应用场景了,Jesse也在国庆期间进行了补课,今天就跟大家聊聊TSDB在高速公路大数据平台的应用。本文借鉴了郝建明、袁逸涛发表在《上海船舶运输科学研究生学报》的《基于时序数据库的高速公路数据集成平台》一文,感谢二位…

时序数据库(TSDB)

时序数据库(TSDB)是一种特定类型的数据库,主要用来存储时序数据。随着5G技术的不断成熟,物联网技术将会使得万物互联。物联网时代之前只有手机、电脑可以联网,以后所有设备都会联网,这些设备每时每刻都会吐…

TSDB数据库

目录 为什么需要时序数据库: 时间序列数据库的特点: 常见的时间序列数据库: 时间序列数据库存储: 时间序列数据库问题: 参考资料: 内容是在我球的docs上直接复制过来的,懒得写两份&#x…

关于时许数据库的相关名词解释

1 时序数据库TSDB 英文全称为 Time Series Database,提供高效存取时序数据和统计分析功能的数据管理系统。 2 时序数据(Time Series Data) 基于稳定频率持续产生的一系列指标监测数据。例如,监测某城市的空气质量时&#xff0c…

物联网平台搭建的全过程介绍(六)——物联网TSDB之基本知识及读写代码介绍

目录 一、TSDB基本知识 二、物联网平台数据流通架构 三、TSDB数据结构 1、TSDB数据包的组成 2、TSDB的另外两个相关概念 四、阿里云物联网平台实例内TSDB功能介绍 1、数据写入 (1)需要添加的依赖 (2)写入数据代码 2、数据…

ES6—简介

目录 一、概述 二、扩展:Babel转码器 三、拓展:编译打包 一、概述 概念 ES6全称ECMAScript 6.0,是Javascript语言的下一代标准,2015年6月正式发布。 注意,ES6既是一个历史名词,也是一个泛指,…

深入浅出ES6(一):ES6是什么

深入浅出ES6(一):ES6是什么 作者 Jason Orendorff ,译者 刘振涛 发布于 2015年6月5日 | http://www.infoq.com/cn/articles/es6-in-depth-an-introduction 我的阅读清单 编者按:ECMAScript 6离我们越来越近了&#…

[ 前端开发 ] 为什么要学习ES6?

ECMAScript 6 概念 ECMAScript 6 简称 ES6 为什么要学习ES6? ES6 是 JavaScript 的下一个版本标准,诞生于2015年6月份。ES6 的主要目的是为了解决 ES5 的先天不足。ES6 的终极目标是为了使 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业…

前端基础之ES6

ES6 ES6简介 ES6实际上是一个泛指,泛指ES2015及后续版本 为什么使用ES6? 每一次标准的诞生都意味着语言的完善,功能的加强。JavaScript语言本身也有一些令人不满意的地方。 变量提升特性增加了程序运行时的不可预测性语法过于松散&#x…

第一节:ES是什么?ES6是什么?

系列文章目录 第一节:ES是什么?ES6是什么? 文章目录 系列文章目录前言一、ES是什么?二、ES6是什么? 前言 学习一下ES,都是自己学习的总结和理解,大家有什么问题都可以提出,一起讨论…

1.什么是ES6,为什么使用它

1.什么是ES6? ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。Mozilla公司将在这个标准的基础上,推出JavaScript 2.0。ES6主要是为了解决ES5的先天不足,比如JavaScri…

ES6是什么

ES6是什么 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。 它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 现在大部分的编…

ES6是什么?通俗理解

1.了解一门语言,首先要搞明白它到底是什么? ECMA (Eurupean Compuler Manuluclurers Assuxiation)中文名为欧洲计算机制造商协会,这个组织的日常是评估、开发和认可电信和计算机标准。19919 年后该组织改名为ECMA国际。 ES6是门脚本语言&…

list集合转换成string字符串

集合转换成字符串 闲来无事&#xff0c;总结了几种list转换成string的方法 第一种 <jdk8新特性&#xff0c;string集合、integer集合均可随意转换成string> 个人觉得这个方法应该属于jdk8的新特性 ArrayList<String> arrayList new ArrayList<String>(){{…

python set转为list_python 怎么把set转成list

今天小就为大家分享一篇python-list,set间的转换实例&#xff0c;具有很好的参考价值&#xff0c;推荐手册&#xff1a;Python 基础入门教程 其实python中&#xff0c;set转list的非常的简单&#xff0c;直接将set的值放入list()的括号中即可&#xff0c;相反&#xff0c;list转…

Java list转set;JDK8 下list 集合转Set 集合

List 集合转Set 集合 1. List 集合和Set 集合的区别 在说如何List集合转Set 集合之前我们先回顾一下 List 集合和Set 集合的区别, 细致上说List 集合和Set 集合的区别还是有蛮多的有兴趣的同学可以去看一下源码&#xff0c;粗糙地讲List 集合和Set 集合的区别主要有那么几点 …

Java中的List与Set转换

一、List列表与Set列表的区别 List列表是有序、可以重复、线程不安全的列表,Set是无序、不能重复、线程不安全的列表。但List和Set可以通过方法来转换为线程安全的&#xff0c;加互斥锁。 Set<Long> setnew HashSet<>();// 转换为线程安全的集合Collections.sy…

BigDecimal中divide方法与setScale方法详解

BigDecimal中divide方法详解 1、首先说一下用法&#xff0c;BigDecimal中的divide主要就是用来做除法的运算。其中有这么一个方法. public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode)第一个参数是除数&#xff0c;第二个参数代表保留几位小数&#x…