目录
1 Neo4j & JanusGraph
1.1. Neo4j
1.1.1 介绍
- Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属 性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性。
- Neo4j创建的图是用顶点和边构建一个有向图,其查询语言cypher已经成为事实上的标准。
- 架构
1.1.2 应用场景
实时推荐、主数据管理、身份和访问管理
网络和IT运营、欺诈识别、反洗钱/逃税
基于图的搜索、知识图、图分析和算法
图驱动的人工智能、智能家居 、物联网/物联网
1.1.3 优势
- 它很容易表示连接的数据;
- 检索/遍历/导航更多的连接数据是非常容易和快速的;
- 它非常容易地表示半结构化数据;
- Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习;
- 它使用简单而强大的数据模型;
- 它不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引。
- 开源且社区更新快
1.1.4 缺点
- 它不支持分片(导致 Neo4j 没法存储巨大的一张关系图)
- 致命:社区版只能工作在单机上、不支持热备、cpu 核数使用有限制、不支持插件
- 致命:社区版对支持节点数、关系和属性有限制,对Hadoop 生态集成比较窄
1.2. JanusGraph
1.2.1 介绍
- JanusGraph是一个图数据库引擎. JanusGraph集中在图的序列化, 图的数据模型和高效的查询. 此外JanusGraph依赖hadoop来做图的统计和批量图操作.
- JanusGraph为数据存储,索引和客户端访问实现了粗粒度的模块接口. JanusGraph的模块架构能和和许多存储,索引,客户端技术集成. 可以简便的扩展新的功能
- 架构
1.2.2 应用场景
复杂且松散的关系查询、低延迟访问、实时推荐系统、知识图谱等
1.2.3 优势
- OLTP:支持实时、数千用户并发遍历图和分析查询图的功能
- 架构是分布式的,可以自由的扩展集群节点的,可以利用很大的集群,JanusGraph 可以存储很大的包含数千亿个节点和边的图。
- JanusGraph 支持多个非常大的图形,支持大量并发事务和运行图计算
- 它的事务处理能力兼容集群中的多台机器并可以以毫秒为单位回答了大型图表上复杂的遍历查询。
- 与Hadoop 生态结合比较好,它通过Hadoop的框架支持全局的图形分析和图的批量处理。
- 通过集成大数据平台,比如Apache Spark、Apache Giraph、Apache Hadoop等,支持全局图数据分析、报表、ETL
- 支持数据存储:Apache Cassandra、 Apache HBase、 Oracle Berkeley DB Java Edition
- 集成 Elasticsearch、 Apache Solr、 Apache Lucene后,可以支持索引, 加快查询和复杂查询:
- JanusGraph的事务处理能力随集群中计算机的数量而缩放,并在毫秒内回答大型图上的复杂遍历查询
- 提供优化的磁盘表示形式,以允许有效使用存储和访问速度
1.2.4 缺点
- 开源但是社区不太活跃,但最具前景
- 比较新,2017年开源第一个版本,相关学习书籍资料少
2 Install
2.1 Neo4j
采用 dmg 包安装
2.1.1环境
Mac os、jdk 1.8、neo4j 3.3.9 社区版
2.1.2 文档
下载:Neo4j Download Center - Neo4j Graph Database Platform
安装:macOS installation - Operations Manual
cypher:Cypher Shell - Operations Manual
中文:Neo4j概述
2.1.3 安装步骤
(1)解压后,配置环境变量
(2)启动: neo4j console
退出:ctrl+C
(3)访问
http://localhost:7474/browser/
默认密码:neo4j
修改密码:12345678
2.1.4 在 web 上操作
:param thisAlias => 'Robin'
:params
CREATE (:Person {name : 'Dick Grayson', alias : {thisAlias} });
MATCH (n) RETURN n;
2.2 JanusGraph
2.2.1 环境
Docker 、janusGraph最新版 0.4、Java 8
注意:获取 image 会花费较长时间
2.2.2文档
hub:Docker Hub
use:https://github.com/JanusGraph/janusgraph-docker/blob/master/README.md
gremlin:Redirecting...
介绍:
2.2.3 步骤
2.2.3.1 获取镜像
$ docker pull janusgraph/janusgraph:0.4
2.2.3.2 启动
docker run -it -p 8182:8182 janusgraph/janusgraph:0.4
2.2.3.3 使用 gremlin 命令行
docker run --rm --link 3531b004ee68:janusgraph -e GREMLIN_REMOTE_HOSTS=janusgraph -it janusgraph/janusgraph:0.4 ./bin/gremlin.sh
2.2.3.4 一些操作
:remote connect tinkerpop.server conf/remote.yaml
:> g.addV('person').property('name', 'chris')
:> g.V().values('name')
2.2.3.5 Java API