반응형
/*
-- Title : [Cypr] Cypher란?
-- Tag : neo4j 네오포제이 cypher graph query language gql
*/
■ Cypher란?
- 그래프 데이터의 조회의 업데이트를 수행하는 그래프 쿼리 언어(GQL이라고도 함 ≒ RDB의 SQL)
- 그래프 데이터를 비교적 단순하게 조회(≠ RDB는 다수의 JOIN으로 가능)
- 영어의 산문체와 유사한 형태(ASCII Art라고 함)
- 명사는 Node, 동사는 Relation, 형용사 및 부사는 Attribute로 전환 가능
■ 그래프 다이어그램 샘플
■ 노드 (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)
※ Resources
•Cypher 쿼리 언어 - 개발자 가이드 (neo4j.com)
•wikidocs.net/51774
•newtoner.tistory.com/32
반응형