摘要:DynamoDB是一款托管式的NoSQL數(shù)據(jù)庫服務(wù),支持多種數(shù)據(jù)模型,廣泛應(yīng)用于電商、社交媒體、游戲、IoT等場景。
本文分享自華為云社區(qū)《完全兼容DynamoDB協(xié)議!GaussDB(for Cassandra)為NoSQL注入新活力》,作者:GaussDB 數(shù)據(jù)庫 。
DynamoDB是一款托管式的NoSQL數(shù)據(jù)庫服務(wù),支持多種數(shù)據(jù)模型,廣泛應(yīng)用于電商、社交媒體、游戲、IoT等場景。為了進(jìn)一步滿足DynamoDB用戶的一些潛在需求,為客戶提供更多的選擇,華為云分布式NoSQL數(shù)據(jù)庫服務(wù)GaussDB(for Cassandra)推出了兼容DynamoDB特性,幫助用戶更加絲滑地從DynamoDB遷移到GaussDB(for Cassandra)。
使用GaussDB(for Cassandra) DynamoDB的理由為什么要選擇遷移至GaussDB(for Cassandra)?
(資料圖)
1.使用成本低隨著業(yè)務(wù)的發(fā)展,企業(yè)數(shù)據(jù)量持續(xù)不斷地增加,DynamoDB讀寫請求累加帶來的費(fèi)用也日漸高漲。而GaussDB(for Cassandra)具有較高的性價比,既能提供更高的吞吐,又可以降低一半的DynamoDB使用成本,尤其當(dāng)數(shù)據(jù)量較大時成本降低更加明顯。
2.更靈活開放的部署方式DynamoDB是一項(xiàng)全托管服務(wù),用戶使用需要遵循一定的部署方式和規(guī)則。相比之下,GaussDB(for Cassandra)可以根據(jù)用戶的具體需求靈活地部署服務(wù),客戶可以選擇部署在私有云或公有云上,而不是被鎖定在昂貴的平臺上。無論在哪種部署環(huán)境下,GaussDB(for Cassandra)都可以保證服務(wù)的穩(wěn)定和高效。
3.平滑的遷移除了以上兩點(diǎn),GaussDB(for Cassandra)可以完全兼容DynamoDB的語法和數(shù)據(jù)模型,所以從DynamoDB遷移到GaussDB(for Cassandra)將變得非常容易,應(yīng)用程序也不需要進(jìn)行任何修改,遷移工作將會更高效便捷,對業(yè)務(wù)也更加友好。
GaussDB(for Cassandra)如何兼容DynamoDB?華為云GaussDB(for Cassandra)在兼容Cassandra協(xié)議的基礎(chǔ)上,新增了兼容DynamoDB的協(xié)議。所以,用戶在GaussDB(for Cassandra)上就可以運(yùn)行DynamoDB的應(yīng)用程序,同時還能保持原有的CQL協(xié)議。服務(wù)整體架構(gòu)如下圖所示。
從圖中可以看到,Dynamo Rest Server模塊在接收用戶發(fā)起的讀寫請求的同時,也增加了數(shù)據(jù)模型映射模塊和表達(dá)式語法語義解析模塊。
在端口 8000(DynamoDB SDK默認(rèn))上啟用此特性之后,首先,每個節(jié)點(diǎn)都會在此端口上接收DynamoDB 客戶端的請求,這些HTTP 請求會以 JSON 格式進(jìn)行解析,以及多種表達(dá)式的語法語義解析,然后通過數(shù)據(jù)映射模型進(jìn)行轉(zhuǎn)換,再將請求轉(zhuǎn)換為底層Storage Layer協(xié)議的請求,最后將數(shù)據(jù)保存在存儲池中。下面列舉一些關(guān)鍵的點(diǎn):
表映射:DynamoDB的表會映射為GaussDB(for Cassandra)的表,每個表都會保存在一個單獨(dú)的KeySpace中。每當(dāng)用戶創(chuàng)建對應(yīng)的DynamoDB表(CreateTable請求)時,GaussDB(for Cassandra)會初始化Keyspace,同時創(chuàng)建對應(yīng)的表。
主鍵映射:DynamoDB主鍵(哈希鍵和排序鍵)是已知類型,會作為GaussDB(for Cassandra)表的分區(qū)鍵和聚集鍵。
RMW請求:DynamoDB提供了一些先讀后寫的請求(R-M-W請求),比如帶有條件表達(dá)式的寫入、帶有條件表達(dá)式的修改,或者需要返回舊值的寫入或修改,這些請求會通過LWT(輕量級事務(wù))相互隔離,因此對于RMW類的請求,GaussDB(for Cassandra)可以做到與DynamoDB完全一致。
表達(dá)式:在DynamoDB中,需要解析更新表達(dá)式、條件表達(dá)式和投影表達(dá)式。雖然可以使用正則表達(dá)式和手寫的遞歸下降解析器來解析這些表達(dá)式,但考慮到不同表達(dá)式的多樣性,GaussDB(for Cassandra)會采用ANTLR4來生成解析器代碼,這樣可以通過定義上下文無關(guān)的語法規(guī)則,自動生成解析器代碼,從而更加靈活地支持DynamoDB的表達(dá)式。
索引:本質(zhì)上DynamoDB 的索引和GaussDB(for Cassandra)的物化視圖是相同的,GaussDB(for Cassandra)只需增加嵌套類型的支持就可以在接口層面完美支持本地二級索引(LSI)和全局二級索引(GSI)。
如何使用GaussDB(for Cassandra) 的兼容DynamoDB特性?在購買了GaussDB(for Cassandra) 實(shí)例后,如果需要使用兼容DynamoDB 的特性,可以提交工單聯(lián)系華為云運(yùn)維人員開啟該功能。
推薦使用boto3客戶端鏈接GaussDB(for Casssandra),boto3是一個Python客戶端庫,用于連接DynamoDB和一些其他的服務(wù)。執(zhí)行如下命令安裝boto3:
sudo pip install --upgrade boto3
下面是使用boto3寫入和讀取的簡單示例:
# 創(chuàng)建Clientclient = boto3.resource("dynamodb", endpoint_url="url", region_name="None", aws_access_key_id="key_id", aws_secret_access_key="access_key")# 插入項(xiàng)目response = client.put_item( TableName="TableName", Item={ "PartitionKey": {"S": "key1"}, "SortKey": {"S": "key2"}, "attribute_name": {"S": "attribute_value"} })# 獲取表中的項(xiàng)目response = client.get_item( TableName="TableName", Key={ "PartitionKey": {"S": "key1"}, "SortKey": {"S": "key2"} })
需要注意的是這里的endpointurl、awsaccesskeyid和awssecretaccess_key是GaussDB(for Cassandra) 對應(yīng)的節(jié)點(diǎn)地址、用戶名和密碼。此外,GaussDB(for Cassandra)在語法層面和DynamoDB的使用保持完全一致。
總結(jié)在兼容DynamoDB協(xié)議方面,GaussDB(for Cassandra)嚴(yán)格遵循了DynamoDB的語法和數(shù)據(jù)模型。因此DynamoDB的應(yīng)用程序可以輕松地遷移至GaussDB(for Cassandra);此外,GaussDB(for Cassandra)還提供了多種自動化管理和運(yùn)維功能,例如自動備份、故障檢測和容錯等,有助于用戶更加方便地管理和運(yùn)維數(shù)據(jù)庫。
GaussDB(for Cassandra)作為一種高性能、低成本、開放性強(qiáng)的分布式NoSQL數(shù)據(jù)庫,能夠滿足用戶各種數(shù)據(jù)存儲的需求,不僅為使用DynamoDB的用戶提供了一個可靠的替代方案,更可以讓用戶享受到GaussDB(for Cassandra)的高性能、高可靠和高擴(kuò)展等優(yōu)勢。
號外7月7日,華為開發(fā)者大會2023 ( Cloud )將拉開帷幕,并將在國內(nèi)30多個城市、海外10多個國家開設(shè)分會場,誠邀您參加這場不容錯過的年度開發(fā)者盛會,讓我們一起開啟探索之旅!
我們將攜手開發(fā)者、客戶、合作伙伴,為您呈現(xiàn)華為云系列產(chǎn)品服務(wù)與豐富的創(chuàng)新實(shí)踐,并與您探討AI、大數(shù)據(jù)、數(shù)據(jù)庫、PaaS、aPaaS、媒體服務(wù)、云原生、安全、物聯(lián)網(wǎng)、區(qū)塊鏈、開源等技術(shù)話題,展開全面深入的交流。
大會將匯聚全球科學(xué)家、行業(yè)領(lǐng)袖、技術(shù)專家、社區(qū)大咖,開設(shè)200多場開發(fā)者專題活動,為全球開發(fā)者提供面對面交流與合作的機(jī)會,共同探討技術(shù)創(chuàng)新和業(yè)務(wù)發(fā)展。
大會官網(wǎng):https://developer.huaweicloud.com/HDC.Cloud2023.html
參會購票:https://www.vmall.com/product/10086352254099.html?cid= 211761
點(diǎn)擊參與開發(fā)者社區(qū)活動,觀賞技術(shù)大咖秀、玩轉(zhuǎn)技術(shù)夢工廠,有機(jī)會贏取4000元開發(fā)者禮包!
歡迎關(guān)注“華為云開發(fā)者聯(lián)盟”公眾號,獲取大會議程、精彩活動和前沿干貨。
點(diǎn)擊關(guān)注,第一時間了解華為云新鮮技術(shù)~
標(biāo)簽: