热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DynamoDB最佳实践,用于查询具有少量值的属性

如何解决《DynamoDB最佳实践,用于查询具有少量值的属性》经验,为你挑选了1个好方法。

我在DynamoDB中有一个包含如下属性的表:

OrderId,OrderJson,OrderStatus.

订单状态的值可以是0或1.我需要能够更新指定订单的状态,还可以根据状态字段获取订单.其中一个选项是使用扫描,另一个选项是使用状态为分区键的辅助索引,但状态字段具有较小的值范围.请建议描述要求的最佳做法是什么?谢谢!



1> tleef..:

我不会选择扫描,因为除非您的订单很少,否则它不具有成本效益或特别有效.

简而言之,您在全球二级索引中处于正确的轨道上.(我假设你在谈论全球二级索引.还有本地二级索引,但我不知道这些对这个案例有多大帮助.

无论如何,我会创建一个GSI,其中OrderStatus作为Hash键,OrderId作为Range键.但是,有几件事需要注意.

1)写入吞吐量.请记住,具有相同OrderStatus的订单将写入GSI上的同一磁盘.这就是Dynamo的工作方式,使用相同Hash密钥的文档会转到同一个地方.这意味着无论您为表设置的写入吞吐量是多少,单个磁盘上的写入吞吐量都有一个上限.确保不会超过该上限.

2)读取吞吐量.几乎与写入吞吐量相同但是对于读取.读取限制高于写入限制,但仍需要注意.

3)寻呼.每当使用哈希键查询Dynamo表时,在本例中为OrderStatus,它会自动将响应的大小限制为1 MB.因此,您可能需要发出多个连续的Query请求来读取特定OrderStatus的所有订单.

好消息是所有这些问题都有基本相同的解决方案,"分片".在这种情况下,分片的意思是为OrderStatus添加后缀.例如,如果OrderStatus可以是1或0,则可以创建另一个字段,例如OrderShard,可以是1_0,1_1,1_2,...,1_9,0_0,0_1,0_2,...,0_9.我们基本上只需在0到9之间添加一个随机整数到OrderStatus的末尾,以便在GSI上创建更多可能的Hash密钥值.这意味着您的数据会分散在更多磁盘上,解决1和2,您可以进行并行查询请求,大部分解决3.

现在您将使用OrderShard,而不是使用OrderStatus作为GSI上的Hash密钥.仍然使用OrderId作为Range键.此外,如果每个OrderStatus值10个分片不够,只需增加分片数.例如,在0-99之间添加一个随机数.您需要多少个分片取决于您的规模和吞吐量.


推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 本文介绍了Java中Hashtable的clear()方法,该方法用于清除和移除指定Hashtable中的所有键。通过示例程序演示了clear()方法的使用。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 从相邻元素对还原数组的解题思路和代码
    本文介绍了从相邻元素对还原数组的解题思路和代码。思路是使用HashMap存放邻接关系,并找出起始点,然后依次取。代码使用了HashMap来存放起始点所在的adjacentPairs中的位置,并对重复的起始点进行处理。 ... [详细]
  • 本文介绍了在C#中SByte类型的GetHashCode方法,该方法用于获取当前SByte实例的HashCode。给出了该方法的语法和返回值,并提供了一个示例程序演示了该方法的使用。 ... [详细]
  • HashMap的扩容知识详解
    本文详细介绍了HashMap的扩容知识,包括扩容的概述、扩容条件以及1.7版本中的扩容方法。通过学习本文,读者可以全面了解HashMap的扩容机制,提升对HashMap的理解和应用能力。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
author-avatar
手机用户2602914627
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有