

# 使用 NoSQL Workbench 构建数据模型
<a name="workbench.Modeler"></a>

您可以在 NoSQL Workbench for Amazon DynamoDB 中使用数据建模器工具构建新的数据模型，或根据现有数据模型设计符合应用程序数据访问模式的模型。数据建模器包含一些示例数据模型，可帮助您快速入门。

**Topics**
+ [创建新数据模型](workbench.Modeler.CreateNew.md)
+ [导入现有数据模型](workbench.Modeler.ImportExisting.md)
+ [编辑现有数据模型](workbench.Modeler.Edit.md)
+ [将示例数据添加到数据模型](workbench.Modeler.AddData.md)
+ [添加和验证访问模式](workbench.Modeler.AccessPatterns.md)
+ [从 CSV 文件导入示例数据](workbench.Modeler.ImportCSV.md)
+ [分面](workbench.Modeler.Facets.md)
+ [使用聚合视图查看数据模型中的所有表](workbench.Modeler.AggregateView.md)
+ [导出数据模型](workbench.Modeler.ExportModel.md)
+ [将数据模型提交至 DynamoDB](workbench.Modeler.Commit.md)

# 创建新数据模型
<a name="workbench.Modeler.CreateNew"></a>

要在 Amazon DynamoDB 中使用 NoSQL Workbench 创建新数据模型，请按照以下步骤操作。

**创建新数据模型**

1.  打开 NoSQL Workbench，然后在主屏幕上选择**手动创建模型**。

    此时将打开一个新页面，其中有您的第一个表，其配置为空。NoSQL Workbench 使用默认名称（即 untitled-2）创建所有新的数据模型，并将它们添加到**草稿**项目文件夹。

1.  在**表配置**屏幕上，指定以下内容：
   +  **表名称**：输入表的唯一名称。
   +  **分区键**：输入分区键名称并指定其类型。或者，您也可以选择更精细的数据类型格式来生成示例数据。
   +  如果您要添加**排序键**，请指定排序键的名称及其类型。或者，您可以选择更精细的数据类型格式来生成示例数据。
**注意**  
 要了解有关主键设计、有效设计和使用分区键以及使用排序键的更多信息，请参阅以下内容：  
 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey) 
 [在 DynamoDB 中设计并有效使用分区键的最佳实践](bp-partition-key-design.md) 
 [在 DynamoDB 中使用排序键整理数据的最佳实践](bp-sort-keys.md) 

1. 您可以添加其他属性来更清楚地验证模型和访问模式。要添加其他属性，请执行以下操作：
   +  选择**添加属性**。
   +  指定属性名称及其类型。
   +  或者，您可以选择更精细的数据类型格式来生成示例数据。

1.  如果要添加全局二级索引，请选择 **Add global secondary index (添加全局二级索引)**。指定 **Global secondary index name (全局二级索引名称)**、**Partition key (分区键)** 属性和 **Projection type (投影类型)**。

   有关在 DynamoDB 中使用全局二级索引的更多信息，请参阅[全局二级索引](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html)。

1.  您可以选择**添加分面**。分面是 NoSQL Workbench 中的一种虚拟构造。这不是 DynamoDB 中的功能构造。NoSQL Workbench 中的分面可协助您仅使用表中的部分数据，来可视化应用程序对 DynamoDB 的不同数据访问模式。
**注意**  
 我们建议您使用[添加和验证访问模式](workbench.Modeler.AccessPatterns.md)来可视化应用程序将如何访问 DynamoDB 中的数据，而不是使用分面。访问模式反映了您的实际数据库交互，可帮助您为使用案例构建正确的数据模型，分面则是非功能性的可视化。

    选择 **Add facet (添加分面)**。指定以下内容：
   +  **Facet name (分面名称)**。
   +  **分区键别名**，用于帮助区分此分面视图。
   +  **排序键别名**（如果您为表提供了**排序键**）。
   +  选择属于此分面的**属性**。

    如果要添加更多分面，请重复此步骤。

1.  最后，单击**保存**按钮来创建表。

1.  如果您需要其他**表**或**全局二级索引**，请单击刚刚创建的表上方的 **\$1** 图标。

# 导入现有数据模型
<a name="workbench.Modeler.ImportExisting"></a>

您可以在 NoSQL Workbench for Amazon DynamoDB 中通过导入和修改现有模型来构建数据模型。您可以使用 NoSQL Workbench 模型格式或 [AWS CloudFormation JSON 模板格式](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)导入数据模型。

**导入数据模型**

1.  打开 NoSQL Workbench，然后在主屏幕上选择**导入模型**。您可以使用 NoSQL Workbench 模型格式或 CloudFormation JSON 模板导入数据模型。

1.  您可以将导入的模型添加到现有项目，也可用来创建新项目。如果您没有选择不同的项目，则您的模型将被添加到草稿项目文件夹中。

