使用Node.js和Cassandra,構建加密貨幣價格跟蹤器
譯文【51CTO.com快譯】自15年前數據技術領域出現大爆炸以來,當時催生出了像Hadoop這樣迎合四個“V”(數量、種類、速度和準確性)的技術,這種現象越來越普遍:使用擁有專門功能的數據庫,以滿足不同類型的數據和使用模式。現在許多公司使用圖數據庫、時間序列數據庫、文檔數據庫及其他數據庫,處理不同的客戶和內部工作負載。
Apache Cassandra™是一種寬列的NoSQL數據庫,很適合用于從物聯網傳感器、GPS設備、事務日志和任何時間序列應用等更多應用獲取數據的僅追加、寫入密集型工作負載。許多這些應用需要與可視化引擎相結合,以創建報告和儀表板。由于大多數可視化庫使用JavaScript編寫,因此使用Node.js與數據庫和可視化引擎進行交互是個好主意。
本教程將介紹如何使用小型Node.js應用程序從API獲取加密貨幣數據,并將該數據持續攝入到Cassandra中,供下游消費。您可以將來自Cassandra的數據饋送給眾多應用,比如加密貨幣交易平臺、加密貨幣價格監測和警報等。
先決條件
在開始學習本教程之前,您需要以下內容:
- Node.js—本地Node.js安裝,隨帶默認軟件包管理器npm。
- Git—克隆含有本教程代碼的GitHub代碼存儲庫。
- DataStax Astra—用于啟動無服務器Cassandra數據庫,與API或驅動程序一起使用。
- CoinGecko-API—用于訪問CoinGecko加密貨幣數據的Node.js庫。
克隆存儲庫
您可以使用git clone命令克隆Cassandra Node.js Cryptotracker的GitHub存儲庫:
- git clone git@github.com:kovid-r/cassandra-nodejs-cryptotracker.git
克隆存儲庫后,首要任務是安裝package.json文件和package-lock.json文件中指定的Node.js依賴項。npm將使用以下命令在存儲庫目錄中安裝依賴項:
- npm install
這些說明也存在于存儲庫的README文件中。
配置Astra
創建數據庫
在運行應用程序之前,您需要注冊由Apache Cassandra提供支持的DataStax Astra,并啟動Cassandra數據庫。
雖然價格信息會隨著您改變云提供商和地區而變化,但對于概念證明、甚至小型生產應用程序而言,您只需要Astra已經為用戶提供的每月25美元的免費積分,這可讓您獲得約40 GB 的免費存儲空間、4000萬次讀取和500萬次寫入。無需信用卡即可注冊,只需使用谷歌或GitHub登錄即可。
點擊Create Database選項,您進入以下頁面:可以在全球三大云提供商(谷歌云、AWS和Azure)中的任何一個云上創建數據庫。您需要提供數據庫名稱(節點應用程序)和密鑰空間名稱(coingecko)。請使用指定的名稱。
初始化數據庫
想首次訪問數據庫,請使用CQLSH瀏覽器內控制臺,如下圖所示:
如果數據庫中沒有密鑰空間,使用該控制臺運行兩個命令來創建,并在指定的密鑰空間創建表。表的結構在存儲庫中的initialize.sql文件中預定義。來自CoinGecko API調用的數據將出現在該表中。
下載Secure Bundle
您需要將DataStax Secure Bundle zip文件下載到Node.js應用程序目錄。確保您的瀏覽器在下載文件時沒有解壓縮文件。
您需要為后面步驟中的配置提供該文件的路徑;想了解有關Secure Bundle的更多信息,請訪問DataStax Astra的官方文檔。
生成身份驗證令牌
下一步是生成身份驗證令牌。為此,點擊頂部菜單欄上的Billing選項。將會出現下圖所示的屏幕:
進入到左側菜單欄中的Token Management選項,選擇Select Role下拉菜單中的R/W User角色,然后按Generate Token。
您將看到以下帶有身份驗證令牌的屏幕。下載CSV格式的Client ID、Client Secret和Token,或直接復制它們。
運行Cryptotracker
使用Npm Config進行身份驗證
現在,我們可以繼續運行Node.js Cryptotracker應用程序了。在本教程中,我們使用config軟件包避免在代碼中存儲令牌信息。我們在存儲庫config/default.json中包含了一個文件,看起來這樣:
想驗證身份,按照說明替換該JSON文件中的secureConnectBundle、用戶名和密碼的值,但確保不要將其提交到代碼庫中。
運行Npm Start
如果您已正確配置好一切,現在應該能夠從Node.js應用程序目錄運行以下命令了:
- npm start
Node.js應用程序將運行40秒,命中CoinGecko API。可以通過找到index.js文件中的這兩行,并重新配置主函數調用來更改它。
運行npm start幾次后,您可以前往Astra網站查看您的配額已使用多少,如下圖所示:
您還可以登錄CQL控制臺,編寫CQL查詢,從coingecko.coin_prices表中獲取一些數據,如下圖所示:
如果您想獲取其他貨幣的價格,可以將不同的參數傳遞給getCoinPrice方法變量:coinName和coinSymbol。
連接其他應用程序
其他應用程序可以使用來自Cassandra的數據。DataStax Astra支持C#、Python、Node.js、Java和C++的驅動程序。您可以將Grafana等流行的可視化引擎與Astra無縫集成。
結語
本教程介紹了如何使用Cassandra作為時間序列數據庫,使用Node.js應用程序來獲取加密貨幣價格變動信息,還介紹了使用您首選的云提供商在云端配置DataStax Astra數據庫。
原文標題:Build A Crypto Price Tracker Using Node.js and Cassandra,作者:Kovid Rathee
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】