【问题标题】:Dynamodb - how to pick appropriate GSI and LSIDynamodb - 如何选择合适的 GSI 和 LSI
【发布时间】:2021-02-26 15:11:54
【问题描述】:

我的“横幅”表中有 5 列。

id(string) | createdAt(Date) | caption(string) | isActive(binary) | order(Int)

目前,id 是分区键和主键。

将来,我可能想做一些事情,比如使用 isActive =1 获取所有横幅并按顺序排序。

据我了解,GSI 是分区键的另一种选择,LSI 就像表中分区键不变的第二个排序键。

isActive 应该是 GSI,order 应该是 LSI 吗?

【问题讨论】:

  • 类似主题 herehere。你见过那些吗? sparse indices 在这样的场景中也很有用。
  • 是的。但我仍然不确定 isActive 是否应该是 GSI 和 order 是否应该是 LSI

标签: amazon-web-services nosql amazon-dynamodb


【解决方案1】:

这是我关于 LSI 的经验法则:仅在您使用它时使用它

  1. 二级索引需要强读取一致性
  2. 想要保存二级索引的 Provisioned RCU 和 WCU

否则,请毫不犹豫地使用 GSI。

【讨论】:

  • 为什么 LSI 比 GSI 保存的二级索引的 Provisioned RCU 和 WCU 更多?我知道 GSI 会导致创建另一个具有不同分区键的表。所以 LSI 不会做同样的事情?
  • 另外,在我上面的用例中。你认为 isActive/order 应该设置成什么?
  • @CCCC 因为 LSI 共享主表的 RCU 和 WCU。 docs.aws.amazon.com/amazondynamodb/latest/developerguide/…
  • 我一般会推荐 GSI。
  • 所以你的意思是 isActive 应该是分区键,而 order 应该是 GSI 的排序键?
猜你喜欢
  • 2018-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-11
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多