node.js – 如何在Amazon Dynamodb中使用聚合函数

栏目: Node.js · 发布时间: 6年前

内容简介:我是Dynamodb的新手我在DynamoDB中有一个表,里面有超过10万个项目.此外,此表经常刷新.在这张桌子上,我希望能够在关系数据库世界中做类似的事情:我如何从表中获得最大值.DynamoDB是NoSQL数据库,因此对查询数据的方式非常有限.通过直接调用DynamoDB API,无法从表中执行聚合(如max value).您将不得不寻找不同的工具和方法来解决这个问题.您可以考虑许多可能的解决方案:

我是Dynamodb的新手我在DynamoDB中有一个表,里面有超过10万个项目.此外,此表经常刷新.在这张桌子上,我希望能够在关系数据库世界中做类似的事情:我如何从表中获得最大值.

DynamoDB是NoSQL数据库,因此对查询数据的方式非常有限.通过直接调用DynamoDB API,无法从表中执行聚合(如max value).您将不得不寻找不同的 工具 和方法来解决这个问题.

您可以考虑许多可能的解决方案:

执行表扫描

你的桌子上有超过10万件物品,这可能是一个非常糟糕的主意.表扫描将读取每个项目,您可以让应用程序端逻辑识别最大值.这真的不是一个可行的解决方案.

DynamoDB中的物化指数

根据您的使用情况,您可以使用DynamoDB流和Lambda函数在单独的DynamoDB表中维护索引.如果您的表是只写的,没有更新而没有删除,您可以将最大值存储在单独的表中,并且当插入新记录时,您可以比较它们并执行必要的更新.

这种方法在某些受限制的情况下是可行的,但不是一种通用的解决方案.

使用Amazon Redshift执行分析

DynamoDB并不意味着进行最大化等分析操作,而Redshift是一个非常强大的大数据平台,可以轻松执行这些类型的计算.与DynamoDB索引类似,您可以使用DynamoDB流将数据发送到Redshift,因为记录被插入以维护表的近实时副本以用于分析目的.

如果您正在寻找更多离线或分析解决方案,这是一个不错的选择.

使用Elasticsearch执行分析

虽然DynamoDB是一个强大的NoSQL解决方案,对数据持久性有很强的保证,但Elasticsearch提供了一种非常灵活的查询方法,允许对最大和这些聚合等查询进行实时切片和切块.与上述解决方案类似,您可以使用DynamoDB流将记录插入更新和删除实时发送到Elasticsearch索引中.

如果您想坚持使用DynamoDB但需要一些额外的查询功能,这确实是一个很好的选择,尤其是在使用AWS ES服务时,它将为您完全管理Elasticsearch集群.重要的是要记住,Elasticsearch不会替换您的DynamoDB表,它只是相同数据的易于搜索的索引.

只需使用 SQL 数据库

显而易见的解决方案是,如果您有SQL要求,那么从基于NoSQL的系统转移到基于SQL的系统. AWS的RDS产品提供托管解决方案.虽然DynamoDB提供了很多好处,但如果您的用例将您带入SQL解决方案,最简单的方法可能是不打击它并只是改变解决方案.

这并不是说基于SQL的解决方案或基于NoSQL的解决方案更好,每种方法都有优缺点,而且根据具体的使用情况而有所不同,但它绝对是一个需要考虑的选择.

翻译自:https://stackoverflow.com/questions/36866902/how-to-use-aggregate-functions-in-amazon-dynamodb


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

菜鸟侦探挑战数据分析

菜鸟侦探挑战数据分析

[日] 石田基广 / 支鹏浩 / 人民邮电出版社 / 2017-1 / 42

本书以小说的形式展开,讲述了主人公俵太从大学文科专业毕业后进入征信所,从零开始学习数据分析的故事。书中以主人公就职的征信所所在的商业街为舞台,选取贴近生活的案例,将平均值、t检验、卡方检验、相关、回归分析、文本挖掘以及时间序列分析等数据分析的基础知识融入到了生动有趣的侦探故事中,讲解由浅入深、寓教于乐,没有深奥的理论和晦涩的术语,同时提供了大量实际数据,使用免费自由软件RStudio引领读者进一步......一起来看看 《菜鸟侦探挑战数据分析》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具