9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

Amazon 提升了 DynamoDB NoSQL 数据库对 JSON 的支持

  • 2014-11-02
  • 本文字数:1621 字

    阅读完需:约 5 分钟

上周,Amazon Web Service 团队对他们的 DynamoDB NoSQL 数据库服务进行了更新。这次更新改善了 DynamoDB 对 JSON 的支持,提高了 DynamoDB 的可扩展性,并且增加了免费用量。开发者现在不仅拥有 25GB 的免费存储空间,还可以使用 AWS SDK 对较大的 JSON 文档进行存储、索引、查询和更新。

AWS发表了一篇博文,表明了他们对DynamoDB 的想法——传统上是一个面向键-值的NoSQL 存储,现在具有了类似 MongoDB 的,面向文档存储的功能。

AWS SDK__ 包含了这种新型面向文档支持的实现,并且在实现中利用到了一些 __DynamoDB__ 的新数据类型。对文档的支持(目前可使用的有:Java.NETRuby__ 的 __SDK,以及基于浏览器的 __JavaScript SDK__ 的一个扩展)简化了一些操作,如将 __JSON__ 数据或者本地语言对象映射成 __DynamoDB__ 原生数据类型,以及支持基于文档结构的查询。

通过这次更新,DynamoDB__ 已经是一个完整的 __ 面向文档的存储。通过使用 __AWS SDK,开发者可以容易地将 __JSON__ 文档存储在 __DynamoDB__ 表中,并保留原文档的复杂结构和可能的嵌套_“形状。通过构建一层非常薄的转化层,新的数据类型也可以用于存储其他结构化的格式,如 __HTML__ 或者 __XML。_

不同语言的 AWS SDK 实现这种新能力的方式是不一样的。应该注意的是,AWS 只使用 JSON 作为一个传输协议,并不会将数据本身存储为JSON 文档 Java SDK 支持直接将 JSON 格式的字符串加载成一条 DynamoDB 数据库记录,而.NET SDK 要求开发者使用(更新过的)对象模型来构建一个文档。除了为对象模型提供 Number、String 和 Binary 数据类型,AWS 还引入了新的面向文档的数据类型:List 和 Map。List 是一个“有序的集合,类似于一个 JSON 数组”。Map 是一个“无序的、名字-值对的集合,类似于一个 JSON 对象”。

一篇博文中,AWS CTO Werner Vogels 追溯了 DynamoDB 的历史,并承认缺乏 JSON 的支持对开发者所产生的影响。

DynamoDB__ 从一开始就支持 __ 存储 __JSON__ 文档,但是除了存储和获取这两个操作之外再要进行其他的文档操作是非常困难的。开发者无法直接访问一个 __JSON__ 文档中深度嵌套的属性,而缺少深度嵌套属性的可见性将剥夺开发者使用 __DynamoDB__ 一些特殊能力的机会。

迄今为止,若想要存储和查询 __JSON_,开发者有两个选择:__a)__ 快速开发的法子是将无法识别的 __JSON__ 数据块直接插入 __DynamoDB__ 中;或者 __b)_将 __JSON__ 对象分解成属性,而这要求额外的编程工作和一些事先的考虑。

DynamoDB 新提供的 JSON 能力不仅可用于存储文档,也可用于查询文档。尽管用户可以通过 AWS UI 控制台查看 JSON 文档,但开发者更感兴趣的是通过 SDK 获取及更新整个或部分文档的能力。AWS 将文档大小的限制从64KB 扩大到400KB,并且放松了比例的限制,用户在单一操作中对“capacity units”的量不仅可以做翻倍或者减半的操作,还可以做其他比例的变更操作。Amazon 也增加了DyamoDB 可免费使用的容量:相比过去100MB 存储空间和10 个读 capacity units ,DynamoDB 用户现在可以免费获得 25GB 的存储空间和 25 个读 / 写 capacity units。根据 AWS 的说明,这已足够用于“运行一个支持 15,000 位用户的手机游戏,或者运行一个日展现 500,000 次的广告技术平台”。

