Загрузка данных в Титан с лампочками и последующий доступ к ним

Я полный новичок в базах данных графов и во всей экосистеме Титана, поэтому, пожалуйста, извините, что я звучу глупо. Я тоже страдаю от отсутствия документации -_-

Я установил титан сервер. Я использую Cassandra в качестве серверной части.

Я пытаюсь загрузить основные данные Twitter в Titan с помощью Python. Для этой цели я использую библиотеку bulbs. Допустим, у меня есть список людей, на которых я подписан в Твиттере, в списке друзей.

мой скрипт на питоне выглядит так

from bulbs.titan import Graph
# some other imports here

# getting the *friends* list for a specified user here


g = Graph()

# a vertex of a specified user
center = g.vertices.create(name = 'sergiikhomenko')


for friend in friends:
    cur_friend = g.vertices.create(name = friend)
    g.edges.create(center,'follows',cur_friend)

Насколько я понимаю, приведенный выше код должен был создать граф в Титане с несколькими вершинами, некоторые из которых соединены ребром следует.

Мои вопросы:

Как сохранить в Титане?? (как коммит в SQL)

Как я могу получить к нему доступ позже?? Должен ли я иметь доступ к нему через оболочку гремлина ?? Если да, то как??

Мой следующий вопрос будет о визуализации данных, но я очень далек от этого :)

Пожалуйста, помогите :) Я совсем запутался во всех этих титанах, гремлинах, рекстерах и т.д. :)

Обновление: Одно из требований нашего POC-проекта - это... python :), вот почему я тут же загорелся. Я обязательно последую совету ниже :)


person Dennis    schedule 25.06.2015    source источник
comment
Добро пожаловать в клуб. Кстати, если вы планируете использовать Титан, вы должны знать, что разработка Титана еще не завершена. Вам также следует рассмотреть другие альтернативы, такие как OrientDB.   -  person Kevin    schedule 13.07.2015


Ответы (1)


Мой ответ будет несколько неполным, потому что я не могу дать ответы о лампочках, но вы задаете некоторые конкретные вопросы, на которые я могу попытаться ответить:

Как сохранить в Титане?? (как коммит в SQL)

Это просто g.commit() в Java/Groovy.

Как я могу получить к нему доступ позже?? Должен ли я иметь доступ к нему через оболочку гремлина ?? Если да, то как??

Как только он будет привязан к cassandra, получите доступ к нему с помощью Bulbs, оболочки гремлина, какого-либо другого приложения, чего угодно. Не уверен, что вы на самом деле спрашиваете, но мне нравится консоль Gremlin для таких вещей, поэтому, если cassandra запущена локально, запустите bin/gremlin.sh и выполните:

g = TitanFactory.build()
    .set("storage.backend","cassandra")
    .set("storage.hostname","127.0.0.1")
    .open();

Это позволит вам подключиться к cassandra, и вы сможете запрашивать свои данные.

Я полностью потерялся во всем этом титане, гремлинах, рекстерах и т. д.

Мой совет всем новым пользователям (особенно новичкам в графах, cassandra, jvm и т. д.) — притормозить. Самый быстрый способ впасть в уныние — это попытаться сделать питона лампочкам, рекстеру, гремлину, титану, кластеру кассандры, размещенному в ec2 с помощью хаупа, — и попытаться загрузить в это миллиардный граф ребер.

Если вы новичок, начните с последних материалов: TinkerPop3 — http://tinkerpop.incubator.apache.org/ — какие лампы еще не поддерживаются — но это нормально, потому что вы изучаете TinkerPop, что важно для изучения всего стека и всех реализаций TinkerPop (например, Titan). Используйте TinkerGraph (не Titan) с небольшим подмножеством ваших данных и убедитесь, что вы получили шаблон для загрузки этого небольшого подмножества прямо перед попыткой перейти в полный масштаб. Используйте консоль Gremlin для всего, что связано с этой первоначальной целью. Это рецепт легкой победы. При таком подходе вы, вероятно, могли бы получить график с несколькими запросами к вашим собственным данным за день и узнать большую часть того, что вам нужно для этого с Титаном.

Получив свой график, заставьте его работать на Сервере Gremlin. (замена Rexster для TP3). Затем подумайте о том, как вы можете получить к этому доступ с помощью инструментов Python. Или, может быть, вы выяснили, как преобразовать TinkerGraph в Titan (возможно, начните с BerkeleyDB, а не с cassandra). Моя точка зрения здесь состоит в том, чтобы более медленно увеличивать ваше участие в различных частях экосистемы, потому что в противном случае это будет подавляющим.

person stephen mallette    schedule 25.06.2015
comment
Спасибо Стивен!! Здесь пара коротких вопросов. 1. Допустим, у нас есть Cassandra, в которой хранятся данные, и Titan, обеспечивающий логическую структуру для доступа к данным, обработки и т. д. (надеюсь, я не напутал на этом этапе). Можем ли мы хранить несколько отдельных графиков в Titan (создавая аналогия со схемами sql здесь)? Или все, что хранится в Титане (или мне следует использовать здесь название базовой базы данных), является частью большого целого и не может быть разбито на отдельные графики с точки зрения доступа и манипуляций? - person Dennis; 25.06.2015
comment
Вопрос 2. Каковы ваши предложения по доступу к сохраненному графику и его визуализации? Даже если бы он состоял из двух вершин и одного ребра :) - person Dennis; 25.06.2015
comment
Я ужасно извиняюсь, но вот 3-й вопрос :) Есть ли место в Интернете, где можно было бы описать два слова для каждого из проектов (например, Титан, Гремлин, Рекстер) и как они сочетаются друг с другом и какой из них хорош? за что? Потому что описание каждого проекта настолько сложно с точки зрения лексики и фразировки, что сложно составить полную картину в голове. - person Dennis; 25.06.2015
comment
вы можете иметь один график для каждого пространства ключей - см. настройку storage.cassandra.keyspace. что касается визуализации, я бы просто использовал gephi или cytoscape. обратите внимание, что TinkerPop3 включает интеграцию с gephi. Что касается терминов, я предлагаю вам переориентироваться на терминологию TinkerPop3, поэтому я укажу вам на начало документы TP3 см. зеленое поле ПРИМЕЧАНИЕ. - person stephen mallette; 25.06.2015
comment
Что касается редактирования вашего вопроса, я все же предлагаю изучить TP3 для вашего POC. В разделе «Вклады сообщества» на домашней странице TinkerPop можно найти набор библиотек Python, которые могут вам помочь. как только вы познакомитесь со стеком. Между прочим, разработчик Bulbs сказал мне, что он намеревается портировать на TP3, как только он достигнет GA. - person stephen mallette; 25.06.2015
comment
При запуске кода оболочка gremlin выдает следующую ошибку: gremlin > g = TitanFactory.build().set(storage.backend,cassandra).set(storage.hostname,127.0.0.1).open(); Нет подписи метода: статический com.thinkaurelius.titan.core.TitanFactory.build() применим для типов аргументов: () значений: [] Возможные решения: find(), find(groovy.lang.Closure), split(groovy .lang.Closure), wait(), dump(), equals(java.lang.Object) - person Dennis; 25.06.2015
comment
Если вы используете Titan, убедитесь, что вы используете консоль Gremlin, поставляемую вместе с дистрибутивом Titan. - person stephen mallette; 25.06.2015