确定应用的访问模式
为 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 之间的一对一关系,我们可以将其作为对象嵌入新的单个客户文档。 然后,电子商务应用程序可以通过单个请求创建、编辑或检索客户数据。
下图显示了客户实体。