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。
创建不同库的指令就是:(一定要看到文章底部,有惊喜)
CREATE DATABASE name
就是这么简单。但是需要注意的是,这个命令必须在system库下执行才可以。下面贴一下相关命令
(参考文档:neo4j-operations-manual-4.0.pdf)。
大家看到这里应该很兴奋,但是为时过早。我试了一下,命令竟然不管用,如图:
经查找官方文档,是因为社区版不支持,商业版可以支持,如下图所示(参考文档:neo4j-cypher-manual-4.0.pdf)。因为没有商业版,也就没在求证。至于是不是3.×版本的商业版就已经支持,我就不知道了,暂时不想再深究了。
五、后记
本文显然没有解决Neo4j多数据库创建的问题(至少社区版)。但是,跟大家展示了我的整个历程,希望有所裨益。大家不要喷我就可以了。实在需要,还是用商业版,不行就按照传统方法搞一搞,我懒得试了。github上也有一些入门Neo4j的例子,有兴趣的可以看一下:https://github.com/neo4j-examples。
————————————————
版权声明:本文为CSDN博主「zhanghai4155」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhanghai4155/article/details/104724355