使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

DynamoDB - Indexing a list attribute

0

I have a dataset of call recording information, with fields/attributes including: Incoming Number, Dialled Number, Call Start Date, Agent(s) name. The end user will most likely want to search on Agent name, which is stored in a list attribute as there might be more than one. I can't add an index to a list attribute, so as a SQL dev I'm learning towards storing the agent ID in a different table and creating a many to many relationship between the two tables. However, Dynamo's a bit different so what's my best approach if I want to index the Agents attribute?

已提问 2 年前882 查看次数
1 回答
1

You're correct that you would not normally create "join" scenarios for DynamoDB. Typically you would have an individual item for each Agent:

PKSKotherother-1
01202333444C#012023334441/1/2023Call metadata
01202333444Bob1/1/2023Data
01202333444Michelle1/1/2023Data
01202333444Lee1/1/2023Data

In DynamoDB and other NoSQL databases its common to de-normalize the data, which takes a little bit of getting used to coming from a relational database background.

profile pictureAWS
专家
已回答 2 年前
  • Thanks Leeroy

    I could denormalise to the following:

    Incoming Number StartTime PrimaryAgent SecondaryAgent 01202333444 1/1/2023 Bob Michelle

    but then, what happens if there's another agent?

  • I edited my answer to show how I would model the data

  • so, if I do a search for 01202333444, I'd get one record for each of the agents involved in the call, rather than just one record for the call?

  • Yes and you would also get the call metadata. The cost of reading does not change as you still pay up to the nearest 4KB.

  • not sure I like that, to be honest. A user would see two calls where there are actually only one, and this would confuse them. Thanks for your help though, Leeroy

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则

相关内容