

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

# 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：我们将允许发布进行测试，但在两个环境中使用相同的托管存储