Neo4j图数据库
- Neo4j 是以图形结构的形式存储数据的数据库,Neo4j 同时具有一般数据库的基本特性,包括事务支持、高可用性和高性能等。Neo4j 中两个最基本的概念是节点和边。节点表示实体,边则表示实体之间的关系。节点和边都可以有自己的属性。不同实体通过各种不同的关系关联起来,形成复杂的对象图。Neo4j 同时提供了在对象图上进行查找和遍历的功能
Neo4j的特点
- 使用Neo4j CQL 像SQL语言一样可以简单的查询
- 支持完整的ACID(原子性,一致性,隔离性和持久性)规则
- 支持查询的数据导出到JSON和XLS格式
- 包含一个用于执行CQL命令的UI:Neo4j数据浏览器
- 提供了REST API,可以被任何编程语言(如Java,Spring,Scala等)访问
- 通过使用Apache Lucence支持索引
- 支持UNIQUE约束
- 遵循属性图数据模型
-
- 采用原生图形库与本地GPE(图形处理引擎)
Neo4j的优点
- 很容易表示连接的数据
- 检索/遍历/导航更多的连接数据是非常容易和快速的
- 非常容易地表示半结构化数据
- 使用简单而强大的数据模型
- 不需要复杂的连接来检索连接的/相关的数据,因为很容易检索两个相邻节点或关系细节没有连接或索引
数据模型
Neo4j图数据库遵循属性图模型来存储和管理其数据
属性图模型规则
- 表示节点,关系和属性中的数据
- 节点和关系都包含属性
- 关系连接节点
- 属性是键值对
- 节点用圆圈表示,关系用方向键表示。
- 关系具有方向:单向和双向。在Neo4j中,关系也应该是有方向性的。如果我们尝试创建没有方向的关系,那么Neo4j会抛出一个错误消息,“关系应该是有方向性的”
- 每个关系包含“开始节点”或“从节点”和“到节点”或“结束节点”
neo4j图数据库优化
- HA架构,读写分离
- 增加缓存
- 增加索引
应用场景
- 使用图数据科学进行分析,例如财务欺诈检测
- 知识图谱:根据知识点之间的关系建立知识图,帮助用户搜索到关联的知识
- 智能推荐:通过分析用户的浏览记录信息推测用户的喜好进而为用户推荐商品
- 资源的管理
neo4j安装
cd /tmp
wget http://debian.neo4j.org/neotechnology.gpg.key
rpm --import neotechnology.gpg.key
cat <<EOF> /etc/yum.repos.d/neo4j.repo
# 写入下面内容
[neo4j]
name=Neo4j RPM Repository
baseurl=http://yum.neo4j.org/stable
enabled=1
gpgcheck=1
yum install neo4j-3.3.5
配置文件/etc/neo4j/neo4j.conf,
# 数据库的存储库存储位置、日志位置等
dbms.directories.data=/var/lib/neo4j/data
dbms.directories.plugins=/var/lib/neo4j/plugins
dbms.directories.certificates=/var/lib/neo4j/certificates
dbms.directories.logs=/var/log/neo4j
dbms.directories.lib=/usr/share/neo4j/lib
dbms.directories.run=/var/run/neo4j
# 导入的位置
dbms.directories.import=/var/lib/neo4j/import
# 初始化内存大小
dbms.memory.heap.initial_size=512m
# Bolt 连接地址
dbms.connector.bolt.enabled=true
dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=0.0.0.0:7687
# 启动命令
neo4j start