什么是图形数据库
图形数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。图形数据库是一种非关系型数据库,它应用图形理论存储实体之间的关系信息。最常见例子就是社会网络中人与人之间的关系。
为什么要使用图形数据库
在如今这个数据爆炸的时代,我们通常需要对繁杂庞大的数据进行关联性分析。而传统的关系型数据库,我们常常需要创建一个关联表来记录不同实体的关联关系,如果两个实体之间拥有多种关系,那么我们就需要在他们之间创建多个关联表,对于负责的数据关系就不能很好的展现。这样就会造成建模困难、查询困难、扩展困难等特点,最终的结果就会导致关系型数据库进行关联数据查询的时候性能变低。
而这些关系型数据库所不能很好处理的问题恰好是图数据库的强项,图数据库擅长的就是处理数据之间的关系。在一个图形数据库中,我们只需要标明两者之间存在着不同的关系。
相对于关系数据库中的各种关联表,图形数据库中的节点之间的联系可以通过关系能够包含属性这一功能来提供更为丰富的关系展现方式。因此相较于关系型数据库,图形数据库的用户在对事物进行抽象时将拥有一个额外的武器,那就是丰富的关系。
什么是Neo4j
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。
它具备完整的ACID支持、高可用性、能够轻易扩展到上亿级别的节点和关系、能够通过遍历工具高速检索数据。
安装Neo4j
Windows环境下安装Neo4j可以参考:Windows下图数据库neo4j的安装
Linux环境下安装Neo4j可以参考:Linux下图形数据库neo4j的安装
Neo4j常用配置说明
1、挂载数据库名称配置。通过修改此配置指定挂载的数据库名称,默认名称为graph.db
,
dbms.active_database=graph.db
2、数据库保存路径。默认为neo4j项目下的data
目录,可指定为绝对路径。
dbms.directories.data=data
3、日志目录。默认为neo4j项目下的logs
目录,可指定为绝对路径
dbms.directories.logs==logs
4、批量导入数据文件放置位置。默认为neo4j项目下的import
目录,可指定为绝对路径。导入文件必须是CVS类型的文件
dbms.directories.import=import
5、是否对连接Neo4j的用户进行身份验证。默认是开启true
的。
dbms.security.auth_enabled=false
6、设置JVM初始堆内存和JVM最大堆内存。建议生产环境给的JVM最大堆内存越大越好,但是要小于机器的物理内存。
dbms.memory.heap.initial_size=512m
dbms.memory.heap.max_size=512m
7、页面缓存大小。用于缓存存储在磁盘上的Neo4j数据,确保大部分数据缓存到内存中,提高查询性能,单位可以为 k、m、g。
dbms.memory.pagecache.size=10g
8、配置通过ip访问Neo4jS数据库。使用默认配置Neo4j只接受本地连接,要接受非本地连接,只需要取消下列配置的注释即可。
dbms.connectors.default_listen_address=0.0.0.0
9、bolt连接方式。默认端口是7687,端口可自定义。
dbms.connector.bolt.enabled=true
dbms.connector.bolt.listen_address=0.0.0.0:7687
10、http连接方式。默认端口是7474,端口可自定义。
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=0.0.0.0:7474
11、https连接方式。默认端口是7473,端口可自定义。
dbms.connector.https.enabled=true
dbms.connector.https.listen_address=0.0.0.0:7473
12、设置Neo4j的工作线程数
dbms.threads.worker_count=10
13、只允许从Neo4j中读取数据。默认为false
。
dbms.read_only=false
Neo4j常用CQL命令
CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。
- 它是Neo4j图形数据库的查询语言
- 它是一种声明性模式匹配语言
- 它遵循SQL语法
- 它的语法是非常简单且人性化、可读的格式。
- 支持多个子句像在哪里,顺序等,以非常简单的方式来编写非常复杂的查询
常用Neo4j CQL命令
CREATE
:创建,创建节点,关系和属性;MATCH
:匹配,检索有关节点,关系和属性;RETURN
:返回,返回查询结果;WHERE
:哪里,提供给条件过滤检索数据;DELETE
:删除,删除节点和关系;REMOVE
:移除,杉树节点和关系的属性;ORDER BY
:以...排序,排序检索数据SET
:设置,添加或更新标签;
常用Neo4j CQL函数
String
:字符串,用于使用String字面量;
Aggregation
:聚合,用于对CQL查询结果执行一些聚合操作;
Relationship
:关系***,用于获取关系的细节,如startnode,endnode等。
Neo4j CQL支持的数据类型
Neo4j支持的数据类型与Java语言类似。他们用于邓毅节点或关系的属性。
- boolean:用于表示布尔值:true、false;
- byte:用于表示8位整数;
- short:用于表示16位整数;
- int:用于表示32位整数;
- long:用于表示64位整数;
- float:用于表示32位浮点数;
- double:用于表示64位浮点数;
- char:用于表示16位字符;
- String:用于表示字符串;