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

这篇具有很好参考价值的文章主要介绍了完全兼容DynamoDB协议!GaussDB(for Cassandra)为NoSQL注入新活力。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要: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.toymoban.com/news/detail-515734.html

到了这里,关于完全兼容DynamoDB协议!GaussDB(for Cassandra)为NoSQL注入新活力的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初识华为云数据库GaussDB for openGauss

    01 前言 GaussDB是华为自主创新研发的分布式关系型数据库。该产品具备企业级复杂事务混合负载能力,同时支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告

    2024年02月07日
    浏览(49)
  • 即时通讯系统为什么选择GaussDB(for Redis)?

    摘要:如果你需要一款稳定可靠的高性能企业级KV数据库,不妨试试GaussDB(for Redis)。 每当网络上爆出热点新闻,混迹于各个社交媒体的小伙伴们全都开启了讨论模式。一条消息的产生是如何在群聊中传递的呢?让我们一起来探索即时通讯系统(IM)的原理。 当你在群聊“相亲相

    2023年04月21日
    浏览(40)
  • 433发射SOC芯片 XL117PS,集成编码器,可完全兼容 1527编码产品

    XL117PS 是集成编码器的真正单晶圆全新一代 OOK 发射 SOC 芯片,可完全兼容 1527编码产品,支持常用的315Mhz/433.92Mhz 频率,拥有 4 个独立按键和 6 个组合按键,大功率输出使通信距离更远,零功耗待机模式可使电池用的更加持久。 芯片除支持 20bits 地址位的 1527 兼容格式外,还支

    2024年04月13日
    浏览(37)
  • “warning NU1701: 项目依赖包与项目框架net6.0不完全兼容“

    一个Net6的Web项目,有一个警告: 在项目文件里,这样 在nuget包管理器界面,看到 Microsoft.AspNet.WebApi.Core 的信息,其依赖于 Microsoft.AspNet.WebApi.Client ,且其也满足 。NetStandard V2。0 的,但看这个 Client ,其又依赖于NewtonnSoft.Json的旧版本,从而导致依赖链最终到了 NetFramework4.* 的

    2024年02月15日
    浏览(63)
  • CYUSB3014设计方案|替代CYUSB3014芯片|方寸微T630可完全替代兼容CYPRESS CYUSB3014

    CYUSB3014 设计方案 | 替代 CYUSB3014 芯片 | 方寸微 T630 可完全替代兼容 CYPRESS CYUSB3014 赛普拉斯 CYPRESS CYUSB3014 是一款 USB 3.0 PHY 芯片,广泛应用于视频转接类接口设计,比如各种摄像机、采集卡、扫描仪、医疗成像设备、视频监控等产品   方寸微 T630 ,也是一款 USB 3.0 PHY 芯片,完

    2024年02月04日
    浏览(45)
  • 完全卸载 Office 2019 for Mac

    一、 删除 Office 2019 for Mac 应用程序 打开 Finder,然后单击“应用程序”。 按住 Command 命令 的同时单击以选择所有 Office 2019 for Mac 应用程序。 按住 Ctrl 的同时单击或右键单击所选应用程序,然后单击“移到废纸篓”。 二、 资源库中删除支持文件 打开 Finder,单击“前往”“电

    2024年02月05日
    浏览(48)
  • WIN11家庭中文版使用ENSP+VirtualBox启动AR失败40错误+未完全关闭hyper-V,以及安装VirtualBox兼容性问题

    使用版本: eNSP 1.3.00.100+VirtualBox 5.2.44+WinPcap_4_1_3+Wireshark最新版 。 win11系统最好按照上述版本安装,VirtualBox不要安装更高版本,否则可能出现不兼容情况,Wireshark版本要求还好, 安装顺序是VirtualBox 5.2.44+WinPcap_4_1_3+Wireshark  ----  eNSP 。 附安装教程链接及安装包,Wireshark版本有

    2024年02月13日
    浏览(54)
  • metaRTC新版本重构ICE全面兼容ICE协议

    metaRTC支持P2P的ICE不完善,老版本只实现了stun和turn,缺乏交互式连接实现,新版本重构ICE部分,实现了交互式连接,全面兼容ICE-FULL/ICE_LITE规范。 通信前先搜集本地多个网卡的IP和端口号(canidate) 搜集stun的candidate以及对应的公网IP和端口号。 访问TURN server得到所有中继cand

    2023年04月10日
    浏览(35)
  • 提问的艺术 for CHATGPT prompt 技术工程高质量答案完全指南

    关于 prompt 技巧的全面指导 前言 第 1 章:Prompt 工程技术介绍 什么是 Prompt 工程? 第 2 章:指令 Prompt 技术 示例: 第 3 章:角色 Prompt 第 4 章:标准 Prompt 第 5 章:零、一和少量样本 Prompt 第 6 章:“让我们想一想”Prompt 第 7 章:自我一致性 Prompt 第 8 章:种子词 Prompt 第 9 章

    2024年02月08日
    浏览(63)
  • 微信小程序隐私协议自定义页面(弹窗)开发流程以及低版本兼容

    这里我选择的是全局监听,进入小程序就会监控用户有没有同意,没有则进行弹窗,不同意则关闭,这个逻辑可以根据自己需要随便修改。 发现有很多人根据自己调试基础库来排查自己涉不涉及,你的小程序是否涉及隐私协议整改,还是看有没有调用涉及隐私接口,如果有,

    2024年01月16日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包