【发布时间】:2019-05-07 18:25:14
【问题描述】:
我正在使用 Clojure/Ogre 从我的 clojure api 应用程序与 Janusgraph DB 进行交互。由于我对这项技术非常陌生,我想我可能错过了一些东西。以下是我面临的问题,
- 当我通过我的 clojure 应用程序添加一个新顶点时,我的 janusgraph DB 正在显示该顶点,这是预期的。但是当我尝试从应用程序更新顶点属性时,数据库没有显示更新的结果。我需要从 gremlin shell 显式打开“janusgraph-cql.properties”文件,然后只在数据库中显示更新的结果。
- 当我使用 clojure/ogre 语法从应用程序中查询顶点时,即使在通过应用程序中的 clojure/ogre 语法更新顶点属性值之后,我也会得到旧数据。缓存正在存储之前查询的结果。当我多次(第 5 次)执行相同的查询语句时,它会显示更新的结果。
当更新任何顶点属性时,我对如何停止或更新缓存感到非常困惑。
请在下面找到详细信息, 以下查询用于更新现有顶点。
(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 shell 中查询时,它会显示新数据。
以下语句用于从 clojure 应用程序中检索数据,
(og/traverse g (og/V) (og/has :name "xyz")
(og/value-map) (og/into-list!))
即使在更新了顶点属性之后,当我从我的 clojure 应用程序中执行上述语句时,我也只能获取旧数据。当我第五次执行时,只有我得到新数据,如果我再次执行相同的结果,则会重复。缓存似乎存储了五个先前查询的结果。
我的属性文件,
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
请帮助我解决这个过时的数据检索问题,以及如何在从 clojure 应用程序更新后立即将更新反映到 janusgraph DB 中,而无需每次都显式打开属性实例。非常感谢您的时间和帮助。
【问题讨论】:
标签: clojure graph-databases gremlin janusgraph