如何在AWS(DynamoDB或SQL)中为性能建立一个双列数据库的索引。
如何在AWS(DynamoDB或SQL)中为性能建立一个双列数据库的索引。
我想要一种高效的方法来存储DynamoDb中的ItemIDs和AttributeIDs以供查询。
有几千个独特的ItemIDs和300个独特的AttributeIDs。
每个ItemID通常与20-100个AttributeIDs相关联。
每个AttributeID与20,000-40,000个ItemIDs相关联。
随着时间的推移,将添加更多的AttributeIDs。
我想要能够查询以下内容:
- 返回与给定的ItemID相关联的AttributeIDs
- 找到与给定的AttributeID相关联的ItemIDs
我的初始解决方案是:
- 在DynamoDB中,创建一个表,其中一个ItemID匹配一个AttributeID。主键将是一个Hash和Range,其中Hash = ItemID,Range = AttributeID。还可以创建一个全局二级索引,Hash和Range,其中Hash = AttributeID,Range = ItemID。
- 与上述方案相同,但使用SQL。然而,这将导致大约900万个条目,对性能来说会很慢,特别是当我添加更多的AttributeIDs时。
我的解决方案是否可行?有没有更好的方法?以我提出的方式,SQL和DynamoDB版本之间的性能差异会有什么影响(由于底层表实现的不同)?
问题的原因:为了提高性能,需要对两列数据库进行索引。
解决方法:在DynamoDB或SQL中创建索引。
在AWS中,可以使用以下步骤来为两列数据库创建索引以提高性能:
1. 创建名为"Item"的表,并在"ItemID"列上创建索引。
2. 创建名为"Attribute"的表,并在"AttributeID"列上创建索引。
3. 创建名为"Item Attribute"的表,并在"ItemID"和"AttributeID"两个字段上创建复合索引。
这样做的好处是,可以在毫秒级别内使用索引找到每个项目的属性。
在使用DynamoDB还是RDS时,DynamoDB有什么优势呢?
也许这个问题的回答可以帮助你。