本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Neptune 存储、可靠性和可用性
Amazon Neptune 使用分布式共享存储架构,可随着数据库存储需求的增长自动扩展。
Neptune 数据存储在集群卷中,该集群卷是使用非易失性内存 Express (NVMe) 固态硬盘的单个虚拟卷。集群卷中包含一组称为分段的逻辑块。每个分段都分配 10 千兆字节 (GB) 的存储空间。每个分段中的数据将复制到六个副本中,然后将这些副本分配给数据库集群所在Amazon区域中的三个可用区 (AZ)。
创建 Neptune 数据库集群时,会为其分配一个 10 GB 的分段。随着数据量的增加并超过当前分配的存储空间,Neptune 会通过添加新分段自动扩展集群体积。在所有支持的区域,Neptune 集群卷可增大到最大大小 128 tebibytes (TiB)。 GovCloud但是发布时间:1.0.2.2 (2020-03-09),对于之前发布的引擎版本,所有区域的集群卷大小都限制为 64 TiB。
数据库集群卷包含所有用户数据、索引和字典(Neptune 图数据模型在本节中介绍),以及内部事务日志等内部元数据。所有这些图数据(包括索引和内部日志数据)不能超过集群卷的最大大小。
Neptune 存储分配
即使 Neptune 集群卷最大可增大到 128 TiB(在某些区域中为 64 TiB),您也只需为实际分配的空间付费。分配的总空间由存储空间最高水位线决定,这是集群存在期间任何时候分配给群集体积的最大容量。
这意味着,即使从集群卷中删除了用户数据,例如通过删除查询g.V().drop()
,分配的总空间也保持不变。Neptune 确实会自动优化未使用的分配空间,以便将future 重复使用。
除用户数据外,另外两种类型的内容会消耗内部存储空间,即字典数据和内部事务日志。尽管字典数据与图形数据一起存储,但即使字典支持的图形数据已被删除,它也会无限期保存,这意味着如果重新引入数据,条目可以重复使用。内部日志数据存储在单独的内部存储空间中,该存储空间有自己的最高水位线。当内部日志过期时,它占用的存储空间可以重新用于其他日志,但不能用于图形数据。为日志分配的内部空间量包含在VolumeBytesUsed
CloudWatch 指标报告的总空间中。
检查将分配存储最佳实践的存储空间保持在最低限度并重复使用空间的方法。
Neptune 存储计费
如上所述,存储成本是根据存储量最高水位线计费的。尽管您的数据被复制到六个副本中,但您只需要为数据的一个副本付费。
您可以通过监控VolumeBytesUsed
CloudWatch 指标来确定数据库集群当前的存储高水位线是多少(参见使用亚马逊监控Neptune CloudWatch)。
可能影响您的 Neptune 存储成本的其他因素包括数据库快照和备份,它们作为备份存储单独计费,基于 Neptune 的存储成本(参见CloudWatch对于管理 Neptune 备份存储有用的指标。
但是,如果您创建数据库的克隆,则该克隆指向的集群容量与数据库集群本身使用的集群体积相同,因此不会为原始数据收取额外的存储费用。对克隆的后续更改会使用该copy-on-write 协议,并且确实会导致额外的存储成本。
有关海王星定价的更多信息,请参阅亚马逊 Neptune 定价
Neptune
由于某些类型的数据会消耗 Neptune 中的永久存储空间,因此请使用以下最佳做法来避免存储增长出现大幅峰值:
在设计图表数据模型时,尽可能避免使用本质上是临时的属性键和面向用户的值。
如果您计划更改数据模型,则在使用快速重置 API 清除该数据库集群中的数据之前,不要使用新模型将数据加载到该数据库集群中。最好的办法通常是将使用新模型的数据加载到新的数据库集群上。
-
对大量数据进行操作的事务会相应地生成大型内部日志,这会永久增加内部日志空间的高水位线。例如,删除数据库集群中所有数据的单个事务可能会生成庞大的内部日志,这将需要分配大量内部存储,从而永久减少图形数据的可用空间。
为避免这种情况,请将大型事务拆分成较小的事务并留出间隔时间,这样相关的内部日志就有机会过期并释放其内部存储空间供后续日志重复使用。
为了监控 Neptune 集群容量的增长,您可以对该
VolumeBytesUsed
CloudWatch 指标设置 CloudWatch 警报。如果您的数据达到集群卷的最大大小,这可能特别有用。有关更多信息,请参阅 Amazon CloudWatch 警报。
当您有大量未使用的分配空间时,缩小数据库集群使用的存储空间的唯一方法是导出图表中的所有数据,然后将其重新加载到新的数据库集群中。有关从数据库集群导出数据的简便方法,请参阅 Neptune 的数据导出服务和实用程序,以及有关将数据导回 Neptune 的简便方法,请参阅 Neptune 的批量加载器。
注意
创建和恢复快照不会减少分配给数据库集群的存储量,因为快照会保留集群底层存储的原始映像。如果分配的存储空间中有大量未被使用,则减少分配的存储量的唯一方法是导出图表数据并将其重新加载到新的数据库集群中。
Neptune 存储可靠性和高可用性
Amazon Neptune 的设计具有可靠、持久和容错的特点。
Neptune 数据的六个副本保存在三个可用区 (AZ) 上,这一事实确保了数据的存储高度耐用,数据丢失的可能性非常低。无论其中是否有数据库实例,数据都会自动在可用区之间复制,并且复制的数量与集群中的数据库实例数量无关。
这意味着您可以快速添加只读副本,因为 Neptune 不会创建图形数据的新副本。相反,只读副本连接到已包含您的数据的集群卷。同样,删除只读副本不会删除任何基础数据。
只有在删除集群卷的所有数据库实例后,才能删除集群卷及其数据。
Neptune 还会自动检测集群卷包含的分段中的故障。当分段中数据的副本损坏时,Neptune 会立即修复该分段,使用同一分段中的其他数据副本来确保修复的数据是最新的。因此,Neptune 将避免数据丢失,并减少了执行 point-in-time 还原以从磁盘故障恢复的需求。