Я экспериментировал с Титаном в течение последних нескольких недель и хотел бы получить некоторые указания на пути вперед, а также несколько конкретных вопросов. Цель проекта — хранить данные журнала в кластере Cassandra (для этого вопроса давайте воспользуемся примером веб-трафика) и представлять отношения в графе Titan. Все узлы моделируются как имеющие значение и тип объекта (например, «google.com», «имя хоста»), а ребра имеют метку (например, «подключения»), а также несколько атрибутов отношения (отметка времени, длина потока и т. д.). на).
Как только эти данные будут сохранены в cassandra и представлены в виде графика Titan, я планирую использовать код d3 для создания визуализаций. В конце туннеля я надеюсь, что смогу создавать крупномасштабные, интерактивные, сложные графовые сети, которые будут выглядеть примерно так: http://goo.gl/CVEd55
Моя текущая настройка выглядит следующим образом:
- Сценарий Python для преобразования файлов журнала в файлы
vertices.csv
иedges.csv
для загрузки Gremlin. Titan Server 0.4
(с использованием CassandraThrift в качестве серверной части хранилища) — скрипт гремлина для загрузки преобразованных данных в Титан.- Сценарий Python, который использует NetworkX для открытия соединения RexPro, позволяя аналитику вводить собственный запрос Gremlin и выводить результат в виде JSON.
- Локальный веб-интерфейс, который использует сгенерированный JSON и d3 для отображения результатов запроса в виде графика.
В идеале в качестве тестового базового случая я хотел бы, чтобы пользователь мог ввести запрос Gremlin в веб-интерфейс и был направлен на страницу, содержащую интерактивный график d3 результата.
Мои конкретные вопросы заключаются в следующем:
Каков процесс назначения атрибутов ребрам? У меня возникли проблемы с поиском примера кода, который помогает мне представить график с использованием модели, указанной выше.
Мой скрипт gremlin для загрузки данных в Titan использует
bg.commit()
для создания пакетного графика, на который позже ссылаются в соединении с RexProconn= RexProConnection('localhost,8184,'bg')
. Первоначально это работало, но после изменения моего сценария загрузки, очистки графика в Gremlin и последующей перезагрузки соединение RexPro не может быть открыто из-за того, что график bg явно не существует. Как происходит процесс обновления графиков в Титане? Предположительно, запуск скрипта загрузки дважды с использованием одного и того же графа только добавит узлы/вершины к существующему, поэтому как мне создать новый граф с тем же именем каждый раз, когда я обновляю свою модель, и чтобы RexPro мог ссылаться на него? при выполнении запроса?Насколько легко было бы расширить интерфейс, чтобы позволить аналитику вводить SQL-запросы во внешний интерфейс, используя RexPro для доступа к графику способом, аналогичным описанному?
Извините за длинный пост, но если кто-то может поделиться своим опытом, мы будем очень признательны!