Amazon web services 具有多个标记的DynamoDB查询
我对DynamoDB相当陌生,目前我们正在考虑使用DynamoDB将现有项目迁移到无服务器应用程序,我们希望从RDMS数据库中调整以下设置: 表:Amazon web services 具有多个标记的DynamoDB查询,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,我对DynamoDB相当陌生,目前我们正在考虑使用DynamoDB将现有项目迁移到无服务器应用程序,我们希望从RDMS数据库中调整以下设置: 表: 项目(ProjectID) 文件(FileID,ProjectID,Filename) 标记(文件ID、标记) 我们希望使用DynamoDB进行查询,以获取具有一个或多个标记(按标记)的特定项目的所有文件。在RDMS中,此查询将非常简单,如下所示: SELECT*FROM Files JOIN Tags ON Tags.FileID=Files.
- 项目(ProjectID)
- 文件(FileID,ProjectID,Filename)
- 标记(文件ID、标记)
SELECT*FROM Files JOIN Tags ON Tags.FileID=Files.FileID WHERE Files.projectd=?PROJECT AND Tags.Tag=?Tag_1或Tag_2…
目前,我们有以下DynamoDB设置(但仍可以更改):
- 项目(ProjectID[HashKey],…)
- 文件(ProjectID[HashKey]、FileID[RangeKey]、…)
也请考虑项目条目的数量是巨大的(在1000到30000之间)和每个项目的文件数量(在50和100之间),并且查询应该非常快。
如何使用DynamoDB查询实现这一点,最好不使用筛选表达式,因为它们是在数据选择之后应用的?如果表文件可以有一个StringSet标记作为列,这将是完美的,但我想这不能用于高效的DynamoDB查询(因此不使用DynamoDB扫描),因为DynamoDB索引只能是String、Binary和Number类型,而不是StringSet类型?这可能是一个适用于(GSI)的用例吗?有点晚了,刚刚看到这个问题引用了另一个问题 我猜你已经去解决了类似的问题了 DynamoDB表格
- 项目(ProjectID[HashKey],…)
- 文件(ProjectID[HashKey]、FileID[RangeKey]、…)
- 标记(标记[HashKey]、文件ID[RangeKey]、项目ID[LSI排序键])
这是某种数据非规范化,但这就是NoSQL所需要的:-(.例如,如果您的文件要切换到另一个项目,您不仅需要更新文件上的ProjectID,还需要更新所有标记上的ProjectID。这个问题已经问了将近三年了,但它仍然在Google结果中。因此,如果其他人在这里登陆,可能DynamoDB docs的以下页面可以提供帮助。我只是自己找到了它,没有尝试现在还没有,但它看起来很有希望。似乎比这里的其他回复更新,并且显示了一个很好的解决问题的方法