主頁 > 資料庫 > 完全兼容DynamoDB協議!GaussDB(for Cassandra)為NoSQL注入新活力

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

2023-07-04 09:03:59 資料庫

摘要: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基礎篇(四)之事務

下一篇:返回列表

標籤雲
其他(162050) Python(38266) JavaScript(25520) Java(18286) C(15238) 區塊鏈(8275) C#(7972) AI(7469) 爪哇(7425) MySQL(7285) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5876) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4609) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2438) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) HtmlCss(1986) .NET技术(1985) 功能(1967) Web開發(1951) C++(1942) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1882) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • 完全兼容DynamoDB協議!GaussDB(for Cassandra)為NoSQL注入新活力

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

    uj5u.com 2023-07-04 09:03:59 more
  • Mysql基礎篇(四)之事務

    # 一. 事務簡介 **事務是一組操作的集合,它是一個不可分隔的作業單位,事務會把所有的操作作為一個整體一起向系統提交或撤銷操作請求,即這些操作要么同時成功,要么同時失敗。** **就比如:張三給李四轉賬1000塊錢,張三銀行賬戶的錢減少了1000,而李四銀行賬戶的錢要增加1000。這一組操作就必須 ......

    uj5u.com 2023-07-04 09:02:16 more
  • Mysql基礎篇(三)之多表查詢

    # 一. 多表關系 - **一對多(多對一)** - **多對一** - **一對一** ## 1. 一對多 ### (1). 案例:部門與員工的關系 ### (2). 關系:一個部門對應多個員工,一個員工對應一個部門 ### (3). 實作:在多的一方建立外建,指向一的一方的主鍵 ![](http ......

    uj5u.com 2023-07-04 09:00:36 more
  • Mysql基礎篇(二)之函式和約束

    # 一. 函式 **Mysql中的函式主要分為四類:字串函式、數值函式、日期函式、流程函式** ## 1. 字串函式 **常用函式如下:** | 函式 | 功能 | | | | | CONCAT(S1, S2, ......Sn) | 字串拼接,將S1,S2,.....Sn拼接成一個字串 | ......

    uj5u.com 2023-07-04 08:58:35 more
  • Mysql基礎篇(一)之DDL、DML、DQL、DCL

    # 一. SQL陳述句分類 **SQL陳述句,根據其功能,主要分為四類:DDL、DML、DQL、DCL。** | 分類 | 全稱 | 說明 | | | | | | DDL | Data Definition Language | 資料定義語言,用來定義資料物件(資料庫,表,欄位) | | DML | D ......

    uj5u.com 2023-07-04 08:50:31 more
  • es 筆記二之基礎查詢

    > 本文首發于公眾號:Hunter后端 > 原文鏈接:[es筆記二之基礎查詢](https://mp.weixin.qq.com/s/VW0QCuW-ONEH-TRB2WF4GQ) 這一篇筆記介紹 es 的基礎查詢。 基礎查詢包括很多,比如排序,類似資料庫 limit 的操作,like 操作,與或非 ......

    uj5u.com 2023-07-03 07:52:54 more
  • es 筆記二之基礎查詢

    > 本文首發于公眾號:Hunter后端 > 原文鏈接:[es筆記二之基礎查詢](https://mp.weixin.qq.com/s/VW0QCuW-ONEH-TRB2WF4GQ) 這一篇筆記介紹 es 的基礎查詢。 基礎查詢包括很多,比如排序,類似資料庫 limit 的操作,like 操作,與或非 ......

    uj5u.com 2023-07-03 07:47:23 more
  • 選讀SQL經典實體筆記01_檢索和排序

    Oracle能夠讓你在無須修改非Null值資料的情況下方便地把Null值排到最前面或者最后面,其他資料庫得添加一個輔助列 ......

    uj5u.com 2023-07-02 08:10:51 more
  • Spark中RDD的Transformation算子

    # RDD的Transformation算子 ## map map算子的功能為做映射,即將原來的RDD中對應的每一個元素,應用外部傳入的函式進行運算,回傳一個新的RDD ```Scala val rdd1: RDD[Int] = sc.parallelize(List(1,2,3,4,5,6,7,8 ......

    uj5u.com 2023-07-02 08:10:29 more
  • 選讀SQL經典實體筆記01_檢索和排序

    Oracle能夠讓你在無須修改非Null值資料的情況下方便地把Null值排到最前面或者最后面,其他資料庫得添加一個輔助列 ......

    uj5u.com 2023-07-02 08:09:22 more