摘要:DynamoDB是一款托管式的NoSQL資料庫服務,支持多種資料模型,廣泛應用于電商、社交媒體、游戲、IoT等場景,
本文分享自華為云社區《完全兼容DynamoDB協議!GaussDB(for Cassandra)為NoSQL注入新活力》,作者:GaussDB 資料庫 ,
DynamoDB是一款托管式的NoSQL資料庫服務,支持多種資料模型,廣泛應用于電商、社交媒體、游戲、IoT等場景,為了進一步滿足DynamoDB用戶的一些潛在需求,為客戶提供更多的選擇,華為云分布式NoSQL資料庫服務GaussDB(for Cassandra)推出了兼容DynamoDB特性,幫助用戶更加絲滑地從DynamoDB遷移到GaussDB(for Cassandra),
使用GaussDB(for Cassandra) DynamoDB的理由
為什么要選擇遷移至GaussDB(for Cassandra)?
1.使用成本低
隨著業務的發展,企業資料量持續不斷地增加,DynamoDB讀寫請求累加帶來的費用也日漸高漲,而GaussDB(for Cassandra)具有較高的性價比,既能提供更高的吞吐,又可以降低一半的DynamoDB使用成本,尤其當資料量較大時成本降低更加明顯,
2.更靈活開放的部署方式
DynamoDB是一項全托管服務,用戶使用需要遵循一定的部署方式和規則,相比之下,GaussDB(for Cassandra)可以根據用戶的具體需求靈活地部署服務,客戶可以選擇部署在私有云或公有云上,而不是被鎖定在昂貴的平臺上,無論在哪種部署環境下,GaussDB(for Cassandra)都可以保證服務的穩定和高效,
3.平滑的遷移
除了以上兩點,GaussDB(for Cassandra)可以完全兼容DynamoDB的語法和資料模型,所以從DynamoDB遷移到GaussDB(for Cassandra)將變得非常容易,應用程式也不需要進行任何修改,遷移作業將會更高效便捷,對業務也更加友好,
GaussDB(for Cassandra)如何兼容DynamoDB?
華為云GaussDB(for Cassandra)在兼容Cassandra協議的基礎上,新增了兼容DynamoDB的協議,所以,用戶在GaussDB(for Cassandra)上就可以運行DynamoDB的應用程式,同時還能保持原有的CQL協議,服務整體架構如下圖所示,

