它是有效的在单一DynamoDB表使用多个全局索引?

问题描述 投票:0回答:1

有离开如在下面的表中描述的数据集。 Sr.no在下面的表仅用于参考

|sr.no|    id    | tis |data-type|   b.id   |idType_2|  var_2 |     
|-----|----------|-----|---------|----------|--------|--------|
|  1  |abc-def-gi|12345|  a-type |1234567890| 843023 | NULL   |
|-----|----------|-----|---------|----------|--------|--------| 
|  2  |1234567890|12346|  b-type |    NULL  |  NULL  |40030230|
|-----|----------|-----|---------|----------|--------|--------|
|  3  |abc-def-gj|12347|  a-type |1234567890| 843023 |  NULL  |

查询类型

  1. 输入id如果data-typea-type回报领域tis,b.id,id_type2参考sr.no=1
  2. 输入id如果data-typeb-type回报场var_2参考sr.no=2
  3. 输入id_type2返回id,tis,b.idsr.no=1,3领域
  4. 输入data-type基于id返回tis between 12345 and 12347

注意

  • sr.no=1,3或数据的a-type插入100K一个一天时间具有独特id
  • sr.no=2或数据的b-type是一组固定的数据。

是键下面的方法高效地为这样的数据集?有没有可以遵循,以存储和DynamoDB检索数据的任何其他的方法呢?

Partition Key = idto需要查询1,2的照顾。

GSI1=id_type2 and GSI1SK=id照顾查询3

GSI2=data-type and GSI2SK=tis照顾查询4

amazon-web-services amazon-dynamodb amazon-dynamodb-index
1个回答
0
投票

这里是我的想法:

1)如果你有一个具有不同的访问模式的数据,你应该考虑拆分数据放入不同的表

2)如果数据被访问一起,将它存储起来 - 这是什么意思是,如果当你读一个类型的数据对于一些建模的实体,您还需要读取一个或多个B型记录同一实体,这是有利将所有这些记录在同一个表,相同分区键下

为了使这一切的家,在你的榜样,A型和B型数据的ID是不同的。这意味着,你在同一个表中存储两个A型和B型得到0好处。使用两个不同的表。

3)未一起访问的数据不被放置在同一个表中的所有受益,实际上有可能成为更极端的情况下,问题的潜力

关系与非关系数据库之间的主要差别在于,在非关系存储你没有交叉表连接,因此而关系数据库的原则之一是数据归一化相对趋于对非关系的情况。

© www.soinside.com 2019 - 2024. All rights reserved.