使用Clojure Ogre更改顶点属性值后,Janusgraph db不会被更新



我正在使用clojure/ogre与我的Clojure API应用程序与Janusgraph db进行交互。由于我是这些技术的新手,因此我认为我可能会错过一些东西。以下是我面临的问题,

  • 当我从Clojure应用程序中添加一个新顶点时,我的Janusgraph DB显示了顶点,并且可以预期。但是,当我尝试更新应用程序的顶点属性时,数据库未显示更新的结果。我需要明确打开Gremlin Shell的" Janusgraph-cql.properties"文件,然后仅显示DB中的更新结果。
  • 当我使用clojure/ogre语法从应用程序中查询顶点时,即使在通过clojure/ogre语法更新Vertex属性值之后,我也会获得旧的陈旧数据。缓存正在存储先前查询的结果。当我多次执行相同的查询语句(第五次(时,它将显示更新的结果。

我非常困惑,就像在更新任何顶点属性时如何停止或更新缓存。

请在下面找到详细信息,以下查询用于更新现有顶点。

(og/traverse g (og/V)
              (og/has :name "xyz") 
              (og/property :age 32)
              (og/next!))(.commit (.tx graph))

执行上述语句后,当我打开Gremlin Shell时,我不看到更新的顶点,而仅看到旧顶点。我需要使用

明确打开属性文件
graph = JanusGraphFactory.open('config/dev/janusgraph-cql.properties')

然后,当我在Gremlin中查询时显示新数据。

以下语句使用Clojure应用程序检索数据,

(og/traverse g (og/V) (og/has :name "xyz")
  (og/value-map) (og/into-list!))

即使在更新了顶点属性之后,当我从clojure应用程序中执行上述语句时,我也只能获取旧数据。当我第五次执行时,只有我得到新数据,如果我再次执行相同的结果。Cache正在存储五个先前查询的结果。

我的属性文件,

gremlin.graph=org.janusgraph.core.JanusGraphFactory
storage.backend=cql
storage.hostname=127.0.0.1
storage.cql.keyspace=mygraph
cache.db-cache = true
cache.db-cache-clean-wait = 20
cache.db-cache-time = 180000
cache.db-cache-size = 0.5
index.search.backend=elasticsearch
index.search.hostname=127.0.0.1

请在此处帮助我如何克服此过时的数据检索问题,以及如何在不明确打开属性实例的情况下,在不明确打开属性实例之后,如何在Janusgraph db中立即反映更新。非常感谢您的时间和帮助。

如果我正确理解您的操作顺序,我相信您正在做:

  1. 在Gremlin Console中查询顶点
  2. 在Ogre中更新了相同的顶点
  3. 在Gremlin控制台再次查询该顶点,并看到了陈旧的数据

如果是这样,我相信这是可以预期的,因为控制台中的顶点正在使用当前交易中的缓存数据。如果您做以下操作,我想事情会起作用:

  1. 在Gremlin Console中查询顶点
  2. 在Ogre中更新了相同的顶点
  3. Gremlin控制台中的g.tx().rollback()发行新事务
  4. 在Gremlin控制台再次查询该顶点,然后查看更新

最新更新