BigchainDB,区块链与数据存储
Posted 跨链技术践行者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BigchainDB,区块链与数据存储相关的知识,希望对你有一定的参考价值。
自从我写这篇文章以来,BigchainDB和区块链领域已经发生了很大的变化,所以现在似乎是重新审视和更新区块链对传统计算领域更基本部分之一的影响的时候了:数据存储。
BigchainDB最初是作为替代Ascribe数字艺术品跟踪项目中比特币区块链的技术而构建的,它扩展为废弃IPDB的一个组件,现在作为Ocean protocol的存储层。
这种使用的变化导致了BigchainDB的基础和实现的变化,RethinkDB的关闭也迫使团队将存储引擎切换到坚固的MongoDB。数据库顶部的区块链层提供了有助于保证数据库更改的交易支持,并增加了额外的控制和安全性,但已经成熟,BigchainDB在2018年设置为2.0。
所有这些变化现在意味着BigchainDB鼓励你使用他们的公共网络而不是部署你的实例。这种方法在某种程度上与传统的分布式数据库实践相悖,但在过去几年中更适合基于区块链的项目的发展,有助于BigchainDB通过其平台(使用ICO或SaaS模型)货币化,这是一个有趣的变化。时间将告诉客户是否愿意将数据存储在公共网络中,但是通过访问token通证确保安全性和隐私性,它在概念上与使用云托管数据库并不太相似。
如果你愿意,你仍然可以安装自己的BigchainDB实例,但我觉得公司会越来越多地鼓励你不要这样做。
无论你选择哪种方式,都可以使用官方的Python,javascript或社区驱动程序。例如,使用JavaScript,使用npm install bigchaindb-driver
安装软件包,使用适当的写入程序和阅读器密钥创建连接并将资源写入和读取数据库。
你可以在此处阅读驱动程序的完整文档和数据库,但下面的示例为作者创建这篇文章的一个福利,然后将其分享给读者:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | const driver = require('bigchaindb-driver') const author = new driver.Ed25519Keypair() const assignee = new driver.Ed25519Keypair() console.log('Author: ', author.publicKey) console.log('Assignee: ', assignee.publicKey) const assetdata = { 'article': { 'title': 'Blockchain DBs', 'body': 'Article body', } } const txCreateAuthorSimple = driver.Transaction.makeCreateTransaction( assetdata, [driver.Transaction.makeOutput( driver.Transaction.makeEd25519Condition(author.publicKey)) ], author.publicKey ) const txCreateAuthorSimpleSigned = driver.Transaction.signTransaction(txCreateAuthorSimple, author.privateKey) let conn = new driver.Connection('https://test.bigchaindb.com/api/v1/', { app_id: '<APP_ID>', app_key: '<APP_KEY>' }) conn.postTransactionCommit(txCreateAuthorSimpleSigned) .then(retrievedTx => console.log('Transaction', retrievedTx.id, 'successfully posted.')) .then(() => { const txTransferAssignee = driver.Transaction.makeTransferTransaction( [{tx: txCreateAuthorSimpleSigned, output_index: 0}], [driver.Transaction.makeOutput(driver.Transaction.makeEd25519Condition(assignee.publicKey))], {price: '100 dollars'} ) let txTransferAssigneeSigned = driver.Transaction.signTransaction(txTransferAssignee, author.privateKey) console.log('Posting signed transaction: ', txTransferAssigneeSigned) return conn.postTransactionCommit(txTransferAssigneeSigned) }) .then(res => { console.log('Response from BDB server:', res) return res.id }) .then(tx => { console.log('Is Assignee the owner?', tx['outputs'][0]['public_keys'][0] == assignee.publicKey) console.log('Was Author the previous owner?', tx['inputs'][0]['owners_before'][0] == author.publicKey) }) // Search for asset based on the serial number of the bicycle .then(() => conn.searchAssets('Blockchain DBs')) .then(assets => console.log('Found assets with title:', assets)) |
其他替代品
BigchainDB不再是城里唯一的基于区块链的数据库,具体取决于你的定义以及你想要实现的目标。
FlureeDB包含一个带有区块链图层的图形式数据库,当你考虑区块链的本质时,它会有所帮助。由于图形基础,它与GraphQL和React很好地集成。它仍在积极开发中,遵循熟悉的数据库资金模型,社区版本有限,以及额外的容量,安全性和对高级用户的支持。FlureeDB参与区块链技术似乎使用通证token作为货币的替代品和某种形式的共识机制。该项目不是开源项目,因此很难说清楚它是什么。
从记忆时间来看,OrbitDB的存在时间与BigchainDB一样长,但设计用于更简单的应用程序需求。虽然它使用IPFS进行存储(有些人可能会声称是各种类型的数据库),但它并不声称是“区块链数据库”,而是去中心化应用程序的选择。
TiesDB在其网站上提出了许多大胆的主张,但是关于它如何实现它们的细节很少,并且有关于如何运行数据库的稀疏存储库和稀疏文档,很难确定它是否能够提供。在存储库自述文件中有一些白皮书可供你筛选,但它们仍主要涵盖理论而非实践。有趣的是,它还允许你删除数据,这些数据虽然是传统数据库的基本部分,但却与区块链理想相矛盾。这个决定没有错误或正确;一些开发商必须考虑妥协,将区块链技术推向主流。
Swarm是一个以太坊组件,它是去中心化应用程序(Dapps)的默认存储机制。它没有提供这种无缝的入门方式,但是如果你已经在研究以太坊的其他组件,那么请阅读文档以获取更多详细信息。
Filecoin做了不同的事情。它提供了一种机制,用于跟踪数据中心和Internet周围的备用存储块之间的交易。它允许你使用传统存储,但通过区块链层,用户可以竞标你提供的空间并跟踪其使用情况。
这篇文章中更详细地描述了这两种技术。
去中心化未来的一部分
BigchainDB暂时忽略了Blockchain遗产,提供了当前NoSQL和分布式数据库所缺少的功能。仅这一事实正是可能是尝试它的原因,并可能提供有效的业务/用例。
对于你们中的区块链爱好者来说,BigchainDB和其他替代方案也可以完成去中心化应用程序堆栈的难题——使用以太网作为应用程序,IPFS作为文件系统,BigchainDB用于数据存储。这些部分适用于开发,部署和维护应用程序的不同方式,从而形成一个迷人的未来,我很乐意听取你的意见。
以上是关于BigchainDB,区块链与数据存储的主要内容,如果未能解决你的问题,请参考以下文章