为什么选用BoltDB?理由如下:

  • 足够简洁
  • 基于Go实现
  • 不需要服务端

BoltDB在Github上的说明:

Bolt是基于纯Go语言开发的KV存储,灵感来自于Howard Chu的LMDB项目。该项目目标是开发一个简单、快速、可靠的无服务端的数据库。API非常小巧和简洁,仅仅关注如何获取或设置数据,这就是全部。

听起来和我们的需求非常匹配!让我们花几分钟研究一下。

BoltDB是K-V存储,没有关系型数据库中类似表、行、列结构,数据以key-value对存储(类似GO语言中的map)。相似的key-value对存储在同一bucket中,类似于关系型数据库中的Table。因此,为了获取一个value,需要知道其所在的bucket以及对应的key。

BoltDB中没有数据类,key和value都是字节数组。我们的blockchain数据均为struct,因此为了在BoltDB中存取数据,需要对struct进行序列化和反序列化。虽然JSON, XML, Protocol Buffers均可以到达相同的目的,我们还是决定采用encoding/gob库来完成此工作,一方面是因为使用简单,另一方面是因为该模块是Go标准库的一部分。

results matching ""

    No results matching ""