这本书是2014年出版的,当时Neo4j的主要版本还是2.0,现在Neo4J已经发展到了4.0,我起初看这本书是因为我一直比较喜欢那种关系网的数据展示,比如王者荣耀中就有那种人物关系网,用图展示数据的方式很直观。同时还有社交网络这个经典应用,还有这个贯穿全书的例子电影爱好者movie-lover.
作为程序员我们更希望一上来就可以用代码说话,这本书也是基本上满足了我们的这个小小愿望,尽管在代码的体现上有一些久远,这些代码在github也是有的,所以在书本中基本上是最“主要”的代码,省略了很多,所以你要是想一上来就按照书本上的代码敲一通,显然这个路比较坎坷。当然边看边敲代码算是实践中的一个重要环节,还有一个方面就是理解核心的概念,这本书显然做到了,关于neo4j你能看到节点、属性、关系这个三个核心概念。关于映射到我们编程建模的视角我们更希望看到符合我们胃口的东西。这本书还是选择了核心的API来实现,这一点我在看完书之后发线也没有错,毕竟这是比较底层的东西,也是不上来就整一个Spring Data Neo4j,在习惯了java企业应用开发,站在实用性和功能性上讲,我更希望它早点介绍,然而它被安排到了第九章。所以在此之前我希望你如果看本书的话,要了解这一点,因为它还有更重要的东西需要介绍,毕竟美好的东西都是值得等待的。
除了上面使用java建模来表示这个movie-lover项目,我们还会陆续学习遍历API,这里我们会重新温习一下深度优先和广度优先的算法,这一点我很欣慰。然后就是关于索引,这一点我也不是很惊讶。
然后就是我要重点“表扬”的——Cypher,这是讲得比《Oreilly Graph Databases》好的,你知道了怎么用它去创建节点,属性,关系,然后就是用它来遍历,查询,有点像SQL,但是语法上有些许不同。其实这一点在你安装了Neo4j后,它也会有一个例子Movie Graph,在这个例子中你也能学到怎么使用Cypher,不过先看看规范和说明总不是坏的。接下来Neo4j吹嘘的就是它支持事务,趁此机会你又可以把ACID温故一遍。接下去的就是关于遍历的更高级一点的东西——扩展。
最后一部分更倾向于维护安装等操作问题,当然它也很坦诚还有两个方面没有涉及到一个是安全,另一个就是监控。关于Neo4j数据库的知识至此介绍完了。总体来讲,尽管叫做In Action,我觉得叫做入门还是可以的。毕竟Neo4j的面纱已经揭开,剩下的就是可以参照官网,文档还是很全面的。 https://neo4j.com/
到此,关于看的内容我基本上说完了,剩下的我就是要记录一下关于我的实战In Action方面的事的,这毕竟是从看这本书触发的。
首先就是用Spring Data Neo4j来建模写写代码,我更喜欢用Spring boot项目来做载体,这个项目我放在了github上。然后就是在IDEA 中的编程体验,首先Cypher编辑器还是不错的。但是可视化方面还是不及web版的,所以查询出来的图的结果还是web版好看。所以这一点又引发了我思考,在怎么表示图的数据结构,json方式,web能理解吗?显然是能的,不然它是怎么展示下面的内容的。
但是这还是不够的,我们的一般web应用是不知道怎么实现的,所以我再次想到了Echarts,显然也没有让我失望,我在官网找到了:
我对比了一下数据结构,java原始的json结构是需要一下修改来实现Echart的图的数据需求的,这一点在github中的项目中也是可以看到的。
记在最后,作为NoSQL的一员,Neo4j在表示图的领域还是很有潜力,而且显示世界中图的模型也是有不少的,尽管习惯了关系型数据库的我们,让我们用图来重构经典的基于角色的权限模型,一下子就想到了五张表,然后在图的世界中没有表的概念,实现访问控制它只需要节点、属性和关系来实现,它的查询也不需要像关系型数据例如mysql那样需要联表查询,所以它讽刺了一下关系型数据库却是很难表示关系的。现在阅读这本书算是对图数据的一个基本储备,如果没有接触到图的编程场景,要想很好地掌握还是需要不少时间去实践的,但是我们不慌,因为我们相信——Future is better!