我们推出DynamoDB去年,以解决提供无缝的可扩展性,不论你是做这十笔交易或十万笔云数据库的需求,同时提供坚如磐石的耐用性和可用性。我们从我们设想DynamoDB一天愿景是满足这一需求,而不限制查询功能,人们开始从数据库的期望。但是,我们也知道,建立一个分布式的数据库,有无限的规模和维持,同时提供丰富灵活的查询功能,可预见的高性能,是在数据库开发中最难的问题之一,并采取了很多的努力和发明从我们的团队必威体育精装版app官网分布式数据库工程师解决。所以,当我们在2012年1月推出,我们提供简单的查询功能,使用哈希主键或复合主键(哈希+范围)。自那时以来,我们一直在努力增加灵活查询。你看到第一次迭代在2013年4月,推出的当地二级索引(LSI)。今天,我很高兴地宣布,DynamoDB的查询功能,从根本上扩大合作推出的全球辅助索引(GSI)。这个新功能允许为DynamoDB表的任何属性(列)建立索引,并在任何表规模上执行高性能查询。

超越键值

先进键值数据存储诸如DynamoDB通过使用主键作为分区键跨节点分发数据实现对松散耦合集群高可扩展性。即使结果查询功能可能比上一个粗略的检查关系数据库的更多限制,它工作得非常好,适用范围广,从DynamoDB的快速增长,并通过应用,显着的:像电子艺界,Scopley,HasOffers,SmugMug的,将AdRoll客户,Dropcam,Digg和许多球队在Amazon.com(云驱动器,零售)。DynamoDB继续接受在游戏,广告,科技,手机,Web应用程序,以及其他地方细分规模和性能是关键工作负载。在Amazon.com,我们越来越默认DynamoDB,而不是使用时,我们并不需要复杂的查询关系数据库,表连接和交易功能,因为它提供了更多的可用,扩展性更强,最终以较低的成本解决方案。

对于先进的键值存储非主键访问,用户必须求助于要么保持一个单独的表或某种形式的分散聚集跨分区查询。这两个选项都不太理想。例如,保持一个单独的表的索引迫使用户以维持主键表和所述索引表之间的一致性。在另一方面,分散聚集查询,为数据集的增长,查询必须分散越来越多,导致一段时间表现不佳。DynamoDB的新的全球辅助索引允许删除此基本限制“向外扩展”指标而没有要求代表开发商的任何簿记。必威体育精装版app官网现在,您可以运行查询在您的DynamoDB表中的任何项目属性(列)。此外,GSI的表现是专为满足DynamoDB的个位数毫秒的延迟 - 你可以将项目添加到用户表与数以千万计的用户提供用户ID作为主键游戏应用,而是基于他们的家乡找回他们,在查询性能丝毫不减。

DynamoDB进修

DynamoDB存储数据库表,这是个别项目的集合的信息。每个项目的数据属性的集合。该项目是类似于电子表格中的行,并且属性类似于列。每个项目由唯一一个主键,它是由它的第一个的两个属性的,称为散列和范围确定的。DynamoDB查询指的是哈希和范围内的项目,你想访问属性。这些查询功能至今都基于默认的主索引和DynamoDB表的可选本地二级指标:

  • 主索引:简单的哈希键和组合散键/量程按键:客户可以从两种类型的主索引查询键的选择。简单的哈希键给DynamoDB分布式哈希表的抽象。密钥被散列在不同的分区,以优化工作负载分布。有关此,请仔细阅读背景原来纸迪纳摩。复合散列键与范围键允许开发人员创建主键即两个属性,“散列属性”和复合“范围属性”。必威体育精装版app官网当针对一个复合键查询,哈希属性需要被唯一地匹配,但是可以为所述范围属性来指定的范围内操作:例如从沃纳在过去24小时内所有订单,或通过个别玩家在过去的24小时玩过的所有游戏。
  • 本地二级索引:当地二级索引允许开发人员创建索引非主键属性和快速检索记录在一个哈希分区必威体育精装版app官网(例如,项目共享相同的散列值的主键):例如,如果有一个用PlayerName DynamoDB表作为散列键和GameStartTime范围键,您可以使用当地二级索引运行高效的查询等其他属性”分数。“查询”显示我约翰的所有前5分“将返回结果自动排序的分数。

