HBase에 속성 그래프를 기꺼이 저장할 수 있습니다. 속성 그래프는 그래프 노드와 가장자리에 속성이 있으며 가장자리가 다른 유형에 속하는 한 여러 개의 가장자리가 같은 터플의 노드를 연결할 수 있습니다.HBase/Cassandra 이상의 속성 그래프에 대한 Datamodel
내 쿼리 패턴은 속성 및 인접 영역을 요구하거나 그래프를 가로 지르도록 요청합니다. 예를 들면 다음과 같습니다. Vertex [name = claudio] => OutgoingEdge [knowows] => Vertex [gender = 여성], 클라우디오가 좋아하는 모든 여성들이 나에게 줄 것입니다.
나는 그래프 데이터베이스가이 작업을 수행한다는 것을 알고 있지만 대개 거대한 데이터 세트의 경우 여러 노드에서 확장되지 않습니다. 그래서 NoSQL ColumnStore (HBase, Cassandra ...)에서 구현할 의향이 있습니다.
내 데이터 모델이 다음과 같습니다.
정점 표 :
키 vertexid (UUID)
패밀리 "속성": < 속성 이름 > => < 속성 값 > ...
패밀리 "OutgoingEdges :"< 에지 키 > vertexid 다른 > => <, ...
가족 "IncomingEdges :"... 나가는 가장자리와 같은
이 표는 저를 가져올 수 있습니다 신속하게 버텍스의 속성과 인접성 목록. 다른 종단점 으로 vertexid를 사용할 수 없습니다. 여러 종류의 (다른 유형의) 여러 개의 엣지가 동일한 두 개의 개의 정점을 연결할 수 있기 때문입니다.
가장자리 표 :
키 : 에지 키 (복합 (< 소스, >는, < 대상 >을 vertexid < 에지 유형 이름 >) vertexid) (즉, vertexid1_vertexid2_knows)
가족 "속성": < 속성 이름을 > => < 속성 값 > ...
이 표를 사용하면 가장자리의 속성을 빠르게 가져올 수 있습니다.
가장자리 유형 :
키 : 복합 (< 소스, >을 vertexid "밖으로 |에서"< 에지 유형 이름 >) (즉, vertexid1_out_knows)
가족 "이웃 :"< 대상 vertexid > => null, ...
질문 :
1) 일반 : 당신은 내 작업을위한 더 나은 데이터 모델을 볼 수 있습니까?
2) 특정 키의 경우 일부 패밀리가 비어있을 수 있습니다 (즉, "OutgoingEdges :"가족이 가장자리를 감지하지 못합니다). 나는 당신이 모든 키를 볼 수 있듯이 이 vertexiduuid 접두사로 구성되어 있기 때문에 매우 작고 이며 대부분 동일한 regionserver에 맞을 것입니다.
3) 필자는 스캐닝을 위해 필터를 광범위하게 사용한다고 생각합니다. I guess regexp 필터가 내 친구가됩니다. 이 데이터 모델에 적용된 필터 성능이 일까?