Как шаг за шагом подключить Gremlin к базе данных Neo4j?

Я новичок в Гремлин. И я хочу подключить Gremlin к базе данных Neo4j, и я уже пробовал способ подключения к базе данных Neo4j.

gremlin> g = new neo4jgraph[EmbeddedGraphDatabase[C:\Users\Olivia Stella\Documents\Neo4j\default.graphdb]]

и до того, как он подключился к Gremlin, появилось сообщение об ошибке:

java.util.prefs.WindowsPreferences <init> Warning: Could not open/create prefs root node Software\JavaSoft\prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.

Примечание:

-Гремлин 2.4.0

-Java SDK 7

-Нео4дж 2.0.1


person Rio Eduardo BG Simatupang    schedule 02.04.2014    source источник
comment
Можете ли вы поделиться полной трассировкой стека? Есть конечно вариант с гремлиновой оболочкой показать эти? Обратите внимание, что для Neo4j 2.0.x вам понадобится tinkerpop 2.5-SNAPSHOT (афаик).   -  person Michael Hunger    schedule 02.04.2014
comment
Привет, Майкл, я только что снова нашел вашу статью о поддержке Gremlin в Neo4j -› github.com/neo4j-contrib /gremlin-plugin, но после того, как я запустил пакет mvn clean, он возвращает некоторые сообщения об ошибках, например com.tinkerpop.gremlin.groovy.console.Console.<init><Console.java:58>... Пожалуйста, помогите. Спасибо   -  person Rio Eduardo BG Simatupang    schedule 02.04.2014
comment
поделитесь трассировкой стека, иначе мы не можем понять, в чем проблема.   -  person MarcoL    schedule 02.04.2014
comment
Мне жаль @MarcoCI. Я новичок в Гремлин. как распечатать полную трассировку стека в cmd, чтобы я мог ею поделиться?   -  person Rio Eduardo BG Simatupang    schedule 02.04.2014


Ответы (1)


Это не похоже на допустимый синтаксис Gremlin из REPL:

gremlin> g = new Neo4jGraph('/tmp/neo4j')
==>neo4jgraph[EmbeddedGraphDatabase [/tmp/neo4j]]
gremlin> g.addVertex([name:'stephen'])
==>v[0]
gremlin> g.V.map
==>{name=stephen}
gremlin> g.commit()
==>null
gremlin> g.shutdown()
==>null
gremlin> g = new Neo4jGraph('/tmp/neo4j')
==>neo4jgraph[EmbeddedGraphDatabase [/tmp/neo4j]]
gremlin> g.V.map                         
==>{name=stephen}

В качестве альтернативы, если у вас есть существующий экземпляр org.neo4j.graphdb.GraphDatabaseService, который вы хотели бы использовать, вы можете передать его в конструктор Neo4jGraph вместо пути к файлам базы данных (или туда, где они должны быть).

person stephen mallette    schedule 02.04.2014
comment
Спасибо, Стивен. Оно работает. Но где я могу найти /tmp/neo4j? и где я могу найти org.neo4j.graphdb.GraphDatabaseService? А как поменять /tmp/neo4j на C:\Users\Olivia Stella\Documents\Neo4j\default.graphdb. Спасибо. - person Rio Eduardo BG Simatupang; 02.04.2014
comment
похоже, что вы находитесь в Windows, поэтому я бы предположил, что это c:\tmp\neo4j. В вашем случае я бы попытался указать на: new Neo4jGraph('C:\Users\Olivia Stella\Documents\Neo4j\') - person stephen mallette; 02.04.2014
comment
О да, Стивен, почему я не могу использовать базу данных после того, как я ее создал? Там написано Unable to lock store. Are you running another Neo4j process against this database? - person Rio Eduardo BG Simatupang; 02.04.2014
comment
Вы не можете открыть экземпляр Neo4j, если он уже открыт в другом месте. Как говорится в сообщении, БД заблокирована. Попробуйте Neo4jHaGraph, если хотите: github.com/tinkerpop/blueprints/wiki/Neo4jHa. -Реализация - person stephen mallette; 02.04.2014
comment
спасибо за ссылку, но есть ли другие способы сделать БД разблокированной? - person Rio Eduardo BG Simatupang; 02.04.2014
comment
Я предполагаю, что в этом каталоге есть существующий процесс JVM, подключенный к этому графу. Завершите этот процесс, а затем повторно выполните команду, чтобы открыть базу данных в REPL Gremlin. - person stephen mallette; 02.04.2014
comment
Но это странно, я уже отключил процесс JVM, но он все еще получает ошибку. Там написано Starting Neo4j Server failed: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, C:\Users\Olivia Stella\Documents\Neo4j\DB_Gremlin. Я все еще не понимаю, как гремлин работает с базой данных Neo4j, должен ли я делать это g = new Neo4jGraph('C:\Users\Olivia Stella\Documents\Neo4j\DB_Gremlin') каждый раз, когда я хочу подключиться и использовать базу данных Neo4j? Нужно больше объяснений. - person Rio Eduardo BG Simatupang; 02.04.2014
comment
Я обновил образец кода. Обратите внимание, что я добавляю вершину, фиксирую и закрываю граф. Когда я хочу использовать его снова, я создаю новый экземпляр g и затем могу получить доступ к данным, которые я поместил в него ранее. Вы не должны запускать Neo4j Server, когда пытаетесь подключиться к Gremlin, если только вы не подключаетесь к Neo4jHaGraph, поскольку Neo4jGraph предполагает, что один процесс взаимодействует с графом в любое время. Neo4j Server будет вторым процессом, пытающимся использовать этот каталог, и поэтому вы можете ожидать ошибок. - person stephen mallette; 02.04.2014
comment
Отлично. Итак, если я хочу запустить Gremlin вместе с Neo4j Server, чтобы я мог видеть, что я сделал в базе данных через интерфейс веб-браузера neo4j, я должен подключиться к Neo4jHaGraph? Я спросил другие способы, кроме Neo4jHaGraph, потому что вижу в ваших документах, что это должно быть реализовано с помощью java. Или, может быть, я неправильно понял. Я все еще не понимаю этих двух кодов: ‹dependency›...‹/dependency› и Map‹String.. Куда мне их поместить, чтобы я мог использовать Neo4jHaGraph? - person Rio Eduardo BG Simatupang; 02.04.2014
comment
Информация о зависимости предназначена для Maven. Это не имеет ничего общего с Gremlin REPL и созданием экземпляра Neo4jHAGraph внутри него. Создайте экземпляр карты, как показано в документации, с соответствующим экземпляром сервера Neo4j HA и передайте его Neo4jHAGraph при построении. Возможно, вам придется потратить некоторое время на чтение дополнительной информации о Neo4j HA и изучение экосистемы Java, прежде чем двигаться дальше. - person stephen mallette; 02.04.2014
comment
Хорошо, большое спасибо за объяснение, Стивен. - person Rio Eduardo BG Simatupang; 02.04.2014