分布式块链数据存储提供了记录事务的不可更改性,并且只允许按顺序添加一致算法接受的记录。您可以在区块链上存储数据,也可以引用数据在其他数据存储中的位置。在我看来,块链不像一个理想的数据结构来执行聚合查询(假设一个客户端允许它),而类似SQL的数据库是好的。例如,如果我想知道分类账中某个地址的年收入,一种方法是为事务列表字段中的所有元素创建一个扁平的结构,然后按地址和年份执行一个组,最后将金额字段相加。一个扁平的结构可以放进一个非正态化的桌子。此外,有些分类账可以记录每笔交易的复杂字段,例如IoT设备数据。认为只读SQL层是进行查询以提取数据洞察力的一个很好的解决方案是荒谬的吗?我错过了什么其他的好处或缺点?
发布于 2018-03-04 22:45:57
是的,我相信你已经确定了好处。
块链结构不是查找数据的好结构--您通常需要搜索整个链。如果您要进行查找,使用某种类型的辅助索引是一个非常好的主意。一种方法是将所有数据从区块链复制到SQL数据库中。
发布于 2018-03-04 20:51:39
在为区块链分类账设置一个类似SQL的只读DB时有一些警告。首先,我不是一个区块链专家,但我有基本的知识告诉你,在数据设计方面,这将是一场噩梦。
首先,类似SQL的数据库需要一个排序的数据,因为您的分布式分类账获取块链中的所有块来建立只读数据库将是最昂贵的任务。
其次,您不会更新每个事务的readOnly DB,如果这样做,就会出现排序数据的问题。第三,每个帐户的身份信息是加密的,通常是34个字符(用于BTC情况),并且必须对事物进行分类,甚至需要“按组”查询,将面向字符串的数据分组,这将是对挂在吊扇上的邪恶女巫的一种补充。
您可以使用NoSQL获得更好的结果,仅仅是因为,即使数据是有组织的,但从长远来看,它是高度无组织的,因此,如果您能够根据区块链-用户帐户-id保存数据,并相应地添加值或可能添加一个“历史”对象,这可能是一个更好的选择。
到目前为止,我可以通过n^2的眼镜看到这样的解决方案的复杂性。也许在这个场景中,NoSQL可以为您挤压东西。
剩下的都是你的选择。祝您今天愉快。:)
https://softwareengineering.stackexchange.com/questions/367025
复制相似问题