1.  单击**浏览您的桌面**，然后从计算机中选择要导入的模型。

# 编辑现有数据模型
<a name="workbench.Modeler.Edit"></a>

**编辑现有模型**

1. 要开始对现有模型进行更改，请在建模器页面中打开模型。

1. 在资源选择器面板中，您将看到**表**和**全局二级索引**的列表。

1. 要编辑**表**或**全局二级索引**，请先在资源选择器面板中单击其名称，然后使用顶部的操作图标。可用操作包括**删除**、**复制**和**编辑**。

1. 如果要编辑**模型详细信息**，请单击模型名称旁边的三点图标。

1. 从此处可以单击**编辑模型详细信息**并相应地编辑信息。

1. 从同一个菜单中，您还可以**复制**、**移动**、**删除**和**导出**模型。

1. 要更改为其他模型，您可以再次浏览主屏幕，也可以使用模型选择下拉菜单。

# 将示例数据添加到数据模型
<a name="workbench.Modeler.AddData"></a>

**自动生成示例数据**

1. 打开 NoSQL Workbench，在主屏幕上，单击要向其添加示例数据的模型的名称。

1. 单击主内容工具栏中的其他操作（三点图标），然后选择**添加示例数据**。

1. 输入要生成的示例数据的项目的数量，然后选择**确认**。

1. 自动生成示例数据可帮助您生成 1 到 5000 行数据以供立即使用。您可以指定精细的示例数据类型，以便根据自己的设计和测试需求创建真实数据。要利用该功能生成真实数据，您需要在数据建模器中为属性指定示例数据类型格式。有关指定示例数据类型格式的信息，请参阅[创建新数据模型](workbench.Modeler.CreateNew.md)。

**逐个项目添加示例数据**

1. 打开要编辑的模型，然后选择要向其添加示例数据的表。单击主内容工具栏中的其他操作（三点图标），然后选择**编辑数据**。

1. 现在，您可以添加、删除和编辑行。进行必要的更改后，单击**保存**按钮。

# 添加和验证访问模式
<a name="workbench.Modeler.AccessPatterns"></a>

您可以使用 NoSQL Workbench for Amazon DynamoDB 来创建、存储和验证*访问模式*。

