确定应用的访问模式

已完成

为 NoSQL 数据库设计数据模型时,目标是确保通过最少的请求完成对数据的操作。 为此,你需要了解数据之间的关系以及应用程序将如何访问数据。 这些访问模式很重要,因为它们连同关系将决定各种实体的属性组合在一起的方式,并将其存储在 Azure Cosmos DB for NoSQL 容器内的文档中。

在 Azure Cosmos DB for NoSQL 中,文档称为项,容器通常同义地称为集合。

确定客户实体的访问模式

先从电子商务数据库中的客户实体开始。 下图显示了 3 个实体及其彼此间的关系。 这三个实体是 Customer、CustomerAddress 和 CustomerPassword。 Customer 实体与 CustomerAddress 是一对多的关系。 Customer 与 CustomerPassword 是一对一的关系

该图显示了客户实体的关系模型。

在我们的应用程序中,我们将对客户实体执行 3 项操作:

  • 创建客户:当新用户首次访问电子商务网站时,将新建一个客户。
  • 更新客户:当现有用户更新其个人资料信息时,其客户记录也会随之更新。
  • 检索客户:现有用户访问网站时使用自己的密码进行登录。 在上述会话期间,他们将需要访问其他客户数据(例如地址)来购买新项目。

对于其中的每一个操作,我们都需要同时获得所有此类数据。 如果将它们建模为单独的文档,则需要多次往返服务器才能创建、更新和检索客户数据。 这是低效的操作。

对客户实体进行建模

Azure Cosmos DB 将数据存储为 JSON,因此我们可以对 Customer 和 CustomerAddress 之间的一对多关系进行建模,并将客户地址数据作为数组嵌入。 对于 Customer 和 CustomerPassword 之间的一对一关系,我们可以将其作为对象嵌入新的单个客户文档。 然后,电子商务应用程序可以通过单个请求创建、编辑或检索客户数据。

下图显示了客户实体。

显示建模后的客户文档的图示。