问题描述
我有一个数据库,正在尝试找到一种安全的方法将这些数据读入 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 文档。