這是谷歌的一個開源免費的圖資料庫。是用Go語言寫的。支援多種存儲後端。
之是以要試這個,是因為它能夠水準可擴充,就是說它支援分片。backend配置成分布式的存儲系統就可以了。我選擇mongodb。
由于網絡的原因,我隻能離線安裝了。需要安裝這三個東西:Golang, Mongo, Cayley。
解壓tar.gz檔案後,打開doc目錄下的install.html, 裡面有安裝教程:
然後下面有 Test your installation。
運作那個小程式之前要先設定GOPATH. 根據提示“How to Write Go Code ”,打開code.html。
裡面提到可以運作下面這個指令檢視預設的路徑。
預設路徑是~/go。 這個路徑我挺滿意的就不改它了。 這個路徑就是go的workspace所在的地方。 如果你要改這個路徑就要按文檔裡說的将GOPATH加入到環境變量裡。
如果你願意可以按照文檔裡說的,弄一個hello world的程式跑一下。
解壓完之後,在某個目錄下建立一個配置檔案。我的在/home/ubt1604/mongodb/mongodb.conf
主要就是配置logpath和dbpath這兩個路徑。其他都預設就OK,内容如下:
啟動mongodb:
關閉mongodb
解壓完之後打開docs目錄下的Quickstart-As-Application.md,最好用markdown工具打開一下,看的清楚一些。多看幾遍,你會發現那個init根本用不上。
複制一份cayley.cfg.example,改名為cayley.cfg.overview,内容如下:
db_path是設定backend的。我們用mongodb作為backend。注意ubuntu是mongodb所在的 主機名,不是IP。
把已有的資料加載到庫裡:
如果你之前已經執行過一次了,可以在指令最後加上一個 -ignoredup。
啟動cayley:
–host=0.0.0.0是說外部機器都可以通路到cayley。
在輸入框輸入
<code>graph.Vertex("<dani>").All()</code>,然後點選Query,就看到如下結果:

再輸入<code>graph.Vertex("<dani>").Out("<follows>").All()</code>
語言選擇Gizmo,輸入<code>g.V("<dani>").Tag("source").Out("<follows>").Tag("target").All()</code>
根據官方的說法,Gizmo - a JavaScript, with a Gremlin-inspired* graph object.
就是說如果使用Quickstart-As-Application.md裡給的JavaScript代碼,webUI上語言就要選擇Gizmo。
跟文檔一樣,搞一個.nq的檔案,然後導進去。
在data下建立一個familytree.nq。内容如下:
然後
<code>./cayley load --config=cayley.cfg.overview --quads=data/familytree.nq --alsologtostderr</code>
再次啟動cayley
最後在webui裡選擇Visualize,語言選擇Gizmo,輸入如下查詢語句就可以看到全家福了
文章裡有幾個demo,我查出來的結果跟他的不一樣。可能是版本不同吧。
cayley環境是我在虛拟機裡做的。檢索的時候有卡住的情況。不知道是cayley不穩定還是虛拟機本來就卡。總之就是有點問題。如果你們也遇到這種情況請讓我知道。