AWS Neptune: более производительно, если отбрасывать ребра перед вершинами?

Использование — Neptune Engine: 1.0.5.1, Apache Tinkerpop: 3.5.2

Мой вопрос касается производительности удаления вершин, а не загрузки вершин.

У нас есть задание cron, которое очищает ограниченное количество (1000) «истекших» вершин.

Мы получаем и сохраняем удаляемые вершины в наборе.

Затем мы удаляем их с помощью gV([vertices]).sideEffect(drop()).next().

Это прекрасно работает.

Все удаляемые вершины будут иметь 1 inE и 1 outE.

Очевидно, что эти ребра автоматически удаляются при удалении связанной вершины.

Однако мне интересно, будет ли Нептун (под капотом) более производительным, если мы сначала возьмем и удалим ребра, а затем удалим вершины.

Просто интересно, изучил ли кто-нибудь их (в основном, используя Neptune, но это, вероятно, «вещь» и с другими базами данных графов) и имеет какие-либо веские доказательства в любом случае.

Большое спасибо

1 ответ

Что касается использования Amazon Neptune — если вы просто выполняете однопоточное удаление 1000 вершин, где каждая имеет только одно инцидентное ребро, то то, что вы делаете, в порядке. Если вы отбрасывали тысячи (или более) вершин в многопоточном режиме, то сначала отбрасывая ребра, можно избежать коллизий, поскольку разные потоки могут попытаться заблокировать один и тот же объект в базе данных. В таких случаях, чтобы избежать конфликтов и, следовательно, избежать повторных попыток, удаление ребер первым может повысить производительность.

Другие вопросы по тегам