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
安裝軟體包,使用適當的寫入程式和閱讀器金鑰建立連線並將資源寫入和讀取資料庫。
你可以在此處 閱讀驅動程式的完整文件和資料庫,但下面的示例為作者建立這篇文章的一個福利,然後將其分享給讀者:
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用於資料儲存。這些部分適用於開發,部署和維護應用程式的不同方式,從而形成一個迷人的未來,我很樂意聽取你的意見。
======================================================================
分享一些以太坊、EOS、比特幣等區塊鏈相關的互動式線上程式設計實戰教程:
- java以太坊開發教程,主要是針對java和android程式設計師進行區塊鏈以太坊開發的web3j詳解。
- php以太坊,主要是介紹使用php進行智慧合約開發互動,進行賬號建立、交易、轉賬、代幣開發以及過濾器和交易等內容。
- python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
- 以太坊入門教程,主要介紹智慧合約與dapp應用開發,適合入門。
- 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
- ERC721以太坊通證實戰,課程以一個數字藝術品創作與分享DApp的實戰開發為主線,深入講解以太坊非同質化通證的概念、標準與開發方案。內容包含ERC-721標準的自主實現,講解OpenZeppelin合約程式碼庫二次開發,實戰專案採用Truffle,IPFS,實現了通證以及去中心化的通證交易所。
- C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智慧合約開發與互動、過濾器和交易等。
- EOS 教程 ,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智慧合約開發與部署、使用程式碼與智慧合約互動等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
- 深入淺出玩轉EOS 錢包開發 ,本課程以手機EOS錢包的完整開發過程為主線,深入學習EOS區塊鏈應用開發,課程內容即涵蓋賬戶、計算資源、智慧合約、動作與交易等EOS區塊鏈的核心概念,同時也講解如何使用eosjs和eosjs-ecc開發包訪問EOS區塊鏈,以及如何在React前端應用中整合對EOS區塊鏈的支援。課程內容深入淺出,非常適合前端工程師深入學習EOS區塊鏈應用開發。
- java比特幣 開發教程 ,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Java程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
- php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Php程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
- c#比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在C#程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是C#工程師不可多得的比特幣開發學習課程。
- tendermint 區塊鏈開發詳解 ,本課程適合希望使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI介面、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操程式碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。
匯智網原創翻譯,轉載請標明出處。這裡是BigchainDB,區塊鏈與資料儲存