Как связать гремлин с битой базой данных?

Я пытался подключиться к Bitsy graphDB, который уже содержит некоторые данные из gremlin 2.5.0 (groovy).

Я делаю это из оболочки gremlin и еще не пробовал ссылаться на классы из eclipse.

gremlin> BitsyGraph g = new BitsyGraph(java.nio.file.Paths.get('/home/ubuntu/BitsyDB');

Однако я получаю следующую ошибку:

groovysh_evaluate: 54: unable to resolve class BitsyGraph

Я уже выполнил импорт пакета com.lambdazen.bitsy.*, и импорт сработал.

Как мне заставить это работать? Или мне следует написать отличный сценарий со всеми этими командами, или мы можем написать сценарий gremlin? Я новичок в графической БД :)

Любая помощь будет высоко ценится.


person user3770825    schedule 24.06.2014    source источник


Ответы (1)


Здесь есть ряд вопросов. Во-первых, обратите внимание, что Bitsy официально совместим с TinkerPop 2.4.0, а не с 2.5.0, поэтому, хотя он может работать в консоли Gremlin 2.5.0, я бы рекомендовал вернуться к 2.4.0.

Затем вы должны быть немного осторожны с .* импортом, поскольку он не проверяется:

gremlin> import anything.that.i.want.*
==>import com.tinkerpop.gremlin.*
...
==>import anything.that.i.want.*

Наконец, причина, по которой ваш класс не может быть найден, заключается в том, что Bitsy не является реализацией Blueprints, поддерживаемой TinkerPop, и поэтому не поставляется с дистрибутивом Gremlin. Вы можете сделать одно из двух:

  1. Скопируйте файлы jar Bitsy в путь к классам Gremlin - обязательно получите все зависимости, иначе он может работать некорректно.
  2. Используйте Grape, чтобы подключить Bitsy для сеанса консоли Gremlin

Для последнего вы можете выполнить следующие команды:

gremlin> Grape.grab([group:'com.lambdazen.bitsy',module:'bitsy',version:'1.5.1'])
==>null
gremlin> import com.lambdazen.bitsy.BitsyGraph                                   
==>import com.tinkerpop.gremlin.*
==>import com.tinkerpop.gremlin.java.*
...
==>import com.lambdazen.bitsy.BitsyGraph
gremlin> import java.nio.file.*                                                  
==>import com.tinkerpop.gremlin.*
==>import com.tinkerpop.gremlin.java.*
...
==>import java.nio.file.*
gremlin> dbPath = Paths.get("/tmp/bitsy")                                        
==>tmp
==>bitsy
gremlin> g = new BitsyGraph(dbPath)
08:04:03.392 [main] INFO  c.l.b.s.FileBackedMemoryGraphStore - Starting graph FileBackedMemoryGraphStore-2(path = /tmp/bitsy)
...
08:04:03.505 [main] DEBUG com.lambdazen.bitsy.store.LoadTask - Using RecordReader for CommittableFileLog(/tmp/bitsy/txB.txt)
==>bitsygraph[/tmp/bitsy]
person stephen mallette    schedule 24.06.2014
comment
Привет, Стивен, спасибо за ответ. Вышеупомянутые шаги сработали. Думаю :), ну я просто хочу сейчас запустить несколько основных команд на консоли. Я создал BitsyDB с 4 вершинами и 3 ребрами и сохранил их. После того, как я импортировал эту БД, я просто хотел проверить то же самое с консоли, но когда я запустил такие команды, как - person user3770825; 30.06.2014
comment
gVcount () вернул 0. Также похоже, что когда я загрузил новую БД, произошла ошибка с txB.txt 03: 30: 01.393 [main] WARN com.lambdazen.bitsy.store.LoadTask - Zapped file / home /ubuntu/BitsyDB1/txB.txt для восстановления после ошибки 03: 30: 01.393 [main] INFO com.lambdazen.bitsy.store.LoadTask - Восстановление /home/ubuntu/BitsyDB1/txB.txt завершено == ›bitygraph [ / home / ubuntu / BitsyDB1] @stephenmallette - person user3770825; 30.06.2014
comment
Возможно ли, что вы не закрыли Bitsy должным образом, когда впервые создали его? Что произойдет, если вы создадите свой график в консоли Gremlin? Тогда все нормально работает? - person stephen mallette; 30.06.2014