栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用cassandra和elasticsearch后端制作我的Titan db图

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用cassandra和elasticsearch后端制作我的Titan db图

如果您不能使用Java,则只能使用Groovy。至于

如何存储我自己的数据供泰坦数据库处理

边注

使用图形数据库,可以使用多种方式存储此数据。如果您想真正形式化数据的结构,我建议您研究一下Ontologies,OWL和Topic
Maps,
它们可以为如何形式化和构造图形数据库中的数据提供很大的启发。仅当您寻找在图形中非常正式地构造数据的方式时,这些读取才有用。

结构实例

现在让我们假设你只想跟踪 客户产品 ,他们都买了。一个简单的结构是, 客户产品
都是具有从客户到产品的优势的顶点,这是客户购买了该产品的事实。我们甚至可以在该边缘添加其他数据,例如 购买时间数量
。这是如何在Groovy中执行此操作的示例:

g = TitanFactory.open("titan-cassandra-es.properties")gremlin> customerBob = g.addVertex("Bob"); ==>v[12]gremlin> customerAlice = g.addVertex("Alice");==>v[13]gremlin> productFish = g.addVertex("Fish");==>v[14]gremlin> productMeat = g.addVertex("Meat");==>v[15]gremlin> edge = customerBob.addEdge("purchased", productMeat, "Day", "Friday", "Qauntity", 2);==>e[16][12-purchased->15]gremlin> edge = customerBob.addEdge("purchased", productFish, "Day", "Friday", "Qauntity", 1);==>e[17][12-purchased->14]gremlin> edge = customerAlice.addEdge("purchased", productMeat, "Day", "Monday", "Qauntity", 3);==>e[18][13-purchased->15]

以上基本上说鲍勃在星期五买了一些肉和鱼,而爱丽丝在星期一买了一些肉。如果我们想了解鲍勃星期五买的东西,可以进行以下遍历

gremlin> g.traversal().V().hasLabel("Bob").outE("purchased").has("Day", "Friday").otherV().label();==>Meat==>Fish

索引编制

在真正深入索引之前,请先了解结构。以下是对使用Elasticsearch和Titan进行索引的非常简要的说明:

关于索引,要知道titan具有不同类型的索引, CompositeVertex-CentricMixed
都有其用途,您应该阅读这篇以获得更多信息。

索引用于加速遍历和查找。因此,您需要确定要索引的内容。对于我们的示例,我们想快速了解在不同日期进行的所有购买。这意味着我们可以在边缘放置混合索引以帮助我们(复合索引同样有用,但是您在询问Elasticsearch,因此我们将使用混合索引)。

要定义混合索引,我们首先定义一个简单的架构(更多信息在此处):

mgmt = graph.openManagement();purchased = mgmt.makeEdgeLabel("purchased").multiplicity(MULTI).make();day = mgmt.makePropertyKey("Day").dataType(String.class).make();

您无需为所有内容显式定义架构,但是它对于您要索引的任何内容都是必不可少的。现在您可以创建索引:

mgmt.buildIndex("productsPurchased", Edge.class).addKey(day).buildMixedIndex("search")mgmt.commit() //"search" is defined in your titan-conf.properties file

使用此索引查询,例如:

g.traversal().E().has("Day", "Friday")

会更快。

注意 :加载数据之前,应先创建索引和架构。从长远来看,这只会使事情变得简单。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/393247.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号