完全兼容DynamoDB协议!GaussDB(for Cassandra)为NoSQL注入新活力

完全,兼容,dynamodb,协议,gaussdb,for,cassandra,nosql,注入,活力 · 浏览次数 : 41

小编点评

## Summary of the content: This document provides an overview of Huawei Cloud GaussDB(for Cassandra) and its compatibility with DynamoDB. **What is DynamoDB?** DynamoDB is a fully managed NoSQL database service for various applications like e-commerce, social media, gaming, and IoT. **What is GaussDB(for Cassandra)?** GaussDB(for Cassandra) is a distributed NoSQL database service that offers compatibility with DynamoDB, allowing users to migrate existing DynamoDB applications to GaussDB with minimal effort. **Key points about the compatibility:** * Supports DynamoDB's syntax and data models. * Provides seamless migration from DynamoDB to GaussDB(for Cassandra). * Offers cost-effective solutions with lower DynamoDB usage costs. * Provides the same high performance and reliability as DynamoDB. * Supports multiple data models and operations. * Automates backup, monitoring, and management. **Benefits of using GaussDB(for Cassandra):** * Avoids migrating complex DynamoDB applications. * Provides high performance and scalability. * Offers a cost-effective alternative to DynamoDB. * Enhances development and maintenance efficiency. **How to use GaussDB(for Cassandra)?** Contact Huawei Cloud support to enable DynamoDB compatibility features. Use the boto3 client library to interact with the database. Data models and operations are identical to DynamoDB. **Conclusion:** GaussDB(for Cassandra) is a powerful and scalable NoSQL database that provides a cost-effective solution for users migrating from DynamoDB. Its compatibility makes it an excellent choice for various NoSQL applications, including e-commerce, social media, and gaming.

正文

摘要: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元开发者礼包!

欢迎关注“华为云开发者联盟”公众号,获取大会议程、精彩活动和前沿干货。

 

点击关注,第一时间了解华为云新鲜技术~

与完全兼容DynamoDB协议!GaussDB(for Cassandra)为NoSQL注入新活力相似的内容:

完全兼容DynamoDB协议!GaussDB(for Cassandra)为NoSQL注入新活力

摘要:DynamoDB是一款托管式的NoSQL数据库服务,支持多种数据模型,广泛应用于电商、社交媒体、游戏、IoT等场景。 本文分享自华为云社区《完全兼容DynamoDB协议!GaussDB(for Cassandra)为NoSQL注入新活力》,作者:GaussDB 数据库 。 DynamoDB是一

云数据库 GaussDB(for Influx) 解密第十一期:让智能电网中时序数据处理更高效

摘要:GaussDB(for Influx)是一款基于计算存储分离架构,完全兼容 InfluxDB 生态的云原生时序数据库。 本文分享自华为云社区《云数据库 GaussDB(for Influx) 解密第十一期:让智能电网中时序数据处理更高效》,作者:华为云数据库 GaussDB(for Influ

[转帖]一天一个 Linux 命令(1):vim 命令

本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/77 一、简介 vim 是 Linux 操作系统中最通用的全屏幕文本编辑器,是 vi 的增强版(vi iMproved),与 vi 完全兼容,且扩充了很多功

[转帖]15分钟了解TiDB

由于目前的项目把mysql换成了TiDb,所以特意来了解下tidb。其实也不能说换,由于tidb和mysql几乎完全兼容,所以我们的程序没有任何改动就完成了数据库从mysql到TiDb的转换,TiDB 是一个分布式 NewSQL (SQL 、 NoSQL 和 NewSQL 的优缺点比较 )数据库。它

[转帖]15分钟了解TiDB

https://zhuanlan.zhihu.com/p/338947811 由于目前的项目把mysql换成了TiDb,所以特意来了解下tidb。其实也不能说换,由于tidb和mysql几乎完全兼容,所以我们的程序没有任何改动就完成了数据库从mysql到TiDb的转换,TiDB 是一个分布式 New

Minio架构简介

简介 Minio是一个go编写基于Apache License v2.0开源协议的对象存储系统,是为海量数据存储、人工智能、大数据分析而设计,它完全兼容Amazon S3接口,十分符合存储大容量的非结构化数据从几十kb到最大5T不等。是一个小而美的开源分布式存储软件。 特点 简单、可靠:Minio采

Mysql到TiDB迁移,双写数据库兜底方案

作者:京东零售 石磊 TiDB 作为开源 NewSQL 数据库的典型代表之一,同样支持 SQL,支持事务 ACID 特性。在通讯协议上,TiDB 选择与 MySQL 完全兼容,并尽可能兼容 MySQL 的语法。因此,基于 MySQL 数据库开发的系统,大多数可以平滑迁移至 TiDB,而几乎不用修改代

[转帖]HTTP2 Sampler for JMeter

https://www.cnblogs.com/a00ium/p/10462572.html 今天开发大大说能不能帮忙压一下HTTP2的链接,便去查了一下相关的东西。 HTTP 2.0 的出现,相比于 HTTP 1.x ,大幅度的提升了 web 性能。在与 HTTP/1.1 完全语义兼容的基础上,进

基于Bootstrap Blazor开源的.NET通用后台权限管理系统

前言 今天大姚给大家分享一个基于Bootstrap Blazor开源的.NET通用后台权限管理系统,后台管理页面兼容所有主流浏览器,完全响应式布局(支持电脑、平板、手机等所有主流设备),可切换至 Blazor 多 Tabs 模式,权限控制细化到网页内任意元素(按钮、表格、文本框等等):Bootstr

宝兰德应用服务器软件与华为云GaussDB完成兼容互认证

摘要:北京宝兰德软件股份有限公司携手华为云完成宝兰德应用服务器软件9.5与GaussDB数据库兼容性测试,并获得华为云授予的技术认证书。 本文分享自华为云社区《宝兰德应用服务器软件与华为云GaussDB完成兼容互认证》,作者:GaussDB 数据库。 近日,北京宝兰德软件股份有限公司(简称:宝兰德)