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

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

内容简介:我是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


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

查看所有标签

猜你喜欢:

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

格蠹汇编

格蠹汇编

张银奎 / 电子工业出版社 / 2013-3-1 / 66.00元

《格蠹汇编——软件调试案例集锦》以案例形式讨论了使用调试技术解决复杂软件问题的工具和方法。全书共36章,分为四篇。前两篇每章讲述一个有代表性的真实案例,包括从堆里抢救丢失的博客,修复因误杀而瘫痪的系统,徒手战木马,拯救“发疯”的windows7,经典阅读器的经典死锁,拯救挂死的powerpoint,转储分析之双误谜团,是谁动了我的句柄,寻找系统中的“耗电大王”,解救即将被断网的系统,转储分析之系统......一起来看看 《格蠹汇编》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

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

HEX CMYK 互转工具