DynamoDB全球二级索引可提高性能

时间:2016-02-08 04:48:33

标签: amazon-dynamodb database nosql

我正在设计一个跟踪呼叫活动的应用程序。

每次通话都可以终止或激活。应用程序将每分钟查询数据库以生成激活调用列表。每秒最多可以有1000个电话。

我应该如何设计数据库?我应该打电话"电话"表和全局二级索引" state"属性等于"激活"或者"终止"

OR

a" Call"表和全局二级索引" isActive"仅用于活动呼叫的属性。

1 个答案:

答案 0 :(得分:2)

如果您使用问题中建议的架构,可能会遇到的问题:

  1. CallList表以'state'作为GSI,这样你就可以查询你的GSI并获得所有活动的调用,但最终它会影响你的性能,因为分区键的值非常有限(我假设你也不会删除记录,因此表格会立刻变得很大)
  2. CallList在isActive上使用GSI的表,这将具有相同的上述问题,因为大多数行将具有“isActive = False”
  3. 我提出的架构:

    保持一个单独的activeCall表只有一个活动呼叫的条目,这样你就不必担心表或GSI的大小,最终导致支付更少,一旦呼叫终止你可以从表中删除条目。