笔者由于工作中需要用到图数据库,所以花2小时研究了下Janus Graph这个开源项目,下面是一些学习心得,如果后面使用有更多启发再更新,如有错误,欢迎纠正。
学习一门技术最标准的方式是从官网入门:https://docs.janusgraph.org/
然后搞清楚以下问题即可:
- 是什么?为什么出现?
- 基本原理
- 怎么使用
- 再深入理解原理
1.JanusGraph是什么
本质问题是图数据库是什么?
JanusGraph旨在支持当需要的存储和计算能力超出了单台计算机所能提供的范围的图处理。 包括对图数据进行实时遍历和分析查询,这是JanusGraph的基本优势。
关键词是:图数据、实时遍历、实时查询和分析。
事实上,很多数据不再是关系型数据了,比如,人的关系网络,物联网,物流、交通等。对这种数据进行查询就像对树进行深度或广度遍历,只是图不仅包括树,更像是森林。
下面是笔者绘制的Janus图的基本数据组成:https://docs.janusgraph.org/basics/schema/

2.基本原理
2.1.存储
Janus支持的存储有
Apache Cassandra
Apache HBase
Oracle Berkeley DB Java Edition
存储和索引是分开的:
Elasticsearch
Apache Solr
Apache Lucene
以hbase为例:Janus只支持等值查询,将索引属性的值做一个hash,然后分段存储在多个regionserver,这样可以避免查询热点。
2.2.部署场景
https://docs.janusgraph.org/basics/deployment/

当单独以Janus Server模式部署时,客户端与服务器进行交互可以选择:
- HTTP方式
- WebSocket方式
- 或者2者的组合
3.怎么使用

对图的操作,最频繁的就是查询和分析,下面是一个demo项目。
demo
我们采用集成在应用里的方式,建一个java项目。
导入依赖
<properties>
<java.version>1.8</java.version>
<janusgraph.version>0.5.1</janusgraph.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.janusgraph/janusgraph-core -->
<dependency>
<groupId>org.janusgraph</groupId>
<artifactId>janusgraph-core</artifactId>
<version>${janusgraph.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.janusgraph/janusgraph-berkeleyje -->
<dependency>
<groupId>org.janusgraph</groupId>
<artifactId>janusgraph-berkeleyje</artifactId>
<version>${janusgraph.version}</version>
</dependency>
<dependency>
<groupId>org.janusgraph</groupId>
<artifactId>janusgraph-driver</artifactId>
<version>${janusgraph.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.janusgraph/janusgraph-inmemory -->
<dependency>
<groupId>org.janusgraph</groupId>

本文介绍JanusGraph图数据库,探讨其在大规模图数据处理的优势,包括实时遍历和分析查询。涵盖JanusGraph的基本原理、部署场景、使用方法及一个Java项目示例,演示如何构建、查询图数据。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



