[关闭]
@contribute 2016-07-01T04:54:29.000000Z 字数 2019 阅读 1399

kuaz-ignite存储结构设计

tinkerpop


1. vertex cache 设计

vertexcache用于存储图数据结构中点与点、点与边、点与属性的关系。
cache中的结构为IgniteCache<String, Map<String, Object>> vertexCache

存储内容 类型 结构设计 说明
vertex的Id id String 保证唯一,中间不能包含_字符。 vertex点的唯一表示,为String类型,
vertex的标签 label String 由用户提供 vertex所属的标签。
vertex的属性 properties List<String> 参考edge property设计 vertex的所有属性,存储属性的id。
vertex的入边 inE Set<String> 参考edge设计 存储vertex所有入边的id。
vertex的出边 outE Set<String> 参考edge设计 存储vertex所有出边的id。

举例:

有一个点:
点的id:id=vwjglkjvqfdj
标签:person
属性:name_single_vwjglkjvqfdjage_single_vwjglkjvqfdj
出边:vwjglkjvqfdj_knows_sadfewfds
入边:sdafb_knows_vwjglkjvqfdj

  1. Map<String,Object> vertexValue = new HashMap<>();
  2. // id
  3. vertexValue.put("id","vwjglkjvqfdj");
  4. // label
  5. vertexValue.put("label","person");
  6. // properties
  7. List<String> properties = new ArrayList<>();
  8. properties.add("name_single_vwjglkjvqfdj");
  9. properties.add("age_single_vwjglkjvqfdj");
  10. vertexValue.put("properties",);
  11. // inE
  12. Set<String> inE = new HashSet<>();
  13. inE.add("sdafb_knows_vwjglkjvqfdj");
  14. vertexValue.put("inE",inE);
  15. // outE
  16. Set<String> outE = new HashSet<>();
  17. outE.add("vwjglkjvqfdj_knows_sadfewfds")
  18. vertexValue.put("outE",outE);
  19. vertexCache.put("vwjglkjvqfdj",vertexValue)

2. edge cache 设计

edgeCache用于存储图数据结构中边与属性之间的关系
cache中的结构为IgniteCache<AffinityKey<String>, Object> edgeCache;

存储内容 类型 结构设计 说明
edge的Id id String outVid + _ + label + _ + inVid
edge的properties List<String> Object 包此边的所有属性id

举例:

边的入点为:wevwljrjb
边的出点为:sdafb
label=knows
属性id有 flkwjf,lkwvqj
则:边的id为:sdafb_knows_wevwljrjb,

  1. String edgeId = "sdafb_knows_wevwljrjb";
  2. List<String> edgeProperties = new ArrayList<String>();
  3. edgeProperties.add("flkwjf");
  4. edgeProperties.add("lkwvqj");
  5. edgeCache.put(new AffinityKey<>(edgeId,"wevwljrjb"),edgeProperties);
  6. edgeCache.put(new AffinityKey<>(edgeId,"sdafb"),edgeProperties);

3. Vertex Property 设计

用于存储图数据结构中点的属性。
cache中的结构为IgniteCache<AffinityKey<String>, Object> vertexPropertyCache;

属性名 属性值 说明
id propertyName + "_" + Cardinality + "_" + vertexId 保证id的唯一性,同时又包含所需要的信息。
value Object 任意对象值

4. edge Property 设计

用于存储图数据结构中边的属性。
cache中的结构为IgniteCache<AffinityKey<String>, Object> edgePropertyCache;

属性名 属性值 说明
id propertyName + "_" + "single" + "_" + edgeId 保证id的唯一性,同时又包含所需要的信息。
value Object 任意对象值
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注