如何在cassandra数据库中使用java api创建和检索图形数据库

时间:2014-01-23 05:08:40

标签: cassandra gremlin titan rexster

我正在尝试使用Titan Graph api在Cassandra数据库中创建一个具有一些权重的节点和边的图。所以如何检索这个图,以便我可以想象它。

rexster或gremlin是它的解决方案.. ??如果是这样..请告诉我这个过程。

2 个答案:

答案 0 :(得分:3)

我有4个集群cassandra设置。我在它上面运行泰坦。我创建了这个程序,它创建了两个节点,然后在它们之间创建了一个边缘,最后查询并打印它。

    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>

我正在运行Cassandra 2.1.2。

我对gremlin不太了解,但我相信Gremlin是可用于从命令行查询数据库的shell。 Rexter是一个API,您可以在任何其他使用蓝图的API(如Titan)之上使用,以通过REST API使您的查询/代码可供其他人访问。由于您希望将嵌入式Java与titan一起使用,因此您不需要gremlin。根据我所说的依赖关系,blueprint API附带它并使用该API(就像我在我的代码中所做的那样),您可以使用图表完成所有操作。

您可能会发现此备忘单很有用。 http://www.fromdev.com/2013/09/Gremlin-Example-Query-Snippets-Graph-DB.html

答案 1 :(得分:1)

首先请注意,TitanGraph使用Blueprints API,因此Titan API是Blueprints API。在使用蓝图时,您可以使用GremlinRexsterTinkerPop stack的任意部分来处理图表。

如何在Titan中将图形可视化一次取决于您选择的图形可视化工具。如果我假设您正在使用Gephi或类似的工具来使用GraphML,那么从Titan获取数据的最简单方法是打开Gremlin REPL,获取对图的引用,然后执行:

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

从那里你可以将my-graph.xml导入Gephi并进行可视化。