扩大云:更快,DynamoDB更灵活查询

||评论(

今天,我激动地宣布,我们扩展了的查询功能DynamoDB。我们称之为最新的能力本地二级索引(LSI)。虽然DynamoDB已经允许您基于表的主键执行低延迟的查询,即使是在巨大的规模上,但LSI现在将使您能够对表中的其他属性(或列)执行快速查询。这使您能够执行更丰富的查询,同时仍然满足响应性强、可伸缩的应用程序的低延迟要求。

我们的客户一直在要求我们扩大DynamoDB的查询功能,我们很高兴看到他们如何使用LSI。米洛Milovanovic的,华盛顿邮报首席系统架构师报道称,“数据库性能和可扩展性是在任何设备上给我们的34+万读者提供新服务的关键。出于这个原因,我们选择了DynamoDB电源我们的流行社交阅读器应用并现场体验socialreader.com。本地二级指标所提供的快速,灵活的查询性能将使我们进一步优化我们的社会情报,并不断改进我们的读者的经验。”

正如我在a中所讨论的最近的一篇博客在构建了多年的高可伸缩性和高可用性的电子商务和云计算服务之后,Amazon已经认识到,只有当应用程序真正需要成熟的关系数据库的复杂查询、表连接和事务功能时,才应该使用关系数据库。在所有其他情况下,当不需要这种关系特性时,我们默认使用DynamoDB,因为它提供了一种可用性更强、可伸缩性更强、最终成本更低的解决方案。

当DynamoDB去年推出时,它提供了简单但强大的查询功能。客户可以选择两种类型的键进行主索引查询:简单哈希键和复合哈希键/范围键:

  • 简单的哈希键给DynamoDB分布式哈希表的抽象。密钥被散列在不同的分区,以优化工作负载分布。有关此的更多背景,请阅读原来发电机纸

  • 复合散列键与范围键允许开发人员创建主键即两个属性,“散列属性”和复合“范围属性”。必威体育精装版app官网当针对一个复合键查询,哈希属性需要被唯一地匹配,但是可以为所述范围属性来指定的范围内操作:例如从沃纳在过去24小时内所有订单,或通过个别玩家在过去的24小时玩过的所有游戏。

通过LSI,我们扩展了DynamoDB现有的查询功能,支持更复杂的查询。客户现在可以在非主键属性上创建索引,并快速检索哈希分区中的记录(即,在主键中共享相同哈希值的项)。

自从我们推出DynamoDB以来,我们看到许多数据库客户将他们的应用程序从传统的分片关系数据库部署迁移到DynamoDB。其中一些开发人员已经习惯了关必威体育精装版app官网系数据库提供的广泛查询灵活性,他们要求我们向DynamoDB添加更多的查询功能。这些开发人员必威体育精装版app官网现在会发现LSI很有用,也很熟悉它,因为它使他们能够索引非主键属性,并快速查询哈希分区中的记录。LSI使更多的应用程序受益于DynamoDB的可伸缩性、可用性、弹性、低成本和最小的操作开销。

什么是本地二级索引(LSI)?

举个例子,比方说,你的社交游戏应用程序跟踪玩家活动。数据库的可扩展性是社交游戏,它可以在发射后很快吸引了数百万的玩家非常重要的。一致的,坚如磐石的低延迟数据库性能也很重要,因为社交游戏具有极强的互动。让我们来看看DynamoDB将如何支持社交游戏,然后添加本地二级索引的好处。

DynamoDB存储数据库表,这是个别项目的集合的信息。每个项目的数据属性的集合。该项目是类似于电子表格中的行,并且属性类似于列。每个项目由唯一一个主键,它是由它的第一个的两个属性的,称为散列和范围确定的。

DynamoDB查询指的是哈希和范围内的项目,你想访问属性。本地二级指标让你为哈希键与除所述范围键其它属性查询到一起。LSI查询是他们总是引用相同的哈希键标准查询感地方。

根据你的游戏设计,可以自行决定是否记录每个玩家的最终得分,他每场比赛结束。您将跟踪至少三个数据:

在DynamoDB,你的玩家活动表可能看起来像这样:

假设您总是想要向玩家展示他们最近10场比赛的历史。这是DynamoDB的天然选择。通过设置一个DynamoDB表,以PlayerName作为散列键,GameStartTime作为范围键,您可以快速运行查询,如“Show me the last 10 games By John”。但是,一旦像这样设置了表,就无法对其他属性(如“Score”)进行有效的查询。那是在大规模集成电路出现之前。现在,您可以使用LSI在“Score”属性上定义一个二级索引,并快速运行诸如“显示John的所有前5分”这样的查询。查询结果会根据分数自动排序。

随着大规模集成电路,应用程序可以得到它需要更迅速和有效地比以前的数据。没有更多的下载和通过结果排序。通过使用LSI,你现在可以把那个工作DynamoDB。最重要的是,它这样做的同时保护我们的客户需求的可扩展性和性能。与一个或多个LSI的表会表现出相同的延迟和吞吐量的性能,那些没有任何索引。

从DynamoDB

增强查询灵活性,本地辅助索引提供装置DynamoDB可支持的工作负荷的更广阔的范围。正如我前面提到的,因为我们的应用程序的可伸缩性和可用性是亚马逊至关重要的,我们已经配备了DynamoDB,开始为每一个不需要如Oracle或MySQL关系数据库的灵活性应用程序的默认选择。客户告诉我们,他们正在采取同样的做法,特别是在数字广告,社交游戏和连接的设备的应用领域需要高可用性,无缝扩展性,可预测的性能和低延迟是非常关键的。

重定位平台AdRoll的首席架构师瓦伦蒂诺•沃朗格尼表示:“我们使用DynamoDB,每天在网络和FBX上获得超过70亿次的印象。AdRoll的竞价系统可以访问存储在DynamoDB中的超过10亿个cookie配置文件,并且可以看到统一的低延迟响应。此外,DynamoDB在AWS所有地区的可用性,使我们的精益团队能够满足全球各国实时招标对低延迟的严格要求,而不必担心基础设施管理。“在过去,我也强调了来自Madwell和Shazam等客户的其他广告应用,这些应用的无缝规模、高可用性、可预测性能和低延迟非常重要。”

Scopely社交游戏平台的首席技术官Ankur Bulsara说,LSI将使他的团队能够更广泛地部署DynamoDB。他说:“我们在任何可能的地方默认使用DynamoDB,并且在某些类型的查询中也使用MySQL。”“我们非常高兴地看到,本地二级索引将允许我们进一步从不断增长的堆栈中删除传统rdmse。”DynamoDB是未来,与大规模集成电路,未来是非常光明的。“在过去,我强调了许多其他游戏客户,如电子艺界和Halfbrick工作室。游戏客户看重DynamoDB的无缝规模,因为成功的游戏可以在几周内从少数用户扩展到数千万用户。

如今,当地的二级指标必须在您创建DynamoDB表的时间来定义。在未来,我们计划为您提供添加或删除LSI对于现有的表的能力。如果你想立即装备现有DynamoDB表,本地二级索引,可以使用弹性的Map Reduce从现有的表导出数据,并使用LSI将其导入到一个新表中。

你可以开始使用DynamoDB和本地二级索引与DynamoDB自由层马上 - LSI可今天除了政府云计算市场的所有AWS地区。

欲了解更多信息,请参阅在相应的主题Amazon DynamoDB开必威体育精装版app官网发人员指南

评论

博客评论Disqus