开发者对 JSON 友好的应用服务的需求在不断地增加,这次 AWS 的更新很可能是一个响应。如GigaOm 所报道的,这是一个从成熟的服务(如MongoDB)以及Google 和 Microsoft 新提供的服务手中夺取势头的机会。也许是对这些正在解决大规模问题的 NoSQL 产品进行了仔细调研,Vogels 宣称“现在,开发者不必在优化了扩展性和优化了灵活性的数据存储之间进行选择了。”

查看英文原文: Amazon Boosts JSON Support in DynamoDB NoSQL Database


感谢杨赛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-11-02 13:222557

评论

发布
暂无评论
发现更多内容

Claude 3.5:向人类般计算机操作的进步

测吧(北京)科技有限公司

测试

千万级的大表,如何做性能调优?

不在线第一只蜗牛

数据库 oracle

AI Agent:软件测试自动化的新纪元

测吧(北京)科技有限公司

测试

2025年,一起与具身智能领域“大牛”聊行业现状和未来趋势

机器人头条

科技 大模型 人形机器人 具身智能

StarRocks 3.4 发布--AI 场景新支点,Lakehouse 能力再升级

StarRocks

EloqKV的多线程性能以及跨分片事务测试

晨章数据

数据库 nosql redis NoSQL 数据库

Beanshell 脚本开发实战:提升 JMeter 脚本效率与灵活性 霍格沃兹测试开发 霍格沃兹测试开发​

测吧(北京)科技有限公司

测试

ONES 2024 年度回顾:向下扎根,向上生长

万事ONES

用数据说话!我国产业数字化发展现状大揭秘,如何进入未来产业发展的快车道?

博文视点Broadview

Java-Beanshell 语法与内置对象解析:如何利用 vars、ctx、prev 优化脚本

测吧(北京)科技有限公司

测试

深入 JMeter 分布式加压机制:配置与性能优化技巧

测吧(北京)科技有限公司

测试

用Golang写了个通用路由器,除了能路由HTTP协议外,还能路由Websocket/Tcp/Udp等协议,欢迎体验

Drunk

golang router 路由 DCE 通用路由

如何在 JMeter 中自定义 Jar 文件:加解密与扩展功能的实现

测吧(北京)科技有限公司

测试

火语言RPA--云码打码

火语言RPA

为什么软件测试开发需要智能体(AI Agent)?

测吧(北京)科技有限公司

测试

从前沿技术到行业现状,万字长文带你了解具身智能赛道!

机器人头条

科技 大模型 人形机器人 具身智能

DeepSeek-V3模型对软件测试行业的影响

测吧(北京)科技有限公司

测试

JMeter 与持续集成:自动化测试与压测的无缝对接

测吧(北京)科技有限公司

测试

JMeter 调试技巧:从错误日志到性能瓶颈定位的全面攻略

测吧(北京)科技有限公司

测试

KubeEdge边缘设备管理系列(三):Mapper-Framework设计与实现

华为云原生团队

云计算 容器 云原生

10 分钟搞定分布式选举 Bully 算法

俞凡

golang 算法 分布式系统

JMeter 分布式压测:实现大规模压力测试的最佳实践

测吧(北京)科技有限公司

测试

行业热点丨低空飞行eVTOL的关键技术与发展趋势

Altair RapidMiner

AI 无人机 仿真 智能制造 航空航天

结合LangChain实现网页数据爬取

测吧(北京)科技有限公司

测试

抖音AI分身:如何先人一步,构建AI时代商业闭环?

ToB行业头条

抖音 AI Agent

DeepSeek-V3模型:软件测试智能化的新篇章与挑战

测吧(北京)科技有限公司

测试

JMeter 脚本开发与优化:解锁 Beanshell 在性能测试中的强大功能

测吧(北京)科技有限公司

测试

2024年,这些行业领军企业都选择 ONES

万事ONES

全球人形机器人行业2024年度汇总和行业前瞻报告:具身智能技术、人形机器人与商业化分析

机器人头条

科技 大模型 人形机器人 具身智能

Amazon提升了DynamoDB NoSQL数据库对JSON的支持_亚马逊云科技_Richard Seroter_InfoQ精选文章