Neo4j图数据库系列:关于在Neo4j中创建多数据库的探究(Neo4j 4.0版本)

一、简介

我也是刚接触Neo4j,学到这也有所感悟,记录一下。首先,说点自己的理解。Neo4j是一种图数据库,存储的是节点、节点之间的关系、节点的属性、关系的属性。实际上,其背后的数据模型就是概念图模型(学过知识图谱的应该知道),类似于关系数据库(如Oracle、Mysql等)中的关系数据模型(本质上就是行列表格,只是有一套严密的数学逻辑作支撑)。

就像传统关系型数据库领域有结构化查询语言SQL一样,图数据库领域也建了一套查询语言标准,叫Cypher(美式读音:[ˈsaɪfər]),一般称作CQL(对标SQL)。CQL也是一种声明式语言。声明式语言就是你只管告诉要干什么事情,干的过程以及怎么干你不用管,数据库管理系统有一套自己的逻辑帮你做了。与声明式语言对标的就是命令式语言,你不仅需要知道要干什么,还要自己编程实现怎么干,就是python、java、C、C++等这一类的语言。

二、安装建议

Neo4j的安装过程不废话了,网上一大堆。这里只给出几点建议:

  • 初学者推荐选择server社区版,我用的是目前的最新版本4.0.1
  • 一定要多看官方文档,其实最好的参考安装方式,就是对应版本的官方文档。因为,版本不一样,很可能会差异很大。
  • Neo4j的官网国内访问是真的慢,也不稳定,有条件还是fanqiang吧,要不你会吐血的。

三、传统如何创建多个库(针对Neo4j 3.×)

这可能是有些人比较关心的。Neo4j怎么说也是一个数据库管理系统,支持数据库管理方面的命令,我觉得是必须要有的。你看关系型数据库管理系统(如oracle、mysql等)哪个没提供,也没有只支持SQL就拉倒了吧。因此,Neo4j也不应该只支持CQL就完了啊(虽然社区版是免费的,但也不能支持数据库管理命令啊)。

通过看网上的资料,可能Neo4j 3.×版本确实没提供啥管理命令,只支持一个库。在这种情况下,有的网友发挥自己的聪明才智创造性的摸索出了一套方法,网上写这个的很多,但方法都是一样。思想很简单,我这里简要说下(针对3.×版本,我这里只是总结,我也没安装过3.×版本试过哈):首先,Neo4j只有一个默认的数据库叫graph.db,就在安装目录data文件夹下;其次,Neo4j提供了一个配置文件叫neo4j.conf,在安装目录conf文件夹下,所有关于Neo4j的设置都可以修改这个配置文件实现;最后,配置文件里有个键值对叫dbms.active_database=,其默认值是graph.db,这个值可以用你想要的名称替换后(记得打开注释),重启Neo4j服务就会在data目录下生成一个新的数据库文件。改回去也是同样的操作。

本来上面这个方法挺完美的,就是麻烦了点,但好歹解决了问题嘛。我赶紧试一下,搜索键值对,竟然没搜索到,我以为我输错了,试了好几遍还是没有。为啥?谁能告诉我?算了,只能自己思考。难道是Neo4j 4.×版本变了,我觉得很有可能。那可不可以自己添加下键值对,但是我没试,有兴趣的可以试一下。

我要转变思路,看网上还有一种巧妙的方法:把Neo4j整个目录复制一遍,改改端口号,开它好几个服务,那不就可以实现存储不同内容的目的了嘛。想了想,感觉很有道理。但是,我还是没试,有兴趣的可以试一下。

四、到底怎么最快捷的建不同的库(针对Neo4j 4.0.1)

实际上,Neo4j更新到4.×版本后,已经原生支持创建多个库,并提供了相应的命令,感兴趣的可以看下:官方文档地址(记得fanqiang)。我看了下,跟传统关系型数据库的命令差不多,几乎一样。

Neo4j更新到4.×后,启动服务后,默认有两个库,如下图所示,目录也换到了data/databases/下,其中neo4j数据库是登录后默认库。官方介绍:

  • system—系统数据库,包含数据库管理系统和安全配置的元数据;
  • neo4j—默认数据库,用户数据的单一数据库。它的默认名称是neo4j。

Neo4j图数据库系列:关于在Neo4j中创建多数据库的探究(Neo4j 4.0版本)_第1张图片

创建不同库的指令就是:(一定要看到文章底部,有惊喜)

CREATE DATABASE name

就是这么简单。但是需要注意的是,这个命令必须在system库下执行才可以。下面贴一下相关命令

参考文档:neo4j-operations-manual-4.0.pdf)。

Neo4j图数据库系列:关于在Neo4j中创建多数据库的探究(Neo4j 4.0版本)_第2张图片

 大家看到这里应该很兴奋,但是为时过早。我试了一下,命令竟然不管用,如图:

Neo4j图数据库系列:关于在Neo4j中创建多数据库的探究(Neo4j 4.0版本)_第3张图片

 经查找官方文档,是因为社区版不支持,商业版可以支持,如下图所示(参考文档:neo4j-cypher-manual-4.0.pdf)。因为没有商业版,也就没在求证。至于是不是3.×版本的商业版就已经支持,我就不知道了,暂时不想再深究了。

Neo4j图数据库系列:关于在Neo4j中创建多数据库的探究(Neo4j 4.0版本)_第4张图片

五、后记

本文显然没有解决Neo4j多数据库创建的问题(至少社区版)。但是,跟大家展示了我的整个历程,希望有所裨益。大家不要喷我就可以了。实在需要,还是用商业版,不行就按照传统方法搞一搞,我懒得试了。给大家点参考文档,聊表歉意—> Neo4jdoc4.0。github上也有一些入门Neo4j的例子,有兴趣的可以看一下:https://github.com/neo4j-examples。

六、补充(2020/03/09)

github上的python例子无法在Neo4j 4.0下运行(安装的是python dirver 1.7.6,4.0版本对应的还在开发中),很难解决。因此,还是用3.×版本吧。给个下载链接:Neo4j 3.5.5,但不是3.5最新小版本(官网最新是3.5.15)

链接:https://pan.baidu.com/s/1HOwKQnNADOebnhjJeFzn2w 
提取码:yaux

 

 

你可能感兴趣的:(nosql,neo4j)