graph engine
有个侥幸的机会,参与了微软的项目,侥幸的接触了,graph engine图形数据库,感觉很是新颖,做点记录,和大家分享,理解有限,发现不足之处,还请指点。
微软发分布式图处理引擎GraphEngine1.0
概括介绍:
http://tech.it168.com/a2015/0521/1730/000001730780.shtml
下面介绍一个官网的demo:


首先创建一个Data Modeling Projiect.创建数据模型如下:
//角色
cell struct Character
{
String Name;
byte Gender;
bool Married;
long Spouse;
long Performer;
}
//演员
cell struct Performer
{
String Name;
int Age;
List<long> Characters;
}
cell struct Friendship
{
List<long> friends;
}
创建GE application project:
直接调用上面数据模型即可。
//using Trinity.Extension;官网上要引用这个明明空间,我们有引用,程序也完成了。不知道为什么啊?
//采用嵌入式的方式,相对而言,这种方式比客户端的方式简单一些。
TrinityConfig.CurrentRunningMode = RunningMode.Embedded;
//以下是根据数据模型建立的关系连接。
我们首先创建12个实体单元
// Characters
Character Rachel = new Character(Name: "Rachel Green", Gender: 0,
Married: true);
Character Monica = new Character(Name: "Monica Geller", Gender: 0,
Married: true);
Character Phoebe = new Character(Name: "Phoebe Buffay", Gender: 0,
Married: true);
Character Joey = new Character(Name: "Joey Tribbiani", Gender: 1,
Married: false);
Character Chandler = new Character(Name: "Chandler Bing", Gender: 1,
Married: true);
Character Ross = new Character(Name: "Ross Geller", Gender: 1,
Married: true);
// Performers
Performer Jennifer = new Performer(Name: "Jennifer Aniston", Age: 43,
Characters: new List<long>());
Performer Courteney = new Performer(Name: "Courteney Cox", Age: 48,
Characters: new List<long>());
Performer Lisa = new Performer(Name: "Lisa Kudrow", Age: 49,
Characters: new List<long>());
Performer Matt = new Performer(Name: "Matt Le Blanc", Age: 45,
Characters: new List<long>());
Performer Matthew = new Performer(Name: "Matthew Perry", Age: 43,
Characters: new List<long>());
Performer David = new Performer(Name: "David Schwimmer", Age: 45,
Characters: new List<long>());
//定义一个描述关系,说明我们是如何表示直接关系的。主要是演员和角色的关联
// Portrayal Relationship
Rachel.Performer = Jennifer.CellID;
Jennifer.Characters.Add(Rachel.CellID);
Monica.Performer = Courteney.CellID;
Courteney.Characters.Add(Monica.CellID);
Phoebe.Performer = Lisa.CellID;
Lisa.Characters.Add(Phoebe.CellID);
Joey.Performer = Matt.CellID;
Matt.Characters.Add(Joey.CellID);
Chandler.Performer = Matthew.CellID;
Matthew.Characters.Add(Chandler.CellID);
Ross.Performer = David.CellID;
David.Characters.Add(Ross.CellID);
//表示一种配偶的关系
// Marriage relationship
Monica.Spouse = Chandler.CellID;
Chandler.Spouse = Monica.CellID;
Rachel.Spouse = Ross.CellID;
Ross.Spouse = Rachel.CellID;
// Friendship
Friendship friend_ship = new Friendship(new List<long>());
friend_ship.friends.Add(Rachel.CellID);
friend_ship.friends.Add(Monica.CellID);
friend_ship.friends.Add(Phoebe.CellID);
friend_ship.friends.Add(Joey.CellID);
friend_ship.friends.Add(Chandler.CellID);
friend_ship.friends.Add(Ross.CellID);
//运行时对象可以很容易的转换为内存存储单元,下面是保存的代码
// Save Runtime cells to Trinity memory storage
Global.LocalStorage.SavePerformer(Jennifer);
Global.LocalStorage.SavePerformer(Courteney);
Global.LocalStorage.SavePerformer(Lisa);
Global.LocalStorage.SavePerformer(Matt);
Global.LocalStorage.SavePerformer(Matthew);
Global.LocalStorage.SavePerformer(David);
Global.LocalStorage.SaveCharacter(Rachel);
Global.LocalStorage.SaveCharacter(Monica);
Global.LocalStorage.SaveCharacter(Phoebe);
Global.LocalStorage.SaveCharacter(Joey);
Global.LocalStorage.SaveCharacter(Chandler);
Global.LocalStorage.SaveCharacter(Ross);
// Dump memory storage to disk for persistence
Global.LocalStorage.SaveStorage();
long spouse_id = -1;
using (var cm = Global.LocalStorage.UseCharacter(Monica.CellID))
{
if (cm.Married)
spouse_id = cm.Spouse;
}
using (var cm = Global.LocalStorage.UseCharacter(spouse_id))
{
Console.WriteLine(cm.Name);
}
Console.Read();
graph engine的更多相关文章
- 【年度开源、工具合集】牛津计划,DMTK,Graph Engine…提高你的工作效率!
本篇合集包括以下三个部分的内容: 1.微软亚洲研究院过去一年的所有开源合集,如分布式机器学习工具包DMTK等. 2.利用微软研究院的技术提高工作效率的工具合集,如让没有机器学习背景的开发人员也能开发出 ...
- graph处理工具
仅作为记录笔记,完善中...................... 1 PyGSP https://pygsp.readthedocs.io/en/stable/index.html ht ...
- neo4j-jersey分嵌入式和服务式连接图形数据库
原文载自:http://blog.csdn.net/yidian815/article/details/12887259 嵌入式: 引入neo4j依赖 <dependency> <g ...
- Apache Atlas
atlas英 [ˈætləs] 阿特拉斯. 美 [ˈætləs] n.地图集;〈比喻〉身负重担的人 == Apache Atlas Version: 1.1.0 Last Published: 201 ...
- 使用 Apache Atlas 进行数据治理
本文由 网易云发布. 作者:网易/刘勋(本篇文章仅限知乎内部分享,如需转载,请取得作者同意授权.) 面对海量且持续增加的各式各样的数据对象,你是否有信心知道哪些数据从哪里来以及它如何随时间而变化?采 ...
- 数据治理的王者——Apache Atlas
一.Atlas是什么? 在当今大数据的应用越来越广泛的情况下,数据治理一直是企业面临的巨大问题. 大部分公司只是单纯的对数据进行了处理,而数据的血缘,分类等等却很难实现,市场上也急需要一个专注于数据治 ...
- 微软亚洲研究院开源图数据查询语言LIKQ
近日,微软亚洲研究院通过GitHub 平台开源图数据查询语言LIKQ (Language-Integrated Knowledge Query).LIKQ是基于分布式大规模图数据处理引擎Graph ...
- apache-atlas 深度剖析
atlas 是apache下的大数据的元数据管理平台,支持对hive.storm.kafka.hbase.sqoop等进行元数据管理以及以图库的形式展示数据的血缘关系. 一.架构 整体架构实现如下图 ...
- TVM代码生成codegen
TVM代码生成codegen 硬件后端提供程序(例如Intel,NVIDIA,ARM等),提供诸如cuBLAS或cuDNN之类的内核库以及许多常用的深度学习内核,或者提供框架例,如带有图形引擎的DNN ...
随机推荐
- 6.linux安装tomcat
1.下载安装包 https://tomcat.apache.org/download-80.cgi 2.用 WinSCP 将本地的安装包 上传到 linux 服务器中 3.解压安装包( ...
- jquery.ajax()详解
jQuery.ajax() 函数详解 traditional 如果你希望使用传统方式来序列化参数,将该属性设为true. 传递数组时, traditional必须为true var arr = []; ...
- spring事务源码分析结合mybatis源码(一)
最近想提升,苦逼程序猿,想了想还是拿最熟悉,之前也一直想看但没看的spring源码来看吧,正好最近在弄事务这部分的东西,就看了下,同时写下随笔记录下,以备后查. spring tx源码分析 这里只分析 ...
- SQL Server - group by
转载自https://segmentfault.com/a/1190000006821331 在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计 ...
- JQuery Advanced
1.Jquery Utility <1> Type & Function & setTimeOut <!DOCTYPE html> <html lang= ...
- 看完此文还不懂NB-IoT,你就过来掐死我吧...【转】
转自:https://www.cnblogs.com/pangguoming/p/9755916.html 看完此文还不懂NB-IoT,你就过来掐死我吧....... 1 1G-2G-3G-4G-5G ...
- C# 对MongoDB 进行增删改查的简单操作
C# 对MongoDB 进行增删改查的简单操作 下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 1,连接数据库 /// & ...
- 在visual studio 2013中编译Lua5.3.1
注:以下是基于 别人的教程或笔记来操作并按照自己的操作记录的纯文字版编译和hello lua过程. 原图文版链接: 原文链接 1.创建空的解决方案: 文件->新建->项目->其他项目 ...
- 第四章:Oracle12c 数据库在linux环境安装
一:搭建yum 仓库 对于新手可以参考此文:<Vmware Workstation _linux yum 仓库搭建>.<CentOS7.2 创建本地YUM源和局域网YUM源> ...
- ansible的plugins
callback插件:路径 /usr/lib/python2.7/site-packages/ansible/plugins 回显输出型(stdout): stderr.py skippy.py se ...