

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

# 使用 Neptune Streams 实时捕获图形更改
<a name="streams"></a>

Neptune Streams 以完全托管式方式按发生顺序即时记录对图形所做的每一个更改。启用 Streams 后，Neptune 将负责管理可用性、备份、安全性和到期等事宜。

在许多使用案例中，都可能需要即时捕获对图的更改，下面是一些示例：
+ 您可能希望在发生某些更改时应用程序能够自动通知用户。
+ 您可能还想在其他数据存储中维护图表数据的最新版本，例如亚马逊 OpenSearch 服务、亚马逊或亚马逊简单存储服务 (Amazon S3) Simple Storage Service。 ElastiCache

Neptune 对更改日志流使用与图形数据相同的原生存储。它随进行更改的事务同步写入更改日志条目。您可以使用 HTTP REST API 从日志流检索这些更改记录。（有关信息，请参阅 [调用 Streams API](streams-using-api-call.md)。）

下图显示了如何从 Neptune Streams 检索更改日志数据。

![显示如何从写入器实例和只读副本检索更改日志数据的示意图。](http://docs.amazonaws.cn/neptune/latest/userguide/images/neptune-streams.png)


**Neptune Streams 保证**
+ 事务一旦完成，其所做的更改将立即可供写入器和读取器读取（读取器仍有正常的复制滞后）。
+ 更改记录严格按照发生顺序显示（这包括在事务中进行的更改）。
+ 更改流不包含重复项。每个更改仅记录一次。
+ 更改流是完整的。不会丢失或忽略任何更改。
+ 更改流包含确定数据库本身在任意时间点的完整状态所需的全部信息，前提是起始状态已知。
+ 可以随时打开或关闭 Streams。

**Neptune Streams 操作属性**
+ 更改日志流是完全托管的。
+ 更改日志数据作为进行更改的同一事务的一部分同步写入。
+ 启用 Neptune Streams 后，您将产生 I/O 与更改日志数据相关的存储费用。
+ 默认情况下，更改记录在创建一周后自动清除。从[引擎版本 1.2.0.0](engine-releases-1.2.0.0.md) 开始，可以使用 [neptune\_streams\_expiry\_days](parameters.md#parameters-db-cluster-parameters-neptune_streams_expiry_days) 数据库参数将此保留期更改为 1 到 90 之间的任意天数。
+ 流的读取性能随实例扩展。
+ 您可以使用只读副本实现高可用性和高读取吞吐量。您可以并发创建和使用任意数量的流读取器。
+ 更改日志数据在多个可用区之间复制，因此具有高持久性。
+ 日志数据与图形数据本身一样安全。可以在静态和传输过程中加密。可以使用 IAM、Amazon VPC 和 Amazon Key Management Service (Amazon KMS) 控制访问权限。与图表数据一样，可以对其进行备份，然后使用恢复 (PITR) 进行 point-in-time恢复。
+ 流数据作为每个事务的一部分同步写入，因此会导致总体写入性能稍微下降。
+ 流数据不进行分片，因为 Neptune 在设计上是单分片的。
+ 日志流 `GetRecords` API 使用的资源与所有其它 Neptune 图形操作相同。这意味着客户端需要在流请求和其他数据库请求之间进行负载平衡。
+ 禁用流后，所有日志数据将立即变得不可访问。这意味着您必须在禁用日志记录之前读取所有感兴趣的日志数据。
+ 目前没有与的本机集成 Amazon Lambda。日志流不会生成可触发 Lambda 函数的事件。

**Topics**
+ [使用 Neptune Streams](streams-using.md)
+ [Neptune Streams 中的序列化格式](streams-change-formats.md)
+ [Neptune Streams 示例](streams-examples.md)
+ [Amazon CloudFormation 使用在 Streams 使用者应用程序中设置 Neptune-to-Neptune复制](streams-consumer-setup.md)
+ [使用 Neptune 流跨区域复制进行灾难恢复](streams-disaster-recovery.md)