

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

# 从 Neo4j 迁移到 Neptune 时预调配基础设施
<a name="migration-provisioning-infrastructure"></a>

Amazon Neptune 集群构建为从三个维度进行扩展：存储、写入容量和读取容量。以下各节讨论了迁移时要考虑的特定选项。

## 预调配存储
<a name="migration-provisioning-storage"></a>

任何 Neptune 集群的存储都是自动预调配的，您无需承担任何管理开销。随着集群的存储需求增加，它会以 10GB 的区块动态调整大小。因此，无需为应对未来的数据增长而估计和预调配或过度预调配存储。

## 预调配写入容量
<a name="migration-provisioning-write-capacity"></a>

Neptune 提供了一个写入器实例，可以将其垂直扩展到 [Neptune 定价页面](https://aws.amazon.com/neptune/pricing/)上提供的任何实例大小。在向写入器实例读取和写入数据时，所有事务都符合 ACID 标准，数据隔离如[Neptune 中的事务隔离级别](transactions-neptune.md)中所定义。

为写入器实例选择最佳大小要求运行负载测试，以确定工作负载的最佳实例大小。通过[修改数据库实例类](manage-console-instances-modify.md)，可以随时调整 Neptune 中任何实例的大小。您可以根据并发和平均查询延迟来估算起始实例的大小，如下面的[在预调配集群时估算最佳实例大小](#migration-provisioning-instance-sizing)所述。

## 预调配读取容量
<a name="migration-provisioning-read-capacity"></a>

Neptune 构建为水平扩展只读副本实例，方法是在集群内添加最多 15 个只读副本实例（在 [Neptune 全球数据库](neptune-global-database.md)中可添加更多），也可以垂直扩展到 [Neptune 定价页面](https://aws.amazon.com/neptune/pricing/)上提供的任何实例大小。所有 Neptune 只读副本实例都使用相同的底层存储卷，从而以最小的滞后实现数据的透明复制。

除了在 Neptune 集群中启用读取请求的水平扩展外，只读副本还充当写入器实例的失效转移目标，以实现高可用性。有关如何确定集群中只读副本的适当数量和位置的建议，请参阅[Amazon Neptune 基本操作指导](best-practices-general-basic.md)。

对于连接和工作负载不可预测的应用程序，Neptune 还支持[自动扩缩特征](manage-console-autoscaling.md)，该特征可以根据您指定的标准自动调整 Neptune 副本的数量。

要确定只读副本实例的最佳大小和数量，需要运行负载测试以确定它们必须支持的读取工作负载的特性。通过[修改数据库实例类](manage-console-instances-modify.md)，可以随时调整 Neptune 中任何实例的大小。您可以根据并发和平均查询延迟来估算起始实例的大小，如[下一节](#migration-provisioning-instance-sizing)所述。

## 使用 Neptune 无服务器根据需要自动扩展读取器和写入器实例
<a name="migration-provisioning-serverless"></a>

虽然能够估算预期工作负载所需的计算容量通常很有帮助，但您可以配置 [Neptune 无服务器](neptune-serverless.md)特征，以自动纵向扩展和缩减读取和写入容量。这可以帮助您满足峰值需求，同时还可以在需求减少时自动缩减规模。

## 在预调配集群时估算最佳实例大小
<a name="migration-provisioning-instance-sizing"></a>

要估算最佳实例大小，需要知道 Neptune 中的平均查询延迟、工作负载何时运行，以及正在处理的并发查询数量。实例大小的粗略估计值可以通过将平均查询延迟乘以并发查询数来计算。这为您提供了处理工作负载所需的平均并发线程数。

[Neptune 实例中的每个 vCPU 可以支持两个并发查询线程，因此将线程除以 2 得出CPUs 所需的 v 数，然后可以将其与 Neptune 定价页面上的相应实例大小相关联。](https://aws.amazon.com/neptune/pricing/)例如：

```
Average Query Latency:         30ms (0.03s)
Number of concurrent queries:  1000/second

Number of threads needed:      0.03 x 1000 = 30 threads
Number of vCPUs needed:        30 / 2 = 15 vCPUs
```

将其与实例CPUs 中 v 的数量相关联，我们可以看到我们粗略地估计 a `r5.4xlarge` 将是针对此工作负载尝试的推荐实例。这个估计是粗略的，仅用于为实例大小选择提供初步指导。任何应用程序都应通过调整大小操作来确定适合工作负载的适当实例数量和一种（或多种）实例类型。

还应考虑内存要求以及处理要求。当通过查询访问的数据在主内存缓冲池缓存中可用时，Neptune 的性能最高。配置足够的内存还可以显著降低 I/O 成本。

有关在 Neptune 集群中调整实例大小的更多详细信息和指导，请访问[调整 Neptune 数据库集群中数据库实例的大小](feature-overview-db-clusters.md#feature-overview-sizing-instances)页面。