图数据库游记
图数据库游记
起因
似乎一直都想有这样一种工具,能够将所学到的知识和生活中的数据都表示和存储在计算机里面,并且能够在合适的时候调出来进行对比并且连接不同的领域发现数据之间的潜在联系.图数据库也是几年前听说过的,当时还以为是这个图指的是位图bitmap,实则指graph,最近有一点时间,就开始查找各种资料.
经过
从nosql
开始我找了一些排名之类的数据,然后找到一些nosql
数据库开始玩,没有找到方便windows 下载的,于是选择装再虚拟机上.第一个找到的是redis
,看了它的get started和tutorial部分,发现这个东西不是我想的那样,然后又去看其它的数据库才发现,redis
被称为键\-值数据库
所以想json
这种东西都只能序列化之后再存进去.然后我开始查找图数据库
,找到有orientdb
,挺喜欢它的名字,这个东西挺复杂,并且是用的类似SQL
的查找语言,SQL
是我认为的冗余度很高的一种语言,虽然有个match
语句,然后它的文档不太好,一些东西也很奇怪,比如edge
和link
的概念我就一直搞不懂.还有一条命令CREATE LINK
这个命令,一直没看懂什么意思,看了好久才发现,这个东西是在做rdbms
到orientdb
的迁移时用到的,而且这个命令似乎还有bug.其实它的server也有bug,我"CTRL-C"之后它就卡住了.不过这个东西是一个多模型的数据库,除了Graph
也支持Document
存储,也就是可以存JSON格式半结构化的数据,可以递归.大约玩了一天半的orientdb
之后某一天的晚上看到有人说(非原话)
orientdb
没人维护了,在被sap收购之后,主要开发这去搞arcadedb了,neo4j比较流行,用的人比较多.
然后开始玩neo4j,开始玩了之后发现,这个数据库有配套的书,找到之后翻了翻,这书的前几章满溢着对图数据库的赞美之词,然后我发现这个cypher
查询语言真的挺好,简洁不费手,明了不费眼.然后neo4j
的帮助和文档比orientdb
的要友好的多.有那么短短的一段时间我真的感觉neo4j
真的好棒,直到…,我发现这个玩意的community版本不能创建新的数据库,不能重命名,那是我真的觉得很xxxx,还有一个问题是,它的browser的data information部分的labels relationship types 和 property keys的我已经删除所有数据(match(n) detach delete n
)之后不会消失.这真的能逼死强迫症.看到那里有一长串的垃圾数据,还不能清除掉,我真的觉得可笑和恶心.还有一个诡异的地方(虽然我知道计算机是"绝对的",不会有这种玄学问题),一段时间后labels 和relationship types 可以在引用它的节点和边的数量自动归0之后自动消失,但是property keys还是保存原样,另外不像orientdb
,它不支持文档的存储,不支持嵌套.于是我又尝试了arcadedb
,因为在某处看到它支持cypher
,确实它比orientdb
要好多了,但是发现只是部分支持cypher
,并且似乎没有看到javascript
的接口,只有java
和各种图数据查询语言,以及一些http
之类的接口,并且,正当我快结束实验的时候,运行一些简单的命令竟然卡住了.
结果
果然只有依靠自己了,不过自己是靠不上的,所以,暂时不去尝试新的图数据库了.但是可以学学cypher之类的东西.