在Graph数据库中使用时间戳(开始日期和结束日期(实现软删除的最佳方法是什么?
好吧,基于时间戳对遍历进行盲遍历相当简单。以这个例子为例;ts";是一个模拟时间戳,表示为long:
gremlin> g.addV('person').property('name','alice').as('a').
......1> addV('person').property('name','bob').as('b').
......2> addV('person').property('name','claire').as('c').
......3> addE('interacted').property('ts', 125).from('a').to('b').
......4> addE('interacted').property('ts', 126).from('a').to('b').
......5> addE('interacted').property('ts', 127).from('a').to('b').
......6> addE('interacted').property('ts', 126).from('b').to('c').
......7> addE('interacted').property('ts', 150).from('b').to('c').
......8> addE('interacted').property('ts', 151).from('a').to('b').iterate()
你可以简单地写下你的Gremlin来解释";ts":
gremlin> yesterday = 130
==>130
gremlin> g.V().has('person','name','alice').
......1> outE('interacted').has('ts',gt(yesterday)).inV().
......2> values('name')
==>bob
根据您的要求的复杂性,在";ts";可能会使您的代码变得繁重和混乱。如果是这样的话,SubgraphStrategy
可能会有所帮助:
gremlin> sg = g.withStrategies(SubgraphStrategy.build().edges(has('ts',gt(yesterday))).create())
==>graphtraversalsource[tinkergraph[vertices:3 edges:6], standard]
gremlin> sg.V().has('person','name','alice').out('interacted').values('name')
==>bob
gremlin> g.V().has('person','name','alice').out('interacted').values('name')
==>bob
==>bob
==>bob
==>bob