Сливное сообщение Гремлин (OLTP) - PullRequest
0 голосов
/ 24 февраля 2019

Хотя я понимаю принцип Bulking, мне любопытно узнать, как машина делает это с вашей программной точки зрения.Как обнаружить, что несколько Traverser находятся на одном узле, чтобы решить объединить и объединить их.Есть ли где-нибудь описание алгоритма, используемого для обнаружения того, что для конкретной ситуации требуется Bulk.

Кроме того, каков шаг Explicits, который вызовет массовую передачу.Есть ли какие-либо инструкции, которые могут быть добавлены к обходу, которые сделают большую часть явным образом?

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Здесь, после комментария @stephen выше, я просто хочу поделиться ссылкой на блог, который среди прочего углубляется в объяснение знаменитой LazyBarrierStrategy

0 голосов
/ 25 февраля 2019

Сыпучесть обычно происходит относительно шага barrier() и обсуждается немного в справочной документации TinkerPop здесь .Большинство людей не используют barrier() непосредственно в своих записях Gremlin (хотя вы можете это сделать), так как различные стратегии обхода, встроенные в TinkerPop (например, LazyBarrierStrategy), пытаются автоматически внедрить их в обход в тех местах, где они могут выполнить некоторые действия.хорошо.

Вы можете увидеть, где / когда barrier() шаги вводятся, выполнив explain() в вашем обходе:

gremlin> g.V().out().both().explain()
==>Traversal Explanation
=======================================================================================================================================
Original Traversal                 [GraphStep(vertex,[]), VertexStep(OUT,vertex), VertexStep(BOTH,vertex)]

ConnectiveStrategy           [D]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), VertexStep(BOTH,vertex)]
IncidentToAdjacentStrategy   [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), VertexStep(BOTH,vertex)]
MatchPredicateStrategy       [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), VertexStep(BOTH,vertex)]
RepeatUnrollStrategy         [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), VertexStep(BOTH,vertex)]
PathRetractionStrategy       [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), VertexStep(BOTH,vertex)]
FilterRankingStrategy        [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), VertexStep(BOTH,vertex)]
InlineFilterStrategy         [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), VertexStep(BOTH,vertex)]
AdjacentToIncidentStrategy   [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), VertexStep(BOTH,vertex)]
CountStrategy                [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), VertexStep(BOTH,vertex)]
LazyBarrierStrategy          [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep(2500), VertexStep(BOTH,vertex)]
TinkerGraphCountStrategy     [P]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep(2500), VertexStep(BOTH,vertex)]
TinkerGraphStepStrategy      [P]   [TinkerGraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep(2500), VertexStep(BOTH,vertex)]
ProfileStrategy              [F]   [TinkerGraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep(2500), VertexStep(BOTH,vertex)]
StandardVerificationStrategy [V]   [TinkerGraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep(2500), VertexStep(BOTH,vertex)]

Final Traversal                    [TinkerGraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep(2500), VertexStep(BOTH,vertex)]
...