JanusGraph的schema及数据建模
每个JanusGraph都有一个schema,该schema由edge labels, property keys和vertex labels组成。JanusGraph的schema可以显式或隐式创建,推荐用户采用显式定义的方式。JanusGraph的schema是可以在使用过程中修改的,而且不会导致服务宕机,也不会拖慢查询速度。
注意:通关系型数据库不同,图数据的schema是定义一张图,而非定义一个vertex的。在Mysql中,我们通常将建立一张表定义为创建一个schema,而在JanusGraph中,一个Graph用于一个schema。
组成结构如下:
JanusGraph Schema
|
|-----------Vertex Lables
|
|-----------Property Keys
|
|-----------Edge Labels
Schema Type如edge label, vertex label及property key在元素首次创建时被赋予元素,且不能修改。
Definging Edge Labels
每个连接了两个vertex的edge都有一个label,用于表示关系的语义。例如一个edge label:friend表明了两个vertex有朋友关系。
要定义edge lable,调用makeEdgeLabel(String)方法,该方法返回一个builder,可以通过该builder设置edge的多样性(multiplicity),多样性属性定义了具有该label的edge的多样性约束,也即在一个vertex间的最大edge的个数。JanusGraph支持如下多样性。
Edge Label Multiplicity(边的标签多样性)
- MULTI
在一对vertex间可以有任意多个同样label的edge。
- SIMPLE
在一对vertex间最多只能有一个同样label的edge。
- MANY2ONE