微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

修剪海王星中的大量陈旧记录

如何解决修剪海王星中的大量陈旧记录

我正在遵循从我们的海王星图形数据库中修剪陈旧数据的最佳实践,如下所示。 https://docs.aws.amazon.com/neptune/latest/userguide/best-practices-gremlin-prune.html

g.V().has('timestamp',lt(datetime('2021-02-23'))).drop()

这适用于小型数据集,但我的图表每天生成大约一百万个顶点。我是否应该让服务连续运行,只是像下面这样分批删除顶点?修剪大型数据集的最佳方法是什么?

while (pruneCount > 0):
   g.V().has('timestamp',lt(datetime('2021-02-23'))).limit(1000).drop()
   pruneCount = g.V().has('timestamp',lt(datetime('2021-02-23'))).count()

解决方法

如果您需要删除一百万个顶点,我发现可行的一种策略是检索您需要删除的所有顶点(和边)的 ID,然后跨多个线程分批删除它们。通过这种方式,您可以相当有效地删除 100 万个元素。如果两个线程试图删除两个相邻的顶点,通常最好在删除顶点之前删除边以避免可能的并发修改异常。

您可以根据自己的目的调整此处使用的算法:https://github.com/awslabs/amazon-neptune-tools/tree/master/drop-graph

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。