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


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

查看所有标签

猜你喜欢:

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

矩阵计算

矩阵计算

Gene H. Golub、Charles F. Van Loan / 袁亚湘 / 人民邮电出版社 / 2009 / 89.00元

本书是国际上数值计算方面的权威著作,有“圣经”之称。被美国加州大学、斯坦福大学、华盛顿大学、芝加哥大学、中国科学院研究生院等很多世界知名学府用作相关课程的教材或主要参考书。 本书系统地介绍了矩阵计算的基本理论和方法。书中的许多算法都有现成的软件包实现,每节后还附有习题,并有注释和大量参考文献,非常有助于自学。一起来看看 《矩阵计算》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试