從圖中可以看到,Dynamo Rest Server模塊在接收用戶發起的讀寫請求的同時,也增加了資料模型映射模塊和運算式語法語意決議模塊,
在埠 8000(DynamoDB SDK默認)上啟用此特性之后,首先,每個節點都會在此埠上接收DynamoDB 客戶端的請求,這些HTTP 請求會以 JSON 格式進行決議,以及多種運算式的語法語意決議,然后通過資料映射模型進行轉換,再將請求轉換為底層Storage Layer協議的請求,最后將資料保存在存盤池中,下面列舉一些關鍵的點:
表映射:DynamoDB的表會映射為GaussDB(for Cassandra)的表,每個表都會保存在一個單獨的KeySpace中,每當用戶創建對應的DynamoDB表(CreateTable請求)時,GaussDB(for Cassandra)會初始化Keyspace,同時創建對應的表,
主鍵映射:DynamoDB主鍵(哈希鍵和排序鍵)是已知型別,會作為GaussDB(for Cassandra)表的磁區鍵和聚集鍵,
RMW請求:DynamoDB提供了一些先讀后寫的請求(R-M-W請求),比如帶有條件運算式的寫入、帶有條件運算式的修改,或者需要回傳舊值的寫入或修改,這些請求會通過LWT(輕量級事務)相互隔離,因此對于RMW類的請求,GaussDB(for Cassandra)可以做到與DynamoDB完全一致,
運算式:在DynamoDB中,需要決議更新運算式、條件運算式和投影運算式,雖然可以使用正則運算式和手寫的遞回下降決議器來決議這些運算式,但考慮到不同運算式的多樣性,GaussDB(for Cassandra)會采用ANTLR4來生成決議器代碼,這樣可以通過定義背景關系無關的語法規則,自動生成決議器代碼,從而更加靈活地支持DynamoDB的運算式,
索引:本質上DynamoDB 的索引和GaussDB(for Cassandra)的物化視圖是相同的,GaussDB(for Cassandra)只需增加嵌套型別的支持就可以在介面層面完美支持本地二級索引(LSI)和全域二級索引(GSI),
如何使用GaussDB(for Cassandra) 的兼容DynamoDB特性?
在購買了GaussDB(for Cassandra) 實體后,如果需要使用兼容DynamoDB 的特性,可以提交工單聯系華為云運維人員開啟該功能,
推薦使用boto3客戶端鏈接GaussDB(for Casssandra),boto3是一個Python客戶端庫,用于連接DynamoDB和一些其他的服務,執行如下命令安裝boto3:
sudo pip install --upgrade boto3
下面是使用boto3寫入和讀取的簡單示例:
# 創建Client client = boto3.resource('dynamodb', endpoint_url='url', region_name='None', aws_access_key_id='key_id', aws_secret_access_key='access_key') # 插入專案 response = client.put_item( TableName='TableName', Item={ 'PartitionKey': {'S': 'key1'}, 'SortKey': {'S': 'key2'}, 'attribute_name': {'S': 'attribute_value'} } ) # 獲取表中的專案 response = client.get_item( TableName='TableName', Key={ 'PartitionKey': {'S': 'key1'}, 'SortKey': {'S': 'key2'} } )
需要注意的是這里的endpointurl、awsaccesskeyid和awssecretaccess_key是GaussDB(for Cassandra) 對應的節點地址、用戶名和密碼,此外,GaussDB(for Cassandra)在語法層面和DynamoDB的使用保持完全一致,
總結
在兼容DynamoDB協議方面,GaussDB(for Cassandra)嚴格遵循了DynamoDB的語法和資料模型,因此DynamoDB的應用程式可以輕松地遷移至GaussDB(for Cassandra);此外,GaussDB(for Cassandra)還提供了多種自動化管理和運維功能,例如自動備份、故障檢測和容錯等,有助于用戶更加方便地管理和運維資料庫,
GaussDB(for Cassandra)作為一種高性能、低成本、開放性強的分布式NoSQL資料庫,能夠滿足用戶各種資料存盤的需求,不僅為使用DynamoDB的用戶提供了一個可靠的替代方案,更可以讓用戶享受到GaussDB(for Cassandra)的高性能、高可靠和高擴展等優勢,
號外

7月7日,華為開發者大會2023 ( Cloud )將拉開帷幕,并將在國內30多個城市、海外10多個國家開設分會場,誠邀您參加這場不容錯過的年度開發者盛會,讓我們一起開啟探索之旅!
我們將攜手開發者、客戶、合作伙伴,為您呈現華為云系列產品服務與豐富的創新實踐,并與您探討AI、大資料、資料庫、PaaS、aPaaS、媒體服務、云原生、安全、物聯網、區塊鏈、開源等技識訓題,展開全面深入的交流,
大會將匯聚全球科學家、行業領袖、技術專家、社區大咖,開設200多場開發者專題活動,為全球開發者提供面對面交流與合作的機會,共同探討技術創新和業務發展,
大會官網:https://developer.huaweicloud.com/HDC.Cloud2023.html
參會購票:https://www.vmall.com/product/10086352254099.html?cid= 211761
點擊參與開發者社區活動,觀賞技術大咖秀、玩轉技術夢工廠,有機會贏取4000元開發者禮包!
歡迎關注“華為云開發者聯盟”公眾號,獲取大會議程、精彩活動和前沿干貨,
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/556568.html
標籤:NoSQL
上一篇:Mysql基礎篇(四)之事務
下一篇:返回列表