主页 > imtoken钱包开发 > 小硕区块链 |区块链不提供遍历查询功能。设计理念是什么?

小硕区块链 |区块链不提供遍历查询功能。设计理念是什么?

imtoken钱包开发 2023-01-18 18:18:12

区块链是一个分布式账本,本质也是一个数据库,但是为什么大部分区块链核心代码没有提供遍历和过滤的查询功能呢?这里涉及到什么样的设计理念?

本期《小硕区块链》如何查区块链交易数据,由维基链首席技术官陈晓东先生为大家解读。

网友:我对区块链是分布式数据库的说法有疑问。区块链不支持常规数据库的检索吗?

以比特币为例,交易记录存储在每个区块中。如果我想做一个最简单的查询来检索一个地址的所有支付记录,它类似于执行这样一条SQL的效果:

SELECT * FROM Blockchain WHERE Payment Address = 'xxx'

你需要遍历所有区块中的每条交易记录,对吧?对于更复杂的查询,我觉得无法支持。这还是数据库吗?

陈晓东:正确的说法是“分布式账本”。当然,账本也是数据库的一种,但与传统数据库不同的是,账本数据库是不允许修改的。中心化架构下,如何实现只能增删改的账本数据库?那么就必须依靠上层的业务规则和技术来实现,也就是不通过底层数据库来实现,数据库本身还是支持四种CRUD操作的。但在去中心化架构下,即区块链的技术架构下,交易上链后无法删除或修改,也实现了总账的规则要求。

无论是数据库还是账本,其核心都在于数据的存储和规则的约束。其余上层的数据访问能力,比如Select语句,是应用交互层的功能实现,不是核心功能。对于区块链来说,保障数据存储和规则约束显然是最本质的要求。区块链数据本身是通过连接由交易组成的块来构建的。至于属于遍历类型的查询功能,完全没有必要将其构建到区块链的底层代码中。所以大部分区块链核心代码并没有提供这种遍历和过滤查询功能。但是,您可以扫描区块链数据,将其传输到一个中心化的数据库中,例如互联网技术中最常用的 MySQL 数据库,然后在 MySQL 中查询区块链交易数据,从而实现您所需要的。功能。

因此,在设计系统时,无论是集中式还是分散式架构,都必须考虑什么是核心功能,什么是子核心功能,什么是外围功能。尝试像Linux开源技术中提倡的服务或程序,只是为了解决一个问题或实现一个功能。然后通过组合多个服务或程序来实现一个复杂的系统。这种设计理念深深植根于开源社区如何查区块链交易数据,来自开源社区的区块链自然也采用了这种设计理念。我认为这是一个非常合理的选择。所谓:做某事,做某事。