什么是全球辅助索引?

全球二级指标让你有效地查询在整个DynamoDB表,而不仅仅是内部的分区作为本地二级索引,使用任何属性(列),即使在DynamoDB表水平缩放以适应您的需求。让我们通过另一种游戏的例子。考虑到跟踪用户和分数为移动游戏应用的表名为GameScores。在GameScores每个项目由一个散列密钥(用户ID)和一系列键(GameTitle)标识。下图显示了如何在表中的项目将被组织。(并非所有的属性示出)

现在假设你想写一个领先的应用程序,以显示最高得分每场比赛。该指定的密钥属性(用户ID和GameTitle)将是非常高效的查询;然而,如果应用程序需要检索仅基于GameTitle GameScores数据,就需要使用扫描操作。随着越来越多的项目加入到表中,所有的数据的扫描会变得缓慢,效率低下,因此很难回答的问题,如

  • 什么是有史以来的游戏“流星放炮”的得分最高?
  • 哪个用户已经为“银河侵略者”的最高得分?
  • 什么是胜与负的最高比例是多少?

为了加快查询速度在非关键属性,你可以指定全局二级索引。例如,您可以创建一个名为GameTitleIndex全局二级索引,以GameTitle的哈希键和最高分数的范围键。由于表的主键属性始终投射到的指标,所述用户ID属性也存在。下图显示了GameTitleIndex指数将是什么样子:

现在,您可以查询GameTitleIndex和容易获得的分数“流星历险”。结果是由一系列关键,最高分数排序。

高效的查询

传统上,数据库已被缩放作为一个整体-tables和索引在一起。虽然这看起来简单,但它掩盖了不同不同类型的查询,因此在不同的索引,这就造成了资源浪费需要的基本的复杂性。随着全球DynamoDB二级指标,你现在可以有许多索引和独立调节的能力。这些索引还提供查询/成本的灵活性,允许每聚类索引被定义的一个自定义的水平。必威体育精装版app官网开发人员可以指定哪些属性应该是“投射”到二级索引,从而更快地访问经常访问的数据,同时避免其他属性额外的读/写成本。

从DynamoDB

全局和本地二级索引提供的增强的查询灵活性意味着DynamoDB可以支持范围更广的工作负载。在设计一个将在AWS云中运行的新应用程序时,首先在选择数据库时查看一下DynamoDB。如果您不需要关系数据库的表连接功能,那么从成本、可用性和性能的角度来看,使用DynamoDB会更好。如果您需要对事务的支持,请使用最近发布的交易库。您还可以使用GSI特性DynamoDB本地用于应用程序的离线开发。必威体育精装版app官网随着您的应用程序变得流行起来,并且从被数千用户使用变成被数百万甚至数千万用户使用,您将不必担心关系数据库中需要应用程序重新架构的应用程序所面临的典型性能或可用性瓶颈。您可以简单地从DynamoDB拨号您的应用程序所需的供应吞吐量,我们将在不影响您的应用程序的性能的情况下处理其余的吞吐量。

Dropcam告诉我们,他们采取了DynamoDB的无缝可扩展性和性能,因为他们继续在基于监控已经成长成为目前互联网上最大的视频平台,一个平台,他们的云创新。随着GSIS,他们没有可扩展性和灵活的查询之间进行选择,而是可以同时获得他们的数据库。游击队的游戏,杀戮地带阴必威体育精装版app官网影秋天的开发人员使用DynamoDB的多人在线排行榜和游戏设置。他们将利用GSIS增加更多的功能,提高数据库的性能。也,加入Bizo是一个B2B数字营销平台,使用DynamoDB进行受众定位。GSIs将启用查找使用进化标准跨多个数据集。

这些只是几个例子,说明GSIS可以帮助,我期待着为我们的客户构建可扩展的企业与DynamoDB。我想申请作家专注于自己的业务逻辑,留下跨越查找属性保持一致,以DynamoDB的繁重工作。要了解更多查看杰夫·巴尔的博客DynamoDB开必威体育精装版app官网发人员指南

评论

博客评论由Disqus