当前位置: 首页 > 知识库问答 >
问题:

DynamoDB按日期选择GSI写入单位

朱啸
2023-03-14

我目前正在创建一个Dynamodb表,其中主键是userId以确保唯一性。但是,我需要根据时间戳选择后排,因为我不知道userID,并且会返回多个用户ID。例如(伪选择)

<代码>从昨天创建日期的表中选择*

为此,我将创建dateCreated的GSI。

dateCreated应该是主键上的排序键,还是作为GSI本身就可以?

其次,一旦检索到这些项,我很可能会更新它们,但是如果我指定GSI应该返回所有属性,那么我真的需要为GSI分配任何写入单元吗?就像我返回所有属性一样,我应该拥有userID,所以理论上我可以使用userID来执行写操作?

在这方面,关于空闲层,我是否可以在理论上用所有25个写单元设置PrimaryKey,然后用所有25个空闲读单元设置GSI?(我认为这实际上可能迫使你至少输入“1”,但你明白了)

我的GSI是否也应该定义排序键?

谢谢

共有2个答案

甄成弘
2023-03-14

>

  • dateCreated不必是主表上的排序键

    是的,ReadCapacityUnits和WriteCapacityUnits也应该为GSI定义。这是将数据从主表复制到GSI所必需的

    我不确定您要使用userId执行的写入操作。DynamoDB将自动将主表中的数据填充到GSI中。你不能直接向GSI写任何东西。但是,您可以直接从GSI读取

    否,排序键在GSI上不是必需的

  • 令狐声
    2023-03-14

    无需将dateCreated设置为表上的排序键,即可将其设置为DateCreatedGSI上的哈希键。仅当您计划在用户ID上查询表并希望所有结果按创建日期排序时,才将其设置为排序键。

    关于读/写吞吐量的问题,您需要了解,尽管“全局二级索引的已配置吞吐量设置与其基表的吞吐量设置是分开的”,但写操作是相互连接的。全局辅助索引上的查询操作使用索引中的读取容量单位,而不是基表。当您放置、更新或删除表中的项目时,该表上的全局辅助索引也会更新;这些索引更新使用索引中的写入容量单位,而不是基表中的写入容量单位因此,是的,除了读取容量之外,您还需要为GSI分配写入容量。有关更多详细信息,请参阅文档:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.ThroughputConsiderations.根据此文档,如果您的GSI上没有足够的写入容量设置,则可以拒绝对表的整个更新:“为了使表写入成功,为表及其所有全局二级索引配置的吞吐量设置必须有足够的写入容量来容纳写入;否则,将限制对表的写入。”

    最后,与主表的情况一样,只有当您关心结果返回给您时的排序方式时,您才应该在GSI上定义排序键。

     类似资料:
    • 问题内容: 快速提问,我有下表 我想将每个月的总数加起来,并按月对总数进行分组。例如, Jan- > 138 Feb-> 88.2 Apr-> 29.84 关于它的任何线索。谢谢 问题答案: 此解决方案将为您提供月份名称作为结果集的列,然后根据需要提供总数。

    • 问题内容: 我有一个“事件日历”表,我想选择日期等于或大于今天的事件。当我使用以下SELECT语句时,它仅在将来检索事件(> NOW()): 我将如何选择今天或将来的所有事件? 谢谢 问题答案: 您正在寻找: 或者:

    • 我已经记录了用于从日期选择器中选择日期的selenium代码。在运行测试用例时,日期选择器会弹出并正确突出显示所选日期。但是没有选择日期。代码如下所示:- 此异常仅出现在记录的代码中。我使用的是selenium-server-standalone-2 . 45 . 0 jar。

    • 我有一个DynamoDB表,存储一些程序的执行,这是它的样子: 此表有两种查询方案: 按程序名和执行id查询(简单) 执行第二次查询的正确方法是什么? 我知道我需要创建一个GSI来做到这一点,但这个GSI应该是什么样子? 我正在考虑将属性分成两个,如下所示: 因此,我可以使用StartMonthYear作为分区键,StartDayTime作为排序键来定义GSI。 这种方法唯一的问题是,我必须在我的

    • 日期选择组件。滚动选择交互,基于 Scrollpicker 实现。 Usage 全部引入 import { Datepicker } from 'beeshell'; 按需引入 import Datepicker from 'beeshell/dist/components/Datepicker'; Examples Datepicker 与 BottomModal 组合应用 Code 详细

    • HTML与它的外观截图一起粘贴,如下所示。 HTML: 我曾经试过 甚至试图等待命令以使定位器被找到但没有成功。 WebDriverWait(驱动程序,100)。直到(预期条件.element可禁用)(By.css选择器 两者都不起作用,因为它无法识别元素。有人能帮我吗。如果可能,我们甚至可以单击“上一个”和“下一个”,以便我们也可以单击一些以前的日期吗?