这是谷歌的一个开源免费的图数据库。是用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不稳定还是虚拟机本来就卡。总之就是有点问题。如果你们也遇到这种情况请让我知道。