Я добавляю в граф вершины с определенной меткой (в настоящее время использую gremlin-python вместо gremlinv3.3). Я вручную добавляю к этим узлам свойство «отметка времени». Я хочу иметь возможность найти последнюю добавленную вершину с этой меткой, чтобы затем получить оттуда определенное количество вершин в обратном направлении вниз по цепочке. Добавление набора ребер типа «следующий» от второй самой новой до самой новой вершины при каждом добавлении позволит мне выполнить поиск в обратном направлении, как только я найду самую новую вершину.
Я хочу иметь возможность найти последняя добавленная вершина за сублинейное время (в идеале время O (1)). Вот пара идей, как это сделать:
- Я мог бы вручную поддерживать узел типа "самый новый", который указывает на самую новую вершину этого типа, а затем искать его.
- Я мог бы создать двоичное дерево индексных вершин по этим вершинам по мере их добавления, так что поиск по дереву и обратно от любой из этих вершин доставлял меня к самому новому узлу за O (log (n)) времени.
- Также может быть, что я мог бы использовать свойство timestamp для эффективного поиска, но мне не ясно, как это сделать.
Проблема в том, что я недостаточно знаю о том, как поиск по графу реализован изнутри, чтобы знать, какая из этих стратегий лучше. Кто-нибудь может помочь? Также вероятно, что то, что я создаю, будет повторно развернуто в экземпляре amazon-neptune, и, опять же, мне не ясно, изменит ли это лучшую стратегию.