Neo4j : Neo4j사가 개발한 그래프 데이터베이스 관리 시스템.
📌 https://neo4j.com/download/ 링크 접속 후 프로그램 다운로드
Node : 그래프 데이터 레코드. 데이터에 대한 정보를 노드에 담는다고 생각하면 된다.
Relationship : Node와 Node 사이의 관계를 나타낸다.
Property : Node의 속성을 나타낸다.
Label : Node를 묶는 단위
example
위 사진을 예시로 들면, 동그라미로 표현된 짱구, 맹구, 흰둥이가 Node이고, 각 Node는 이름, 나이, 성별과 같은 property를 갖는다. 또한 각 Node는 relationship으로 연결되어 있다.
Cypher : Neo4j의 그래프 query 언어. 비교적 단순하고 간단하면서도 강력하게 설계되었다.
CREATE: 노드 , 관계를 생성 (대상이 이미 있어도 또 만든다.)
MATCH: 기존 노드, 관계를 검색. WHERE과 함께 쓰면 조건부검색이 가능.
WHERE: 조건을 지정하기 위해 사용된다.
MERGE: CREATE와 MATCH를 합친 함수. 만약 대상이 없을 때는 CREATE로 사용되고 대상이 있는 경우는 MATCH로 사용된다.
SET: 노드의 lable과 property를 업데이트 및 수정하기 위해 사용된다.
DELETE : 관계나 노드를 삭제할 때 사용된다.
Relation 표현
(Node)–[Relationship]->(Node)
✍🏻 사용 예시
변수 표현
(변수 : label { 속성 : 속성값 })
1-2 의 example을 cypher의 create 기능을 이용하여 그래프 생성을 해보았다.
create (짱구:Person {name:'짱구'}),(맹구:Person {name:'맹구'}),(흰둥이:Dog {name:'흰둥이'}),
(짱구)-[:friend]->(맹구),(맹구)-[:friend]->(짱구),(흰둥이)-[:master]->(짱구)
match (p:Person) return p
match (p:Person{name:"짱구"}) set p.age=5,p.gender='male' return p
그래프를 확인해보면, 짱구 노드의 property가 추가된 것을 알 수 있다.
아래의 코드를 입력하여 맹구와 흰둥이 노드의 property도 추가한다.
(흰둥이가 몇살이지... 싶었지만 대충 1-2살이겠거니 생각되어 1살로 설정했다.)
match (p:Person{name:'맹구'}) set p.age=5,p.gender='male'
with p
match (d:Dog{name:'흰둥이'}) set d.age=1,d.gender='male'
WITH p는 첫 번째 MATCH 절의 결과를 다음 쿼리로 전달한다.
👉두 개의 MATCH 절 간에 데이터가 유지되면서 쿼리가 실행.