这是什么?
Cayley 是一个面向关联数据(Linked Data)的开源图数据库,其灵感来自 Google 知识图谱(前身为 Freebase)背后的图数据库。
它是我自己运行的服务端程序,还是嵌入到我代码里的库?
它是一个需要你自己运行的数据库服务端,但设计上有意模块化——README 强调可以轻松连接你喜欢的编程语言和后端存储。
我怎么把它跑起来?
仓库里自带 Dockerfile,所以用 Docker 是最快的途径;否则就用 Go 从源码构建。跑起来之后,你可以通过内置的查询编辑器、可视化界面或 REPL 来使用它。
我还需要在电脑上另外装其他软件吗?
不需要——它是一个自包含的 Go 程序,存储由自己处理,所以不用先单独安装数据库引擎或消息中间件。
有什么坑或局限性我需要提前知道的?
README 没有记载任何硬性限制,并称 Cayley 已可用于生产环境、测试充分,而且被多家公司在生产中使用——不过它公布的性能数据来自 2014 年的消费级硬件。
什么情况下我会选它而不是普通的 SQL 数据库?
当你的数据以关系为先时——也就是知识图谱式的关联数据,需要沿着实体之间的连接往下遍历,就像它所模仿的 Freebase 图那样——而不是表格里的一行行记录。
它只能在 Linux 服务器上跑,还是我的笔记本上也能跑?
凡是 Go 能编译的地方都能跑——Linux、macOS 和 Windows 都行,通常是自己部署;仓库里带有 Dockerfile,查询编辑器直接在浏览器里打开。
我怎么查询里面的数据?
内置了三种查询语言:受 Gremlin 启发的 Gizmo;一种受 GraphQL 启发的语言;还有 MQL,一个面向 Freebase 爱好者的简化版本。
它能处理多大规模的数据?
粗略的基准测试显示,它可以把 1.34 亿条 quad 存进 LevelDB,一次多跳交集查询——比如查找同时由 X 和 Y 主演的电影——在普通磁盘上大约耗时 150 毫秒。
quad 到底是什么?
一条由四个部分组成的关联数据语句——主语、谓语、宾语,外加一个额外的值(比如上下文)——Cayley 就是以它为单位来存储图里的每条事实。
Which topics is it in?
graph-database, graph, nosql, graphql, knowledge-graph, database, go, apache-2.0, server, docker, self-hosted, cli