**注意**  
 有关识别正确访问模式的更多详细信息，请参阅[识别数据访问模式](https://docs.aws.amazon.com/prescriptive-guidance/latest/dynamodb-data-modeling/step3.html)。

**创建访问模式**

1.  打开 NoSQL Workbench，在主屏幕上，单击要向其添加访问模式的模型的名称。

1.  在左侧，选择**访问模式**选项卡，然后单击 **\$1** 图标。

1.  在下一个屏幕上，提供**名称**、可选的**描述**、访问模式的**类型**，以及用于测试访问模式的**表**或**全局二级索引**。
**注意**  
 NoSQL Workbench 目前支持访问模式的以下操作：`Scan`、`Query`、`GetItem`、`PutItem`、`UpdateItem`、`DeleteItem`。Amazon DynamoDB 支持更广泛的操作。

1.  创建访问模式后，您可以切换到**验证**选项卡，验证您的数据模型设计是否返回了访问模式的预期结果。有关如何为表自动生成示例数据的详细信息，请参阅[将示例数据添加到数据模型](workbench.Modeler.AddData.md)。不同类型的访问模式支持不同的输入参数。
**注意**  
为了验证访问模式，NoSQL Workbench 在端口 `8001`（默认）上启动一个单独的 DynamoDB local 数据库，表和索引存储在内存中。  
NoSQL Workbench 自动将模型中的示例数据添加到临时表中。
如果您编辑示例数据或数据模型本身，NoSQL Workbench 将更新临时表。
在您关闭应用程序时，此临时数据库将被清除。

**编辑访问模式**

1.  打开 NoSQL Workbench，在主屏幕上，单击要编辑其访问模式的模型的名称。

1.  在左侧，选择**访问模式**选项卡。

1. 要编辑访问模式，请从左侧列表中选择该模式。

1. 在顶部栏中，单击**编辑**操作按钮。

# 从 CSV 文件导入示例数据
<a name="workbench.Modeler.ImportCSV"></a>

如果您在 CSV 文件中已有示例数据，您可以将其导入 NoSQL Workbench。这样就能够快速使用样本数据填充模型，而无需逐行输入数据。

CSV 文件中的列名必须与数据模型中的属性名称匹配，但不需要按相同的顺序排列。例如，如果您的数据模型具有名为 `LoginAlias`、`FirstName` 和 `LastName` 的属性，则 CSV 列可能是 `LastName`、`FirstName` 和 `LoginAlias`。

您一次最多可以从 CSV 文件导入 150 行。

**从 CSV 文件将数据导入 NoSQL Workbench**

1. 要将 CSV 数据导入**表**，请先在资源面板中单击表名称，然后在主内容工具栏中单击其他操作（三点图标）。

1. 选择**导入示例数据**。

1. 选择 CSV 文件并选择 **Open**（打开）。CSV 数据将附加到您的表中。

# 分面
<a name="workbench.Modeler.Facets"></a>

 在 NoSQL Workbench 中，*分面*为您提供了一种方法，用于查看表中的部分数据，而不必查看不符合分面约束的记录。分面是一种可视化数据建模工具，在 DynamoDB 中不作为可用的结构存在，因为它们纯粹是对访问模式建模的帮助。

**注意**  
 我们建议您使用[添加和验证访问模式](workbench.Modeler.AccessPatterns.md)来可视化应用程序将如何访问 DynamoDB 中的数据，而不是使用分面。访问模式反映了您的实际数据库交互，可帮助您为使用案例构建正确的数据模型，分面则是非功能性的可视化。

**创建分面**

1. 在资源选择器面板中，选择要编辑的**表**

1. 在顶部栏中，单击**编辑**操作图标。

1. 向下滚动到**分面筛选条件**部分。

1.  选择 **Add facet (添加分面)**。指定以下内容：
   +  **Facet name (分面名称)**。
   +  **分区键别名**，用于帮助区分此分面视图。
   +  **排序键别名**（如果您为表提供了**排序键**）。
   +  选择属于此分面的**属性**。

    如果要添加更多分面，请重复此步骤。

# 使用聚合视图查看数据模型中的所有表
<a name="workbench.Modeler.AggregateView"></a>

通过 NoSQL Workbench for Amazon DynamoDB 中的聚合视图，您可以可视化数据模型中的所有表和索引。对于每个表，将显示以下信息：
+ 表列名称
+ 示例数据
+ 与表该关联的所有全局二级索引。NoSQL Workbench 显示每个索引的以下信息：
  + 索引列名称
  + 示例数据

**查看所有表信息**

1. 打开 NoSQL Workbench，在主屏幕上，单击要打开的模型的名称。

1. 在顶部栏中，单击**聚合视图**。您将在同一个屏幕上看到所有表和索引中的数据。

**将聚合视图导出为图像**

1. 选中**聚合视图**，单击三点图标并选择**导出聚合视图**

1. 此时系统将提供一个存档供下载，其中包含所有表和索引的 PNG 图像。

# 导出数据模型
<a name="workbench.Modeler.ExportModel"></a>

在使用 NoSQL Workbench for Amazon DynamoDB 创建数据模型后，您可以采用 NoSQL Workbench 模型格式或 [AWS CloudFormation JSON 模板格式](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)保存和导出模型。

**导出数据模型**

1. 打开 NoSQL Workbench，在主屏幕上，单击要编辑的模型的名称。

1. 单击数据模型名称旁边的三点图标，然后选择**导出模型**。

1.  选择是以 NoSQL Workbench 模型格式还是 CloudFormation JSON 模板格式导出数据模型。
   +  如果您想使用 NoSQL Workbench 与其他团队成员共享模型，或者以后会将其导入 NoSQL Workbench，请选择 **NoSQL Workbench 模型**格式。
   +  如果您想要将模型直接部署到 AWS，或者想要将其集成到基础设施即代码工作流中，请选择 **CloudFormation JSON 模板**格式。

# 将数据模型提交至 DynamoDB
<a name="workbench.Modeler.Commit"></a>

 对数据模型感到满意后，可以将模型提交至 Amazon DynamoDB。

**注意**  
此操作将会为数据模型中呈现的表和全局辅助索引，在 AWS 云端创建服务器端资源。
默认情况下，NoSQL Workbench 会创建具有按需容量的表和索引。

**将数据模型提交至 DynamoDB**

1. 打开 NoSQL Workbench，在主屏幕上，单击要提交的模型的名称。

1. 在顶部栏中，单击**提交**。

1. 选择现有的连接，或者单击**添加新连接**按钮创建新连接。
   + 要添加新连接，请指定以下信息：
     + **账户别名**
     + **AWS 区域**
     + **访问密钥 ID**
     + **秘密访问密钥**

     有关如何获取访问密钥的更多信息，请参阅[获取 AWS 访问密钥](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SettingUp.DynamoWebService.html#SettingUp.DynamoWebService.GetCredentials)。
   + 您可以选择指定以下内容：
     + [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)
     + [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)

1. 如果您偏好使用 [DynamoDB local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html)，请执行以下操作：

   1. 选择**本地连接**选项卡。

   1. 单击**添加新连接**按钮。

   1. 指定 **Connection name (连接名称)** 和 **Port (端口)**。
**注意**  
 要使用 DynamoDB local，您需要在 NoSQL Workbench 屏幕中，使用左下角的 **DynamoDB local** 开关将其启用。

1. 单击**提交**。