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

如果总是需要键,如何制作稀疏索引?

赵英资
2023-03-14

我对DynamoDB中的某些内容感到非常困惑:

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForLSI.html#GuidelinesForLSI.SparseIndexes

对于表中的任何项,只有当项中存在索引排序键值时,DynamoDB才会写入相应的索引项。如果排序键没有出现在每个表项中,则表示索引稀疏。

[…]

要跟踪未结订单,可以在CustomerId(分区键)和IsOpen(排序键)上创建索引。只有表中定义了等参线的订单才会显示在索引中。

但是,如果您使用备用排序键定义了LSI,那么当您创建新项目时,该备用排序键永远不会为空。因此索引一点也不稀疏,因为我创建的每个项目都将在索引中结束。

我错过了什么?

共有3个答案

高宸
2023-03-14

主键,主键

必须有一个哈希键,并且可以选择有一个排序键。主键必须是唯一的。

全球二级指数

必须具有哈希键,并且可以选择具有排序键。GSI独立于主键索引。

本地二级索引

用于为现有索引提供备用排序键。根据定义,现有索引必须已经具有唯一键,因此LSI不需要有值,因此允许空值。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LSI.html

在DynamoDB表中,每个项的组合分区键值和排序键值必须是唯一的。但是,在本地二级索引中,对于给定的分区键值,排序键值不需要是唯一的。如果本地二级索引中有多个具有相同排序键值的项,则查询操作将返回具有相同分区键值的所有项。在响应中,匹配项不会按任何特定顺序返回。

景建业
2023-03-14

表的排序键不能为null。LSI中使用的字段可以为空。

方博
2023-03-14

所以我终于明白了。我应该澄清我在使用AWS控制台。

我用分区键Gpart和排序键Gsort创建了一个GSI作为测试。我注意到,当我创建一个新项目时,这些字段会自动添加,我不能将它们留空,这就是我遇到的问题。(我会得到错误“一个或多个参数值无效:AttributeValue不能包含空字符串”)

事实证明,我所需要做的就是删除这些字段。

删除任何与GSI或LSI相关的属性后,我可以保存该项,并且可以肯定的是,这些索引只显示存在这些键的项。

 类似资料:
  • 我的文件是: 我有索引字段和,具有唯一的稀疏索引。这意味着我的数据库中总是有唯一的和。 但是对于和字段,它可以有空值(即在将字段插入数据库时缺少字段)。 这在MongoDB v3中运行正常。4.但当我试图在cosmosdb中使用相同的代码插入时,我遇到了错误 cosmosdb是否支持唯一稀疏索引? 我发现这个链接说它不支持。 默认情况下支持这个链接,该链接表示。

  • 问题内容: 我得到了一个1TB的稀疏文件,在Linux上实际上存储了32MB数据。 是否可以“有效地”制作一个软件包来存储稀疏文件?该软件包应解压缩为另一台计算机上的1TB稀疏文件。理想情况下,“软件包”应为32MB左右。 注意:可能的解决方案是使用“ tar”:https : //wiki.archlinux.org/index.php/Sparse_file#Archiving_with_.6

  • 请看示例代码(注意 data 的数组下标): -- http://www.kyne.com.au/~mark/software/lua-cjson.php -- version: 2.1 devel local json = require("cjson") local data = {1, 2} data[1000] = 99 -- ... do the other things ngx.

  • 我正在跟踪粒子到三维晶格中。每个晶格元素都有一个对应于展开的3D数组的索引 我对从S1单元到S2单元的过渡感兴趣。由此产生的过渡矩阵M(S1,S2)人口稀少,因为粒子只能在细胞附近到达。不幸的是,使用几何上接近的展开3D阵列单元的索引可能会在索引上有很大差异。例如,位于彼此顶部(例如z和z 1处)的单元格的索引将按宽度*深度移动。因此,如果我尝试累积得到的2D矩阵M(S1,S2),S1和S2将非常

  • 我正在使用Jax-RS和Jooq。我想知道如何使用稀疏数据实现REST补丁。 比如说我有一些PoJo。我得到了一个JSON补丁(http://www.restapitutorial.com/lessons/httpmethods.html)请求的对象不完整,只包含应该更改的字段。 我该如何编写这样的处理程序? 我试着接受真实的Pojo对象。我的第一个想法是“如果一个字段为空,我就不更新它”。这是我

  • 问题内容: 我发现很难理解如何修复我创建的管道(阅读:很大程度上是从教程中粘贴的)。是python 3.4.2: 当我运行它时,我得到: 这是行。 我已经通过numpy,scipy等尝试了很多解决方案,但是我仍然不知道如何解决它。是的,以前也曾提出过类似的问题,但不是在管道内部。它在哪里,我要申请或? 问题答案: 不幸的是,这两个是不兼容的。A产生一个稀疏矩阵,RandomForestClassi