

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 实体和数据操作：配置应用程序的数据模型
<a name="data"></a>

**实体**是 App Studio 中的数据表。实体直接与数据源中的表交互。实体包括用于描述其中的数据的字段、用于查找和返回数据的查询以及用于将实体字段连接到数据源列的映射。

**Topics**
+ [设计数据模型时的最佳实践](data-model-best-practices.md)
+ [在 App Studio 应用程序中创建实体](data-entities-create.md)
+ [在 App Studio 应用程序中配置或编辑实体](data-entities-edit.md)
+ [删除实体](data-entities-delete.md)
+ [AWS App Studio 中的管理数据实体](managed-data-entities.md)

# 设计数据模型时的最佳实践
<a name="data-model-best-practices"></a>

使用以下最佳实践在中创建强大、可扩展且安全的关系数据模型， AWS 以便在 App Studio 应用程序中使用，该模型既要满足应用程序的要求，又能确保数据基础架构的长期可靠性和性能。
+ **选择正确 AWS 的数据服务：**根据您的要求，选择合适 AWS 的数据服务。例如，对于在线事务处理 (OLTP) 应用程序，您可以考虑使用诸如 Amazon Aurora 之类的数据库 (DB)，它是一种云原生、关系型和完全托管的数据库服务，支持 MySQL 和 PostgreSQL 等各种数据库引擎。有关 App Studio 支持的 Aurora 版本的完整列表，请参阅[连接亚马逊 Aurora](connectors-aurora.md)。另一方面，对于在线分析处理 (OLAP) 用例，可以考虑使用 Amazon Redshift，这是一个云数据仓库，可让您对非常大的数据集运行复杂查询。这些查询通常需要时间（数秒）才能完成，这使得 Amazon Redshift 不太适合需要低延迟数据访问的 OLTP 应用程序。
+ **为可扩展性而设计：**在规划数据模型时考虑未来的增长和可扩展性。在选择适当的数据服务以及数据库实例类型和配置（例如预配置容量）时，请考虑预期数据量、访问模式和性能要求等因素。
  + 有关使用 Aurora 无服务器进行扩展的更多信息，请参阅 Aurora Server [less V2 的性能和扩展](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html)。
+ **标准化数据：**遵循数据库标准化原则，最大限度地减少数据冗余并提高数据完整性。这包括创建相应的表、定义主键和外键以及在实体之间建立关系。在 App Studio 中，在查询来自一个实体的数据时，您可以通过在查询中指定`join`子句来从另一个实体检索相关数据。
+ **实施适当的索引：**确定最重要的查询和访问模式，并创建适当的索引以优化性能。
+ **利用 AWS 数据服务功能：**利用您选择 AWS 的数据服务提供的功能，例如自动备份、多可用区部署和自动软件更新。
+ **保护您的数据：**实施强大的安全措施，例如 IAM (AWS Identity and Access Management) 策略，创建对表和架构具有有限权限的数据库用户，以及在静态和传输中强制加密。
+ **监控和优化性能：**持续监控数据库的性能并根据需要进行调整，例如扩展资源、优化查询或调整数据库配置。
+ **自动管理数据库：**利用 AWS Aurora Autoscaling、Performance Insights for Aurora 和 AWS Database Migration Service 等服务来自动执行数据库管理任务并减少运营开销。
+ **实施灾难恢复和备份策略：**利用 Aurora 自动备份、恢复和跨区域副本配置等功能，确保您有一个明确定义的备份和 point-in-time恢复计划。
+ **遵循 AWS 最佳实践和文档：**随时 up-to-date了解所选数据服务的最新 AWS 最佳实践、指南和文档，以确保您的数据模型和实施与 AWS 建议保持一致。

