有個僥倖的機會,參與了微軟的項目,僥倖的接觸了,graph engine圖形數據庫,感受非常新穎,作點記錄,和你們分享,理解有限,發現不足之處,還請指點。html
微軟發分佈式圖處理引擎GraphEngine1.0數據庫
歸納介紹:app
http://tech.it168.com/a2015/0521/1730/000001730780.shtml分佈式
下面介紹一個官網的demo:3d
首先建立一個Data Modeling Projiect.建立數據模型以下:orm
//角色
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;
}htm
建立GE application project:對象
直接調用上面數據模型便可。blog
//using Trinity.Extension;官網上要引用這個明明空間,咱們有引用,程序也完成了。不知道爲何啊?ip
//採用嵌入式的方式,相對而言,這種方式比客戶端的方式簡單一些。
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();