LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > [email protected]发布为IPFS提供更精简有效的数据存储

[email protected]发布为IPFS提供更精简有效的数据存储

2020-05-26 银河存储池 来源:区块链网络

——Galaxy Pool直接对标IPFS和YottaChain未来万亿级分布式存储市场的存储池,致力于构建分布在亚洲乃至全球稳定、高效,安全的存储池。

(Galaxy Pool在此基础上研发了新一代的存储资源服务平台,为全球用户提供了存储池算力租赁,机房运营,存储资源流通,兑换等服务。让矿工参与存储分布式算力更加便捷,高效,公平)

亮点

可取消的请求和新的浏览器数据库

[email protected]支持取消请求和更精简的浏览器的数据存储。

可取消的请求

用户应该能够取消长时间的异步API操作

例如,如果你正在从网络上获取一个CID的内容,而这个CID是无法解析的,你应该能够为请求设置一个超时值,超时之后,内容将不再被寻找,控制权将被返回到你的代码中,并有一个描述发生了什么的错误消息。

这并不像在JavaScript中看起来那么简单,因为API调用的时候会返回一个Promise来解析一个内容,而Promises规范中并没有包含任何关于取消Promise的内容。

然而,浏览器的取证API有一个AbortSignal的概念,可以用来中止Web请求。它们通过AbortController进行交互:

const controller = new AbortController()setTimeout(() => { ?controller.abort()}, 1000)try { ?await result = fetch('http://example.com', { ? ? ? ?signal: controller.signal ?})} catch (err) { ?console.err(err) // prints: user aborted the request ?}

官方采取了这种方法,并将其集成到每一个API调用中,所以用户现在可以使用AbortControllers来取消请求了! 官方还使用了这种机制来timeout为每个API调用添加一个选项,该API内部使用AbortSignal来停止请求,并在指定的时间后抛出TimeoutEr:

const cid = new CID('QmWillNeverResolve')try { ? ?await ipfs.get(cid, { ? ? ?timeout: 1000 // abort after 1000ms ? ?})} catch (err) { ?console.err(err) // err is a TimeoutError ?}

您也可以自己滚动:

const cid = new CID('QmWillNeverResolve')const controller = new AbortController()setTimeout(() => { ? ?controller.abort()}, 1000)try { ?await ipfs.get(cid, { ? ?signal: controller.signal ?})} catch (err) { ?console.err(err)?}

AbortSignal会一路向下传递给支持IPFS的libp2p和ipld组件。在这个初始版本中,IPFS层支持超时,而在未来的版本中,libp2p和ipld将使用AbortSignal来释放资源,并执行任何其他必要的清理工作,如果请求成功完成,则会进行其他必要的清理。

新的浏览器数据存储

[email protected]给浏览器带来了一个新的数据存储库在浏览器中,目前所有的块和其他repo数据都存储在IndexedDB中,因为在编写时,这是唯一可用来持久化和查询大量用户数据的方式。

在node和go-ipfs中,LevelDB一直是应用数据的首选数据存储体(虽然块已经存储在文件系统中),而go-IPFS也在向Badger转移。

从此,接口数据存储库(interface-datastore)应运而生的一种存储键/值对的规范,由IPFS使用的数据存储库实现。在浏览器中,这是datastore级的,由level-js支持,而后由indexedDB支持。

为了去除一些层,官方创建了datastore-idb,它实现了接口-datastore规范,由IndexedDB支持,而不通过level。

这意味着什么?

新的datastore更小,速度更快,而且升级是无缝的,因为它的引擎盖下仍然是IndexedDB:

新功能

? 可取消API调用 (#2993) (2B24F59),关闭#3015

? ipfs.block.put现在接受pin参数,与go-ipfs #3015一致

fixed修正的错误

? 修复了浏览器脚本标签示例 (#3034) (ee8b769), 关闭了#3027

? 浏览器不再生成包含所有IPLD格式的浏览器软件包 (#3025) (e6079c1)

? typeof将超时传递给dag.get的错误(#3035)(026a542)

? 删除节点球体和内建插件的使用,为官方在浏览器绑定程序停止自动包含它们做好准备 #2932

—-

编译者/作者:银河存储池

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...