有关每种 AWS 数据服务的更多详细指导，请参阅以下主题：
+ [亚马逊 Aurora 的最佳实践](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.BestPractices.html)
+ [亚马逊 Aurora MySQL 的最佳实践](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.BestPractices.html)
+ [亚马逊 Redshift 查询性能调整](https://docs.aws.amazon.com/redshift/latest/dg/c-optimizing-query-performance.html)
+ [在 Amazon DynamoDB 中查询和扫描数据的最佳实践](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-query-scan.html)

# 在 App Studio 应用程序中创建实体
<a name="data-entities-create"></a>

在 App Studio 应用程序中创建实体的方法有四种。以下列表包含每种方法及其优点，以及使用该方法创建和配置实体的说明的链接。
+ [从现有数据源创建实体](#data-entities-create-existing-data-source)：根据现有数据源表自动创建实体及其字段，并将这些字段映射到数据源表的列。如果您有要在 App Studio 应用程序中使用的现有数据源，则最好使用此选项。
+ [使用 App Studio 托管数据源创建实体](#data-entities-create-managed-data-source)：创建由 App Studio 为您管理的实体和一个 DynamoDB 表。当你更新实体时，DynamoDB 表会自动更新。使用此选项，您无需手动创建、管理或连接第三方数据源，也不必指定从实体字段到表列的映射。您的应用程序的所有数据建模和配置都在 App Studio 中完成。如果您不想管理自己的数据源和 DynamoDB 表，并且其功能足以满足您的应用程序的需求，则最好使用此选项。
+ [创建空实体](#data-entities-create-empty): 完全从头开始创建一个空实体。如果您没有任何由管理员创建的现有数据源或连接器，并且您想在不受外部数据源限制的情况下灵活设计应用程序的数据模型，则最好使用此选项。创建实体后，您可以将实体连接到数据源。
+ [使用 AI 创建实体](#data-entities-create-with-ai)：根据指定的实体名称生成实体、字段、数据操作和示例数据。如果您对应用程序的数据模型有所了解，但需要帮助将其转换为实体，则最好使用此选项。

## 从现有数据源创建实体
<a name="data-entities-create-existing-data-source"></a>

使用数据源中的表自动创建实体及其字段，并将实体字段映射到表的列。如果您有要在 App Studio 应用程序中使用的现有数据源，则最好使用此选项。

1. 如有必要，请导航到您的应用程序。

1. 选择画布顶部的 “**数据**” 选项卡。

1. 如果您的应用程序中没有实体，请选择 **\$1 创建实体**。否则，在左侧的**实体**菜单中，选择 **\$1 添加**。

1. 选择 “**使用现有数据源中的表**”。

1. 在 **C** onnector 中，选择包含要用于创建实体的表格的连接器。

1. 在**表格**中，选择要用于创建实体的表。

1. 选中 “**创建数据操作**” 复选框以创建数据操作。

1. 选择 **Create entity (创建实体)**。您的实体现已创建，您可以在左侧的**实体**面板中看到它。

1. 按照中的步骤配置您的新实体[在 App Studio 应用程序中配置或编辑实体](data-entities-edit.md)。请注意，由于您的实体是使用现有数据源创建的，因此已经创建了一些属性或资源，例如字段、连接的数据源和字段映射。此外，如果您在创建过程中选中了**创建数据操作复选框，则您的实体将包含数据操作**。

## 使用 App Studio 托管数据源创建实体
<a name="data-entities-create-managed-data-source"></a>

创建由 App Studio 管理的托管实体和相应的 DynamoDB 表。虽然 DynamoDB 表存在于 AWS 关联账户中，但在 App Studio 应用程序中对该实体进行更改时，DynamoDB 表会自动更新。使用此选项，您无需手动创建、管理或连接第三方数据源，也不必指定从实体字段到表列的映射。如果您不想管理自己的数据源和 DynamoDB 表，并且其功能足以满足您的应用程序的需求，则最好使用此选项。有关托管实体的更多信息，请参阅[AWS App Studio 中的管理数据实体](managed-data-entities.md)。

您可以在多个应用程序中使用相同的托管实体。有关说明，请参阅[从现有数据源创建实体](#data-entities-create-existing-data-source)。

1. 如有必要，请导航到您的应用程序。

1. 选择画布顶部的 “**数据**” 选项卡。

1. 如果您的应用程序中没有实体，请选择 **\$1 创建实体**。否则，在左侧的**实体**菜单中，选择 **\$1 添加**。

1. 选择**创建 App Studio 管理实体**。

1. 在**实体名称**中，为您的实体提供一个名称。

1. 在**主键**中，提供实体的主键的名称。主键是实体的唯一标识符，在创建实体后无法更改。

1. 在**主键数据类型**中，选择实体主键的数据类型。实体创建后无法更改数据类型。

1. 选择 **Create entity (创建实体)**。您的实体现已创建，您可以在左侧的**实体**面板中看到它。

1. 按照中的步骤配置您的新实体[在 App Studio 应用程序中配置或编辑实体](data-entities-edit.md)。请注意，由于您的实体是使用托管数据创建的，因此已经创建了一些属性或资源，例如主键字段和连接的数据源。

## 创建空实体
<a name="data-entities-create-empty"></a>

完全从头开始创建一个空实体。如果您没有任何由管理员创建的现有数据源或连接器，则最好使用此选项。创建空实体提供了灵活性，因为您可以在 App Studio 应用程序中设计实体，而不受外部数据源的限制。在设计应用程序的数据模型并相应地配置实体之后，您仍然可以将其连接到外部数据源。

1. 如有必要，请导航到您的应用程序。

1. 选择画布顶部的 “**数据**” 选项卡。

1. 如果您的应用程序中没有实体，请选择 **\$1 创建实体**。否则，在左侧的**实体**菜单中，选择 **\$1 添加**。

1. 选择 “**创建实体**”。

1. 选择 **Create entity (创建实体)**。您的实体现已创建，您可以在左侧的**实体**面板中看到它。

1. 按照中的步骤配置您的新实体[在 App Studio 应用程序中配置或编辑实体](data-entities-edit.md)。

## 使用 AI 创建实体
<a name="data-entities-create-with-ai"></a>

根据指定的实体名称生成实体、字段、数据操作和示例数据。如果您对应用程序的数据模型有所了解，但需要帮助将其转换为实体，则最好使用此选项。

1. 如有必要，请导航到您的应用程序。

1. 选择画布顶部的 “**数据**” 选项卡。

1. 如果您的应用程序中没有实体，请选择 **\$1 创建实体**。否则，在左侧的**实体**菜单中，选择 **\$1 添加**。

1. 选择 “**使用 AI 创建实体**”。

1. 在**实体名称**中，为您的实体提供一个名称。此名称用于生成实体的字段、数据操作和示例数据。

1. 选中 “**创建数据操作**” 复选框以创建数据操作。

1. 选择 “**生成实体**”。您的实体现已创建，您可以在左侧的**实体**面板中看到它。

1. 按照中的步骤配置您的新实体[在 App Studio 应用程序中配置或编辑实体](data-entities-edit.md)。请注意，由于您的实体是使用 AI 创建的，因此您的实体将已经包含生成的字段。此外，如果您在创建过程中选中了**创建数据操作复选框，则您的实体将包含数据操作**。

# 在 App Studio 应用程序中配置或编辑实体
<a name="data-entities-edit"></a>

使用以下主题在 App Studio 应用程序中配置实体。

**Topics**
+ [编辑实体名称](data-entities-edit-name.md)
+ [添加、编辑或删除实体字段](data-entities-edit-fields.md)
+ [创建、编辑或删除数据操作](data-entities-edit-data-actions.md)
+ [添加或删除示例数据](data-entities-edit-sample-data.md)
+ [添加或编辑连接的数据源和地图字段](data-entities-edit-connection.md)

# 编辑实体名称
<a name="data-entities-edit-name"></a>

1. 如有必要，请导航到要编辑的实体。

1. 在 “**配置**” 选项卡的 “**实体名称**” 中，更新实体名称，然后在文本框之外选择以保存更改。

# 添加、编辑或删除实体字段
<a name="data-entities-edit-fields"></a>

**提示**  
您可以按 CTRL\$1Z 撤消最近对实体所做的更改。

1. 如有必要，请导航到要编辑的实体。

1. 在 “**配置**” 选项卡的 “**字段**” 中，您可以查看实体字段的表。实体字段包含以下列：
   + **显示名称：**显示名称类似于表标题或表单域，可供应用程序用户查看。它可以包含空格和特殊字符，但在实体中必须是唯一的。
   + **系统名称：**系统名称是代码中用于引用字段的唯一标识符。映射到亚马逊 Redshift 表中的列时，该列必须与亚马逊 Redshift 表的列名相匹配。
   + **数据类型：**将存储在此字段中的数据类型，例如`Integer``Boolean`、或`String`。

1. 要添加字段：

   1. 要使用 AI 根据实体名称和连接的数据源生成字段，请选择**生成更多字段**。

   1. 要添加单个字段，请选择 **\$1 添加字段**。

1. 要编辑字段，请执行以下操作：

   1. 要编辑显示名称，请在**显示名称**文本框中输入所需的值。如果尚未编辑该字段的系统名称，则会将其更新为显示名称的新值。

   1. 要编辑系统名称，请在**系统名称**文本框中输入所需的值。

   1. 要编辑数据类型，请选择**数据类型**下拉菜单，然后从列表中选择所需的类型。

   1. 要编辑字段的属性，请选择该字段的齿轮图标。以下列表详细说明了字段的属性：
      + **必填**：如果您的数据源需要该字段，请启用此选项。
      + **主键**：如果字段映射到数据源中的主键，请启用此选项。
      + **唯一**：如果此字段的值必须是唯一的，请启用此选项。
      + **使用数据源默认**值：如果字段的值由数据源提供，例如使用自动增量或事件时间戳，则启用此选项。
      + **数据类型选项**：某些数据类型的字段可以配置数据类型选项，例如最小值或最大值。

1. 要删除字段，请选择要删除的字段的垃圾桶图标。

# 创建、编辑或删除数据操作
<a name="data-entities-edit-data-actions"></a>

应用程序中使用数据操作对实体的数据执行操作，例如获取所有记录或按 ID 获取记录。数据操作可用于查找和返回与指定条件相匹配的数据，以便在表格或详细视图等组件中查看。

**Contents**
+ [创建数据操作](#data-entities-data-action-add)
+ [编辑或配置数据操作](#data-entities-data-action-edit)
+ [数据操作条件运算符和示例](#data-entities-data-action-operators)
  + [数据库支持条件运算符](#data-entities-data-action-operators-support)
  + [数据操作条件示例](#data-entities-data-action-operators-examples)
+ [删除数据操作](#data-entities-data-action-delete)

## 创建数据操作
<a name="data-entities-data-action-add"></a>

**提示**  
您可以按 CTRL\$1Z 撤消最近对实体所做的更改。

1. 如有必要，请导航到要为其创建数据操作的实体。

1. 选择 “**数据操作**” 选项卡。

1. 创建数据操作的方法有两种：
   + （推荐）要使用 AI 根据您的实体名称、字段和连接的数据源为您生成数据操作，请选择**生成数据操作**。将生成以下操作：

     1. `getAll`：检索实体的所有记录。当您需要显示记录列表或同时对多条记录执行操作时，此操作非常有用。

     1. `getByID`：根据实体的唯一标识符（ID 或主键）从其检索单个记录。当您需要显示或对特定记录执行操作时，此操作非常有用。
   + 要添加单个数据操作，请选择 **\$1 添加数据操作**。

1. 要查看或配置新的数据操作，请参阅以下部分[编辑或配置数据操作](#data-entities-data-action-edit)。

## 编辑或配置数据操作
<a name="data-entities-data-action-edit"></a>

1. 如有必要，请导航到要为其创建数据操作的实体。

1. 选择 “**数据操作**” 选项卡。

1. 在**字段**中，配置查询要返回的字段。默认情况下，实体中所有已配置的字段都处于选中状态。

   您也可以通过执行以下步骤将**联接**添加到数据操作中：

   1. 选择 **\$1 添加加入**以打开一个对话框。

   1. 在**相关实体**中，选择要与当前实体联接的实体。

   1. 在**别名**中，可以选择输入相关实体的临时别名。

   1. 在**联接类型**中，选择所需的联接类型。

   1. 通过从每个实体中选择字段来定义联接子句。

   1. 选择 “**添加**” 以创建联接。

   创建后，联接将显示在 “**联接**” 部分，从而在 “**要返回的字段” 下拉列表中提供其他字段**。您可以添加多个联接，包括跨实体的链式联接。您还可以按联接实体中的字段进行筛选和排序。

   要删除联接，请选择其旁边的垃圾桶图标。这将从该联接中移除所有字段，并使用这些字段打破任何依赖的联接或约束。

1. 在**条件**中，添加、编辑或删除筛选查询输出的规则。您可以将规则组织成组，也可以使用`AND`或`OR`语句将多个规则链接在一起。有关您可以使用的运算符的更多信息，请参阅[数据操作条件运算符和示例](#data-entities-data-action-operators)。

1. 在**排序**中，通过选择属性并选择升序或降序来配置查询结果的排序方式。您可以通过选择排序规则旁边的垃圾桶图标来删除排序配置。

1. 在**转换结果**中，您可以输入 custom JavaScript 来修改或格式化结果，然后再显示结果或将其发送到自动化。

1. 在**输出预览**中，根据配置的字段、筛选器、排序和查看查询输出的预览表 JavaScript。

## 数据操作条件运算符和示例
<a name="data-entities-data-action-operators"></a>

您可以使用条件运算符将配置的表达式值与实体列进行比较，以返回数据库对象的子集。您可以使用的运算符取决于列的数据类型以及实体所连接的数据库的类型，例如 Amazon Redshift、Amazon Aurora 或 Amazon DynamoDB。

以下条件运算符可用于所有数据库服务：
+ `=`和`!=`：适用于所有数据类型（不包括主键列）。
+ `<=`、`>=``<`、和`>=`：仅适用于数字列。
+ `IS NULL`an `IS NOT NULL` d：用于匹配具有空值或空值的列。在每个数据库中，空值的解释通常有所不同，但是在 App Studio 中，`NULL`运算符匹配并返回连接的数据库表中包含空值的记录。

以下条件运算符只能在连接到支持它们的数据库服务的实体中使用：
+ `LIKE`和`NOT LIKE`（Redshift，Aurora）：用于在连接的数据库中执行基于模式的查询。该`LIKE`运算符为搜索功能提供了灵活性，因为它可以查找并返回符合指定模式的记录。您可以使用与模式中的任何字符或字符序列相匹配的通配符来定义模式。每个数据库管理系统都有一组唯一的通配符，但最常用的两个通配符是`%`表示任意数量的字符（包括 0），以及`_`表示单个字符。
+ `Contains`和 `Not Contains` (DynamoDB)：用于执行区分大小写的搜索以确定是否在列值中找到给定文本。
+ `Starts With`和 `Not Starts With` (DynamoDB)：用于执行区分大小写的搜索，以确定是否在列值的开头找到给定文本。

### 数据库支持条件运算符
<a name="data-entities-data-action-operators-support"></a>

下表显示了每个可以连接到 App Studio 的数据库支持哪些数据操作条件运算符。


|  | =, \$1=, <, >, <=, >= | 喜欢，不喜欢 | 包含，不包含 | 开头为，不开头 | 为空，不为空 | 
| --- | --- | --- | --- | --- | --- | 
|  **DynamoDB**  |  是  |  否  |  是  |  是  |  是  | 
|  **Aurora**  |  支持  |  是  |  否  |  否  |  是  | 
|  **Redshift**  |  支持  |  是  |  否  |  否  |  是  | 

### 数据操作条件示例
<a name="data-entities-data-action-operators-examples"></a>

考虑以下数据库表，其中包含多个带有`name``city`、和`hireDate`字段的项目。


| name | city | HireDate | 
| --- | --- | --- | 
|  亚当  |  Seattle  |  2025-03-01  | 
|  艾德丽安  |  Boston  |  2025-03-05  | 
|  Bob  |  阿尔伯克基  |  2025-03-06  | 
|  Carlos  |  芝加哥  |  2025-03-10  | 
|  卡罗琳  |  NULL  |  2025-03-12  | 
|  丽塔  |  迈阿密  |  2025-03-15  | 

现在，考虑在 App Studio 中创建数据操作，以返回符合指定条件的项目的`name`字段。以下列表包含条件示例以及该表为每个示例返回的值。

**注意**  
这些示例的格式为 SQL 示例，它们可能不像在 App Studio 中那样出现，但用于说明运算符的行为。
+ `WHERE name LIKE 'Adam'`: 退货`Adam`。
+ `WHERE name LIKE 'A%'`: 退货`Adam`和`Adrienne`.
+ `WHERE name NOT LIKE 'B_B'`: 返回`Adam``Adrienne`、`Carlos`、`Caroline`、和`Rita`。
+ `WHERE contains(name, 'ita')`: 退货`Rita`。
+ `WHERE begins_with(name, 'Car')`: 退货`Carlos`和`Caroline`.
+ `WHERE city IS NULL`: 退货`Caroline`。
+ `WHERE hireDate < "2025-03-06"`: 退货`Adam`和`Adrienne`.
+ `WHERE hireDate >= DateTime.now().toISODate()`: 请注意，`DateTime.now().toISODate()`返回当前日期。在当前日期为 2025-03-10 的场景中，表达式返回`Carlos`、和。`Caroline` `Rita`

**提示**  
有关比较表达式中的日期和时间的更多信息，请参阅[日期和时间](expressions.md#expressions-date-time)。

## 删除数据操作
<a name="data-entities-data-action-delete"></a>

使用以下步骤从 App Studio 实体中删除数据操作。

1. 如有必要，请导航到要删除其数据操作的实体。

1. 选择 “**数据操作**” 选项卡。

1. 对于要删除的每个数据操作，请选择 “**编辑**” 旁边的下拉菜单，然后选择 “**删除**”。

1. 在对话框中选择 “**确认**”。

# 添加或删除示例数据
<a name="data-entities-edit-sample-data"></a>

您可以向 App Studio 应用程序中的实体添加示例数据。由于应用程序在发布之前不会与外部服务通信，因此可以使用示例数据在预览环境中测试您的应用程序和实体。

1. 如有必要，请导航到要编辑的实体。

1. 选择 “**样本数据**” 选项卡。

1. 要生成样本数据，请选择**生成更多样本数据**。

1. 要删除样本数据，请选中要删除的数据的复选框，然后按 Delete 或 Backspace 键。选择 “**保存**” 以保存更改。

# 添加或编辑连接的数据源和地图字段
<a name="data-entities-edit-connection"></a>

**提示**  
您可以按 CTRL\$1Z 撤消最近对实体所做的更改。

1. 如有必要，请导航到要编辑的实体。

1. 选择 “**连接**” 选项卡可查看或管理实体与发布应用程序时存储数据的数据源表之间的连接。连接数据源表后，您可以将实体字段映射到表的列。

1. 在**连接器**中，选择包含与所需数据源表的连接的连接器。有关连接器的更多信息，请参见[使用连接器将 App Studio 连接到其他服务](connectors.md)。

1. 在**表**中，选择要用作实体数据源的表。

1. 该表显示了实体的字段以及它们映射到的数据源列。选择 “**自动映射**” 可自动将实体字段与数据源列映射。您也可以通过在每个实体字段的下拉列表中选择数据源列来手动映射表中的字段。

# 删除实体
<a name="data-entities-delete"></a>

使用以下步骤从 App Studio 应用程序中删除实体。

**注意**  
从 App Studio 应用程序中删除实体不会删除连接的数据源表，包括相应的 DynamoDB 托管实体表。数据源表将保留在关联 AWS 账户中，如果需要，需要从相应的服务中删除。

**删除实体**

1. 如有必要，请导航到您的应用程序。

1. 选择**数据**选项卡。

1. **在左侧的 “**实体**” 菜单中，选择要删除的实体旁边的省略号菜单，然后选择 “删除”。**

1. 查看对话框中的信息，输入**confirm**并选择**删除**以删除实体。

# AWS App Studio 中的管理数据实体
<a name="managed-data-entities"></a>

通常，您可以在 App Studio 中为实体配置与外部数据库表的连接，并且必须创建每个实体字段并将其映射到连接的数据库表中的一列。更改数据模型时，必须更新外部数据库表和实体，并且必须重新映射已更改的字段。虽然这种方法很灵活，可以使用不同类型的数据源，但需要更多的前期规划和持续维护。

*托管实体*是 App Studio 为您管理整个数据存储和配置过程的一种实体。创建托管实体时，将在关联账户中创建相应的 DynamoDB 表。 AWS 这确保了内部安全透明的数据管理 AWS。对于托管实体，您可以在 App Studio 中配置该实体的架构，相应的 DynamoDB 表也会自动更新。

## 在多个应用程序中使用托管实体
<a name="managed-data-entities-other-applications"></a>

在 App Studio 应用程序中创建托管实体后，该实体就可以在其他 App Studio 应用程序中使用。通过提供单个底层资源进行维护，这有助于为具有相同数据模型和架构的应用程序配置数据存储。

在多个应用程序中使用托管实体时，必须使用创建托管实体的原始应用程序对相应的 DynamoDB 表进行所有架构更新。在其他应用程序中对该实体所做的任何架构更改都不会更新相应的 DynamoDB 表。

## 托管实体限制
<a name="managed-data-entities-limitations"></a>

**主键更新限制**：创建实体后无法更改其主键名称或类型，因为这是 DynamoDB 中的破坏性更改，会导致现有数据丢失。

重@@ **命名列**：在 DynamoDB 中重命名列时，实际上是在创建新列，而原始列仍保留原始数据。原始数据不会自动复制到新列或从原始列中删除。您可以重命名托管实体字段（称为*系统名称*），但您将无法访问原始列及其数据。重命名显示名称没有限制。

**更改数据类型**：尽管 DynamoDB 允许在创建表后灵活修改列数据类型，但此类更改可能会严重影响现有数据以及查询逻辑和准确性。数据类型更改需要转换所有现有数据以符合新格式，这对于大型活动表来说很复杂。此外，在数据迁移完成之前，数据操作可能会返回意想不到的结果。您可以切换字段的数据类型，但现有数据不会迁移到新的数据类型。

**排序列**：DynamoDB 支持通过排序键检索已排序的数据。排序键必须与分区键一起定义为复合主键的一部分。限制包括强制性的排序键、仅限于一个分区内的排序以及没有跨分区的全局排序。需要对排序键进行仔细的数据建模，以避免出现热分区。我们将不支持排序预览里程碑。

**加入**：DynamoDB 不支持联接。为了避免昂贵的联接操作，表在设计上是非规范化的。为了对 one-to-many关系进行建模，子表包含一个引用父表主键的属性。多表数据查询涉及从父表中查找项目以检索详细信息。作为预览里程碑的一部分，我们将不支持托管实体的本机联接。作为一种解决方法，我们将引入一个自动化步骤，该步骤可以执行 2 个实体的数据合并。这将与一级查询非常相似。我们将不支持排序预览里程碑。

**Env Stag** e：我们将允许发布进行测试，但在两个环境中使用相同的托管存储