Gremlin 中的字母数字排序

问题描述

我有一个数据库,正在尝试找到一种安全的方法将这些数据读入 XML 文件。读取顶点不是问题。但是随着边缘应用程序运行一段时间后进入 HeapSpace-Exception。

g.V().has(Timestamp)
.order()
.by(Timestamp,Order.asc)
.range(startIndex,endindex)
.outE()
Data to be Taken eg. Label,Id,Properties
我使用顶点的时间戳作为排序的参考以避免捕获重复项。

但是因为一些顶点构成了所有outEdges的最大值,所以程序用完了堆。我的问题是我可以使用边的字母数字 ID(UUID) 来安全地对它们进行排序,还是有其他或更好的方法来达到目标​​。

像这样:

g.E().order().by(T.id,Order.asc).range(startIndex,endindex)

解决方法

T.id 对边进行排序是一个很好的排序属性,但是问题与选择的属性无关,而是与导出的边的绝对数量有关。与其他数据库一样,海王星必须检索所有边才能对它们进行排序。检索所有这些边是堆用完的原因。要解决此问题,您可以增加实例大小以获得额外的查询内存或以不同方式导出数据。如果您查看此实用程序 https://github.com/awslabs/amazon-neptune-tools/tree/master/neptune-export,您可以看到当前推荐的最佳做法。此实用程序会将整个图形导出为 CSV 文件。在您的用例中,您可以使用此实用程序,然后将 CSV 转换为 XML 文档,或者修改代码以导出为 XML 文档。