Как создать и получить базу данных графа с помощью java API в базе данных cassandra

Я пытаюсь создать граф с узлами и ребрами с некоторыми весами в базе данных Cassandra, используя API Titan Graph. Итак, как получить этот график, чтобы я мог его визуализировать.

rexster или gremlin это решение.. ?? Если это так.. Пожалуйста, расскажите мне о процессе.


person user2014334    schedule 23.01.2014    source источник


Ответы (2)


У меня есть установка cassandra с 4 кластерами. Я запускаю титан поверх него. Я сделал эту программу, которая создает два узла, а затем создает ребро между ними и, наконец, запрашивает и печатает его.

    public static void main(String args[])
    {
        BaseConfiguration baseConfiguration = new BaseConfiguration();
        baseConfiguration.setProperty("storage.backend", "cassandra");
        baseConfiguration.setProperty("storage.hostname", "192.168.1.10");

        TitanGraph titanGraph = TitanFactory.open(baseConfiguration);

        Vertex rash = titanGraph.addVertex(null);
        rash.setProperty("userId", 1);
        rash.setProperty("username", "rash");
        rash.setProperty("firstName", "Rahul");
        rash.setProperty("lastName", "Chaudhary");
        rash.setProperty("birthday", 101);

        Vertex honey = titanGraph.addVertex(null);
        honey.setProperty("userId", 2);
        honey.setProperty("username", "honey");
        honey.setProperty("firstName", "Honey");
        honey.setProperty("lastName", "Anant");
        honey.setProperty("birthday", 201);

        Edge frnd = titanGraph.addEdge(null, rash, honey, "FRIEND");
        frnd.setProperty("since", 2011);

        titanGraph.commit();

        Iterable<Vertex> results = rash.query().labels("FRIEND").has("since", 2011).vertices();

        for(Vertex result : results)
        {
            System.out.println("Id: " + result.getProperty("userId"));
            System.out.println("Username: " + result.getProperty("username"));
            System.out.println("Name: " + result.getProperty("firstName") + " " + result.getProperty("lastName"));
        }
    }

Мой pom.xml, у меня просто есть эта зависимость:

<dependency>
    <groupId>com.thinkaurelius.titan</groupId>
    <artifactId>titan-cassandra</artifactId>
    <version>0.5.4</version>
</dependency>

Я использую Кассандру 2.1.2.

Я мало что знаю о гремлине, но я считаю, что Gremlin — это оболочка, которую вы можете использовать для запроса вашей базы данных из командной строки. Rexter — это API, который вы можете использовать поверх любого другого API, использующего Blueprints (например, Titan), чтобы сделать ваш запрос/код доступным для других через REST API. Поскольку вы хотите использовать встроенную Java с титаном, вам не нужен гремлин. С указанной зависимостью API чертежей поставляется с ним, и с помощью этого API (как я сделал в своем коде) вы можете делать все со своим графиком.

Возможно, вам будет полезна эта шпаргалка. http://www.fromdev.com/2013/09/Gremlin-Example-Query-Snippets-Graph-DB.html

person Rash    schedule 17.02.2015
comment
Большое спасибо за это - более полный пример, чем в Titan wiki - person Ben Kirby; 06.08.2015
comment
@BenKirby Большое спасибо за вашу поддержку. - person Rash; 06.08.2015

Во-первых, обратите внимание, что TitanGraph использует API Blueprints, поэтому API Titan — это API Blueprints. Поскольку вы используете Blueprints, вы можете использовать Gremlin, Rexster или любую часть стека TinkerPop для обработки вашего графика.

То, как вы визуализируете свой график в Титане, зависит от выбранных вами инструментов визуализации графика. Если я предполагаю, что вы используете Gephi или аналогичный инструмент, который может использовать GraphML, то самый простой способ получить данные с Титана будет открыть Gremlin REPL, получить ссылку на график и просто сделать:

g = TitanFactory.open(...)
g.saveGraphML('/tmp/my-graph.xml')

Оттуда вы можете импортировать my-graph.xml в Gephi и визуализировать его.

person stephen mallette    schedule 23.01.2014