반응형

/*
-- Title : [Cypr] Cypher란?
-- Tag : neo4j 네오포제이 cypher graph query language gql
*/


■ Cypher란?

  • 그래프 데이터의 조회의 업데이트를 수행하는 그래프 쿼리 언어(GQL이라고도 함 ≒ RDB의 SQL)
  • 그래프 데이터를 비교적 단순하게 조회(≠ RDB는 다수의 JOIN으로 가능)
  • 영어의 산문체와 유사한 형태(ASCII Art라고 함)
  • 명사는 Node, 동사는 Relation, 형용사 및 부사는 Attribute로 전환 가능

neo4j.com/developer/cypher/


■ 그래프 다이어그램 샘플

knowledge-graph-example.png (1018×747) (vitalflux.com)


■  노드 (Node)

  • Node는 표현하고자 하는 하나의 Entity(RDB에서 한 행(Identity, pk)에 해당)
  • 샘플 그래프에서 하나의 개체(Entity) 즉, 하나의 원을 표현
  • Cypher에서 (), (n)과 같은 한 쌍의 괄호를 사용
  • 익명 노드()는 융형이나 속성에 제한없는 모든 노드 표시
  • (n)에서 n은 변수명으로 자유롭게 서술 가능


■  레이블 (Label, 라벨)

  • 레이블은 노드를 그룹화한 것(RDB의 Table에 해당)
  • 샘플 그래프에서 색상으로 표시되면 동일한 색상이 동일한 Label
  • Label은 특정 유형의 노드에서만 작업이 필요할 시 사용
  • Node는 0개 이상의 Label을 가질 수 있음
  • Cypher에서 Label 앞에 콜론(:)을 붙임
  • (p:Person) : p:변수, Person:레이블된 노드


■  관계 (Relationship)

  • 두 Node 사이의 관계를 나타내고 연결(RDB에서 relation, fk에 해당)
  • 방향성을 가짐(개념적으로는 무방향도 있음)
  • 두 개의 Node는 둘 이상의 Relationship으로 연결 가능
  • 샘플 그래프에서 화살표에 해당
  • Cypher에서 [w:Works_For]와 같이 [대괄호]로 표현(w:변수, Works_for:관계)


■  속성 (Property)

  • Node와 Relationship을 특성을 나타냄(RDB의 field, column, attribute에 해당)
  • Label은 Property를 가질 수 없음
  • Cypher에서 m.title, m.released로 표현(m:Node나 Relationship의 변수, title/relased:Property)

wikidocs.net/50747

 


※ Resources
Cypher 쿼리 언어 - 개발자 가이드 (neo4j.com)
wikidocs.net/51774
newtoner.tistory.com/32

 

반응형

+ Recent posts