如何在AWS(DynamoDB或SQL)中为性能建立一个双列数据库的索引。

12 浏览
0 Comments

如何在AWS(DynamoDB或SQL)中为性能建立一个双列数据库的索引。

我想要一种高效的方法来存储DynamoDb中的ItemIDs和AttributeIDs以供查询。

有几千个独特的ItemIDs和300个独特的AttributeIDs。

每个ItemID通常与20-100个AttributeIDs相关联。

每个AttributeID与20,000-40,000个ItemIDs相关联。

随着时间的推移,将添加更多的AttributeIDs。

我想要能够查询以下内容:

  1. 返回与给定的ItemID相关联的AttributeIDs
  2. 找到与给定的AttributeID相关联的ItemIDs

我的初始解决方案是:

  1. 在DynamoDB中,创建一个表,其中一个ItemID匹配一个AttributeID。主键将是一个Hash和Range,其中Hash = ItemID,Range = AttributeID。还可以创建一个全局二级索引,Hash和Range,其中Hash = AttributeID,Range = ItemID。
  2. 与上述方案相同,但使用SQL。然而,这将导致大约900万个条目,对性能来说会很慢,特别是当我添加更多的AttributeIDs时。

我的解决方案是否可行?有没有更好的方法?以我提出的方式,SQL和DynamoDB版本之间的性能差异会有什么影响(由于底层表实现的不同)?

0
0 Comments

问题的原因:为了提高性能,需要对两列数据库进行索引。

解决方法:在DynamoDB或SQL中创建索引。

在AWS中,可以使用以下步骤来为两列数据库创建索引以提高性能:

1. 创建名为"Item"的表,并在"ItemID"列上创建索引。

2. 创建名为"Attribute"的表,并在"AttributeID"列上创建索引。

3. 创建名为"Item Attribute"的表,并在"ItemID"和"AttributeID"两个字段上创建复合索引。

这样做的好处是,可以在毫秒级别内使用索引找到每个项目的属性。

在使用DynamoDB还是RDS时,DynamoDB有什么优势呢?

也许这个问题的回答可以帮助你。

0