我正在设计一个跟踪呼叫活动的应用程序。
每次通话都可以终止或激活。应用程序将每分钟查询数据库以生成激活调用列表。每秒最多可以有1000个电话。
我应该如何设计数据库?我应该打电话"电话"表和全局二级索引" state"属性等于"激活"或者"终止"
OR
a" Call"表和全局二级索引" isActive"仅用于活动呼叫的属性。
答案 0 :(得分:2)
如果您使用问题中建议的架构,可能会遇到的问题:
CallList
表以'state'作为GSI,这样你就可以查询你的GSI并获得所有活动的调用,但最终它会影响你的性能,因为分区键的值非常有限(我假设你也不会删除记录,因此表格会立刻变得很大)CallList
在isActive上使用GSI的表,这将具有相同的上述问题,因为大多数行将具有“isActive = False”我提出的架构:
保持一个单独的activeCall
表只有一个活动呼叫的条目,这样你就不必担心表或GSI的大小,最终导致支付更少,一旦呼叫终止你可以从表中删除条目。