一般性问题
问:什么是 Amazon Neptune?
Amazon Neptune 是一项快速、可靠且完全托管的图形数据库服务,可以帮助您轻松构建和运行处理高度互连数据集的应用程序。为了提高性能而调整针对高度互连数据的 SQL 查询不仅复杂性高,而且难度也大。而凭借 Amazon Neptune,您可以使用常用的开放图形查询语言执行强效的查询,这类查询易于编写并且能够针对互连数据实现很好的执行效果。Neptune 的核心是一个专门构建的高性能图形数据库引擎,它经过优化,可存储数十亿种关系并以毫秒延迟查询图形。您可以将 Neptune 用于图形使用案例,例如推荐引擎、欺诈检测、知识图谱、药物开发和网络安全。Amazon Neptune 属于完全托管型服务,能够处理耗时任务,例如预置、修补、备份、恢复、故障检测和修复。您只需为您使用的每个 Amazon Neptune 数据库实例支付单项月度费用。无需缴纳预付款或签订长期合同。
问:Amazon Neptune 支持哪些常用的图形查询语言?
Amazon Neptune 既支持开源 Apache TinkerPop Gremlin 图形遍历语言,又支持 W3C 标准资源描述框架 (RDF) SPARQL 查询语言。
问:我能否在同一个 Neptune 实例中使用 Apache TinkerPop Gremlin 和 RDF/SPARQL?
可以,每个 Neptune 实例都同时提供一个 Gremlin Websocket Server 和一个 SPARQL 1.1 Protocol REST 终端节点。数据在堆栈之间分隔,也就是说,您不能对 RDF 数据执行 Gremlin 遍历,反之亦然。这是为了让您通过试用了解哪一个最适合您的应用程序。在生产中,由于资源会在单个实例上共享,我们建议客户端只通过其中一种语言访问实例,即 Gremlin 或 SPARQL。
问:如何从现有的 Apache TinkerPop Gemlin 应用程序迁移到 Amazon Neptune?
Amazon Neptune 提供可同时支持 Websocket 和 REST 连接的 Apache TinkerPop Gremlin Server。在您预置 Amazon Neptune 实例后,您可以将现有 TinkerPop 应用程序配置为使用该服务提供的终端节点。另请参阅通过 Gremlin 访问图形。
问:我是否需要更改客户端驱动程序才能使用 Amazon Neptune 的 Gremlin Server?
不需要,Amazon Neptune 的 Gremlin Server 将使用 Websocket 和 REST 连接支持与 Apache TinkerPop 3.3 版兼容的客户端。
问:如何从具有 SPARQL 终端节点的三重存储迁移到 Amazon Neptune?
Amazon Neptune 提供了一个实施 SPARQL 1.1 协议的 HTTP REST 终端节点。在您预置服务实例后,您可以将应用程序配置为指向 SPARQL 终端节点。另请参阅通过 SPARQL 访问图形。
问:是否需要更改客户端驱动程序才能使用 Amazon Neptune 的 SPARQL 终端节点?
不需要,Amazon Neptune 的 SPARQL 终端节点适用于任何支持 SPARQL 1.1 协议的客户端。
问:Neptune 是否符合 ACID(原子性、一致性、隔离性、耐久性)?
是的,Neptune 符合 ACID 并具有立即一致性。
问:为什么使用 Amazon Neptune 需要 Amazon RDS 权限和资源?
Amazon Neptune 是专门构建的高性能图形数据库引擎。对于某些管理功能(例如实例生命周期管理、使用 Amazon Key Management Service (KMS) 密钥加密静态数据和安全组管理),Neptune 需要利用与 Amazon RDS 共享的操作技术。
性能
问:是否需要使用 Amazon Neptune 为数据创建索引?
不需要,现有的图形数据库用户通常需要尝试并猜测供应商实施。明确维护索引只是其中一个方面。Amazon Neptune 不要求您创建特定索引即可实现良好的查询性能,并且它能够最大限度地减少对数据库设计进行再次猜测的需要。
问:哪些类型的图形查询工作负载为支持 Amazon Neptune 而进行了优化?
Amazon Neptune 旨在支持需要高吞吐量和低延迟图形查询的图形应用程序。Amazon Neptune 最多支持 15 个只读副本,每秒可以支持 10 万个查询。
问:Amazon Neptune 是否执行查询优化?
执行,Amazon Neptune 对 SPARQL 查询和 Gremlin 遍历都使用查询优化。
问:Amazon Neptune 是否基于关系数据库构建?
不是,Amazon Neptune 是专门构建的高性能图形数据库引擎。Neptune 能够高效存储和导航图形数据,并使用内存中的扩展优化架构来支持对大型图形进行快速查询评估。
定价
问:使用 Amazon Neptune 需要多少费用?
有关最新定价信息,请参阅定价页面。
问:Amazon Neptune 跨三个可用区以六种方法复制数据库卷的每个组块。这是否意味着我的有效存储价格将是定价页面上所示价格的三到六倍?
不是。价格中已包含 Amazon Neptune 复制功能的费用。我们将根据您的数据库在数据库层消耗的存储量向您收费,而非根据在 Amazon Neptune 的虚拟化存储层消耗的存储量向您收费。
问:Amazon Neptune 中的 IO 是什么?如何计算它们?
IO 是 Amazon Neptune 针对基于 SSD 的虚拟化存储层执行的输入/输出操作。每个数据库页面读取操作计为一个 IO。Amazon Neptune 针对存储层执行读取操作,以获取缓冲区缓存中不存在的页面。在 Amazon Neptune 中,每个页面为 16KB。
Amazon Neptune 旨在消除不必要的 IO 操作,以降低成本并确保资源可用于提供读/写流量。只有将事务日志记录推送到存储层,完成耐久型写入时,才消耗写入 IO。写入 IO 以 4KB 单位计算。例如,1024 字节的事务日志记录计为一个 IO 操作。然而,当事务日志小于 4KB 时,可由 Amazon Neptune 数据库引擎批量执行并发写入操作,以便优化 I/O 消耗情况。与传统数据库引擎不同,Amazon Neptune 绝不会将修改后的数据库页面推送到存储层,这会进一步减少 IO 消耗量。
硬件和扩展
问:Amazon Neptune 数据库的最小和最大存储限制是多少?
最小存储空间为 10GB。根据您的数据库使用情况,您的 Amazon Neptune 存储将以 10GB 的增量自动增长到多达 64TB,而不会影响数据库的性能。无需提前预置存储空间。
问:如何扩展与 Amazon Neptune 数据库实例关联的计算资源?
在 亚马逊云科技 管理控制台中,选择所需的数据库实例并单击“修改”按钮,即可扩展分配至数据库实例的计算资源。通过更改数据库实例类来修改内存和 CPU 资源。
修改数据库实例类时,系统将在指定的维护时段内应用您请求的更改。或者,您可以使用“立即应用”标记立即应用您的扩展请求。执行扩展操作时,这两种选项均会造成几分钟的可用性影响。请注意,任何其他待定的系统更改也将同时应用。
备份和还原
问:如何为数据库实例启用备份?
Amazon Neptune 数据库实例上始终都会启用自动备份。备份不会影响数据库性能。
问:我能否拍摄数据库快照并根据需要保留任意长的时间?
可以,拍摄快照不会影响性能。请注意,从数据库快照中还原数据需要新建数据库实例。
问:如果数据库发生故障,应使用什么恢复路径?
Amazon Neptune 在 3 个可用区中自动维护 6 个数据副本,并将自动尝试在运行状况正常的可用区恢复您的数据库,而不会造成数据丢失。您的数据在 Amazon Neptune 存储内不可用的情况不太可能出现,您可以从数据库快照中进行还原或对新实例执行时间点还原操作。请注意,时间点还原操作的最新可还原时间为前 5 分钟。
问:如果删除数据库实例,我的自动化备份和数据库快照会发生什么情况?
您可以选择在删除数据库实例时创建最终的数据库快照。如果您执行此操作,可以在之后使用此数据库快照还原已删除的数据库实例。在删除数据库实例后,Amazon Neptune 会将用户创建的这个最终数据库快照与其他所有手动创建的数据库快照一起保留删除数据库实例后只会保留数据库快照(即,为时间点还原创建的自动备份不会保留)。
问:我能否与其他 亚马逊云科技 账户共享快照?
可以。借助 Neptune,您可以创建数据库快照,以便在以后用于还原数据库。您可以与其他 亚马逊云科技 账户共享快照,接收账户的所有者可以使用您的快照还原包含您的数据的数据库。您甚至可以选择公开快照,也就是说,任何人都能还原包含您的(公开)数据的数据库。您可以使用此功能在拥有不同 亚马逊云科技 账户的各种环境(生产、开发/测试、模拟等)之间共享数据,也可以将所有数据的备份安全保存到一个单独的账户中,以防主 亚马逊云科技 账户遭受攻击。
问:我是否需要为共享快照付费?
在账户之间共享快照无需付费。但是,您需要为快照本身以及通过共享快照还原的任何数据库付费。了解有关 Amazon Neptune 定价的更多信息。
问:我能否自动共享快照?
我们不支持自动数据库快照共享。要共享自动快照,您必须手动创建快照的副本,然后共享该副本。
问:我能将快照共享给多少个账户?
您可以将手动快照共享给最多 20 个 亚马逊云科技 账户 ID。如果您需要将快照共享给 20 个以上的账户,则可以将快照作为公开快照进行共享,或联系支持人员要求增加配额。
问:我能否共享加密的 Amazon Neptune 快照?
可以,您可以共享加密的 Amazon Neptune 快照。
问:我能否在 Amazon Neptune 服务之外使用 Amazon Neptune 快照?
不可以,Amazon Neptune 快照只能在该服务内部使用。
高可用性和复制
问:Amazon Neptune 如何提高我的数据库对磁盘故障的容错能力?
Amazon Neptune 会自动将您的数据库卷分成分散在很多个磁盘上的 10GB 的区段。每 10GB 的数据库卷组块都能在三个可用区中用六种方法进行复制。Amazon Neptune 旨在以透明方式应对多达两个数据副本丢失的情况,而不会影响数据库写入可用性,还能在不影响读取可用性的情况下应对多达三个副本丢失的情况。Amazon Neptune 存储还具有自我修复能力。数据块和磁盘会不断进行扫描以查看是否存在任何错误,并自动修复。
问:Amazon Neptune 如何缩短数据库崩溃后的恢复时间?
与其他数据库不同的是,在数据库崩溃之后,Amazon Neptune 不需要重放最后一个数据库检查点(通常为 5 分钟)的重做日志,且不需要在数据库可用于操作之前确认所有更改都已应用。在大多数情况下,这会将数据库的重启时间缩短到 60 秒以内。Amazon Neptune 会将缓冲区缓存移出数据库进程,并使其能够在重启时立即可用。这将防止您限制访问,直到重新填充缓存以避免停止。
问:Neptune 支持哪些类型的副本?
Amazon Neptune 支持只读副本,这些副本与主实例共享相同的底层卷。主实例进行的更新对所有 Amazon Neptune 副本可见。
功能 Amazon Neptune 副本
副本数量 最多 15 个
副本类型 异步(毫秒)
对主实例的性能影响 低
用作故障转移目标 是(无数据丢失)
自动故障转移 是
问:我能否将特定副本指定为优先故障转移目标?
可以。您可以为集群中的每个实例指定一个提升优先级分层。如果主实例发生故障,Amazon Neptune 会将优先级最高的副本提升为主实例。如果同一优先级分层中的 2 个或更多副本出现冲突,Amazon Neptune 会将大小相同的副本提升为主实例。
问:我能否在实例创建完成后修改优先级分层?
您随时可以修改实例的优先级分层。单纯地修改优先级分层并不会触发故障转移。
问:我能否阻止特定副本被提升为主实例?
如果您不希望某个副本被提升为主实例,可为其指定较低的优先级分层。但是,如果集群中优先级较高的副本因为某些原因无法正常运行或使用,那么 Amazon Neptune 将会提升优先级较低的副本。
问:如何改进单个 Amazon Neptune 数据库的可用性?
您可以添加 Amazon Neptune 副本。Amazon Neptune 副本与主实例共享同一个底层存储。任何 Amazon Neptune 副本都可在不丢失任何数据的情况下被提升为主实例,因此,它可用于提高主数据库实例发生故障时的容错能力。要提高数据库的可用性,只需创建 1 到 15 个副本,Amazon Neptune 将在数据库运行中断时将这些副本纳入故障转移的主要选择中。
问:执行故障转移时会发生什么情况?这种情况会持续多长时间?
Amazon Neptune 会自动处理故障转移,以便您的应用程序可以尽快恢复数据库操作,而无需手动管理干预。
- 如果您在相同或不同的可用区中有 Amazon Neptune 副本,当进行故障转移时,Amazon Neptune 会翻转您的数据库主实例终端节点的别名记录 (CNAME),以指向运行状态正常的副本。相应地,此副本会提升为新的主实例。从开始到结束,故障转移通常会在 30 秒内完成。此外,只读副本终端节点不要求在故障转移期间进行任何 CNAME 更新。
- 如果您没有 Amazon Neptune 副本(即单个实例),则 Neptune 会先尝试在与原始实例相同的可用区中创建新数据库实例。如果无法执行此操作,则 Neptune 会尝试在不同的可用区中创建新数据库实例。从开始到结束,故障转移通常会在 15 分钟内完成。
您的应用程序应在连接中断时重新尝试发出数据库请求。
问:如果我的主数据库和 Amazon Neptune 副本积极获取读取流量且发生故障转移,会发生什么情况?
Amazon Neptune 将自动检测您的主实例发生的问题,并开始将您的读取/写入流量路由到 Amazon Neptune 副本。平均来说,此故障转移将在 30 秒内完成。此外,您的 Amazon Neptune 副本提供的读取流量将短暂中断。
问:我的副本将落后主实例多久?
Amazon Neptune 副本与主实例共享同一个数据卷,因此,几乎没有复制滞后。据我们观察,滞后时间一般在 10 毫秒内。
安全性
问:我能否在 Amazon Virtual Private Cloud (Amazon VPC) 中使用 Amazon Neptune?
能,所有 Amazon Neptune 数据库实例都必须在 VPC 中创建。借助 Amazon VPC,您可以定义与您可能在自己的数据中心内运行的传统网络非常相似的虚拟网络拓扑。这样一来,您可以完全控制哪些人能访问您的 Amazon Neptune 数据库。
问:Amazon Neptune 是否支持对我的传输中数据和静态数据进行加密?
Amazon Neptune 支持 HTTPS 加密的客户端连接,还允许您使用通过 Amazon Key Management Service (KMS) 管理的密钥来加密您的数据库。在使用 Amazon Neptune 加密运行的数据库实例上,静态存储于底层存储的数据都将加密,同一集群中的自动备份、快照和副本也是如此。加密和解密操作的处理都是无缝的。有关将 KMS 与 Amazon Neptune 一起使用的更多信息,请参阅 Amazon Neptune 用户指南。
问:我能否加密现有的未加密数据库?
目前不支持对现有的未加密 Neptune 实例进行加密。要将 Amazon Neptune 加密用于现有的未加密数据库,请创建一个启用加密的新数据库实例,并将您的数据迁移到该实例中。
问:如何访问我的 Amazon Neptune 数据库?
必须通过您在 VPC 内创建数据库时输入的 HTTP 端口访问 Amazon Neptune 数据库。这样做可以为您的数据再添一重安全保障。有关如何连接到您的 Amazon Neptune 数据库的分步说明,请参阅 Amazon Neptune 用户指南。