完全相容DynamoDB協議!GaussDB(for Cassandra)為NoSQL註入新活力

来源:https://www.cnblogs.com/huaweiyun/archive/2023/07/03/17522340.html
-Advertisement-
Play Games

摘要:DynamoDB是一款托管式的NoSQL資料庫服務,支持多種數據模型,廣泛應用於電商、社交媒體、游戲、IoT等場景。 本文分享自華為雲社區《完全相容DynamoDB協議!GaussDB(for Cassandra)為NoSQL註入新活力》,作者:GaussDB 資料庫 。 DynamoDB是一 ...


摘要: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元開發者禮包!

歡迎關註“華為雲開發者聯盟”公眾號,獲取大會議程、精彩活動和前沿乾貨。

 

點擊關註,第一時間瞭解華為雲新鮮技術~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • # 一個跨平臺的`ChatGPT`懸浮窗工具 使用`avalonia`實現的`ChatGPT`的工具,設計成懸浮窗,並且支持插件。 ## 如何實現懸浮窗? 在使用`avalonia`實現懸浮窗也是非常的簡單的。 實現我們需要將窗體設置成無邊框 在`Window`根節點添加一下屬性,想要在Linux下 ...
  • 繼上篇:Taurus .Net Core 微服務開源框架:Admin 插件【4-2】 - 配置管理-Mvc【含請求日誌列印】,本篇繼續介紹下一個內容:系統配置節點:Mvc - Plugin - MicroService 配置界面:註冊中心 ...
  • Linux下PAM認證詳解(以centos7為例) PAM簡介(Pluggable Authentication Modules,可插拔認證模塊) Sun公司於1995年開發的一種與認證相關的通用框架機制:PAM(可插拔認證模塊)是實現認證工作的一個模塊。 因為每個服務都用到不同的認證方式,所以就需 ...
  • CS5466作為ASL集睿致遠新推出的高性能Type-C to HDMI2.1協議轉換器,可以通過HDMI輸出埠作為TMDS或FRL發射機進行操作。 CS5466適配於多個配件市場和現實應用主板,例如:主板,顯示埠,擴展塢等。CS5266還配備了最高級別的HDCP嵌入式秘鑰,能夠安全傳輸受保護... ...
  • # Linux磁碟操作:分區、格式化、掛載 ## 一、分區 > **fdisk分區** > > (1)fdisk命令只支持msdos,分區的時候只支持小容量硬碟( (2)fdisk命令不支持gpt,所以當使用fdisk命令給gpt類型硬碟分區是會出現告警 1. 首先先把設備關機,添加一塊新的磁碟 2 ...
  • 這裡分享一個我寫的MySQL自動安裝腳本mysql_auto_install.sh,它的功能非常簡單,就是自動化安裝MySQL單實例,讓DBA的工作更簡單、輕鬆一些,不用去手工安裝MySQL實例。從簡單重覆的工作中釋放出來。 下麵是關於mysql_auto_install.sh腳本的一些說明: 1: ...
  • 一丶打開客戶端: 對象資源管理器->管理->維護計劃(右鍵點擊)->維護計劃嚮導 二丶打開後點擊下一步, 填寫名稱與說明並更改備份計劃 三丶點下一步, 選擇維護任務 四丶點擊下一步, 選擇需要備份的資料庫, 和備份文件路徑 五丶點擊下一步, 選擇報告文件保存路徑 六丶點擊下一步, 查看維護計劃, 沒 ...
  • # 一. 事務簡介 **事務是一組操作的集合,它是一個不可分隔的工作單位,事務會把所有的操作作為一個整體一起向系統提交或撤銷操作請求,即這些操作要麼同時成功,要麼同時失敗。** **就比如:張三給李四轉賬1000塊錢,張三銀行賬戶的錢減少了1000,而李四銀行賬戶的錢要增加1000。這一組操作就必須 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...