Amazon dynamodb 让';假设您正在DynamoDB上编写类似cognito的用户池,您将如何对其进行分区以将其扩展到多个公司?

Amazon dynamodb 让';假设您正在DynamoDB上编写类似cognito的用户池,您将如何对其进行分区以将其扩展到多个公司?,amazon-dynamodb,Amazon Dynamodb,假设我们在dynamodb中有一个Users表。但我们将有多家公司使用这项服务。每家公司都可能拥有数百万用户。所以有一个companyId作为分区是行不通的。同样,将companyId作为稀疏索引也不起作用。如何划分一个表以服务多个不同的公司 我想真正的问题是,您将如何在DynamoDB上编写一个服务,作为SaaS为许多不同的客户提供服务?如何在DynamoDB上分离客户数据?一个选项可能是为每个用户提供一个由companyID和userID组成的复合分区键。所以像这样: 12554::巴兰巴甘

假设我们在dynamodb中有一个Users表。但我们将有多家公司使用这项服务。每家公司都可能拥有数百万用户。所以有一个companyId作为分区是行不通的。同样,将companyId作为稀疏索引也不起作用。如何划分一个表以服务多个不同的公司


我想真正的问题是,您将如何在DynamoDB上编写一个服务,作为SaaS为许多不同的客户提供服务?如何在DynamoDB上分离客户数据?

一个选项可能是为每个用户提供一个由companyID和userID组成的复合分区键。所以像这样:

12554::巴兰巴甘

这样,每当您需要从该用户处获得某些信息时,应用程序都会拥有这些值,并可以将它们连接起来,并可以使用GetItem或查询立即获取该用户的一个或多个项


然后可以为其他内容的表添加排序键。您最终如何对此进行建模实际上取决于您计划在此应用程序中支持的访问模式。

一个选项可能是为每个用户提供一个由companyID和userID组成的复合分区密钥。所以像这样:

12554::巴兰巴甘

这样,每当您需要从该用户处获得某些信息时,应用程序都会拥有这些值,并可以将它们连接起来,并可以使用GetItem或查询立即获取该用户的一个或多个项

然后可以为其他内容的表添加排序键。最终如何对此进行建模实际上取决于您计划使用此应用程序支持的访问模式