• HOME
  • PRODUCT
  • DEVELOP
  • NEWS
  • CONSULTING
No Result
View All Result
illunex Blog
  • HOME
  • PRODUCT
  • DEVELOP
  • NEWS
  • CONSULTING
No Result
View All Result
일루넥스 블로그
No Result
View All Result

Neo4j에 대하여

박 윤민 by 박 윤민
2020년 10월 5일
in DEVELOP, 백엔드
쿠버네티스로 운영 서버 구축하기

안녕하세요, 일루넥스 개발팀 박윤민입니다.
그래프 데이터베이스 중 하나인 Neo4j에 대해 소개해보고자 합니다.

1. 그래프 데이터베이스

그래프는 노드와 그 노드를 연결하는 간선을 하나로 모아 놓은 자료 구조 중 하나입니다. 

이러한 자료구조가 현대사회의 소셜네트워크 상의 데이터를 저장하기 용이하며 다양한 관계를
점과 선 형태의 그래프로 저장하고 또 시각화함으로써 특정 소비자의 구매 패턴을
소셜 관계가 있는 소비자 그룹과 연계하여 쉽게 저장하고 또 새로운 인사이트를 발견할 수 있게 하는 장점이 있습니다. 

그런 자료구조를 좀더 효율적으로 저장하기 위해서 그래프 데이터베이스라는 것이 등장하게 되었습니다. 

그래프 데이터베이스에는 AllegroGraph, Amazon Neptune, AnzoGraph DB, ArangoDB, OrientDB 등이 있으며
그 중에서 Neo4j에 대해서 소개 해보겠습니다.

1.1 완전한 그래프 데이터베이스 관리 시스템

그래프 데이터베이스 저장 파일의 바이너리 파일 레이아웃과 같은 저수준 구성 요소를 포함해 전체 인프라가 그래프 데이터를 처리하도록 최적화 되어있습니다.

1.2 트랜잭션 처리 중심의 ACID 호환 데이터베이스

Neo4j는 오늘날 우리가 알고 있는 전통적인 관계형 데이터베이스 관리 시스템의 많은 특성을 공유하고 있다. 단지 밀접하게 연결된 사용 사례에 적합한 근본적으로 다른 데이터 모델을 사용한다.

1.3 온라인 거래 처리용 데이터베이스

온라인 시스템 환경에서 데이터베이스 관리 시스템으로부터 데이터를 빠르게 반환 받을 수 있다.

1.4 확장형으로 설계된 DB

데이터베이스 서버 인스턴스의 클러스터를 생성하면 확장성, 고가용성 및 결함 허용 요구사항을 만족 시킬 수 있다.

1.5 사이퍼(질의어)

사이퍼(Cypher)는 식으로 나타내는, 프로퍼티 그래프의 효율적인 질의 및 업데이트를 허용하는 선언형 그래프 질의어입니다.

1.5.1. 특징

  1. 선언적
  2. 표현적
  3. 패턴 일치
  4. 멱등성

1.5.2. CRUD

데이터 생성

CREATE (romeo:Person{name: "Romeo"})-[:LOVES]->(juliet:Person{name: "Juliet"}) 

첫 번째 노드 로미오에는Person이라는 레이블과 로미오라는 값을 가진 이름 문자열 속성이 생성된다.
그런 다음 LOVES 관계가 첫 번째 노드인 로미오와 두 번째 노드인 줄리엣을 연결한다.

Neo4j에서 관계는 항상 방향이 있으므로 이야기를 더 잘 모델링하기 위해 줄리엣에서 로미오로 두 번째 LOVES 관계를 만들 수 있다.

CREATE (juliet)-[:LOVES]->(romeo)
RETURN romeo, juliet; 

데이터 읽기

MATCH; (n:Person)
WHERE n.name="Juliet" or n.firstName="Juliet"
RETURN n; 

중요한 키워드는 MATCH 및 RETURN입니다. 이것은 Person 레이블이 있는 노드에 대해 데이터베이스를 조회합니다. 또한 조건으로 name 속성이 사용됩니다.

데이터 수정하기

MATCH (n:Person{name:"Juliet"})
WHERE n.age = 13
SET n.age=14
RETURN n; 

데이터 수정하기

데이터 삭제하기

노드를 삭제할 때 첫 번째 규칙은 삭제할 노드가 더 이상 다른 노드와 연결돼 있지 않아야 한다. 다음 코드는 실패하게 된다.

MATCH (n:Person{name:"Romeo"})
DELETE n; 

따라서 관계를 먼저 삭제하거나 DETACH DELETE를 사용 해야 한다.

MATCH (n:Person{name:"Romeo"})
DETACH DELETE n; 

2. 라이센스

2.1 Community Edition

Neo4j Community Edition은 완전 오픈 소스 이며 GPL v3에 따라 라이센스 및 배포 됩니다 .

2.2 Enterprise Edition

직원이 50 명 미만인 스타트 업은 Neo4j Enterprise에 대한 무료 스타트 업 라이선스 를 받기 위해 당사에 연락 할 수 있으며 누구나 및 누구나 무료로 개발할 수 있습니다.

3.3 Aura

Neo4j Aura는 완전히 자동화되고 완전히 관리되는 구독 기반 제품입니다.

상세 라이센스 바로가기

마치며

여기까지 Neo4j에 관한 내용이었습니다.
읽어주셔서 감사합니다.

ShareTweet
Previous Post

MiniKube를 사용해서 로컬용 오케스트레이션 확인하기

Next Post

QA 직무에 대하여

Next Post
쿠버네티스로 운영 서버 구축하기

QA 직무에 대하여

  • Copyright © 2020 illunex., Inc., All Rights Reserved.
  • 개인정보보호정책
No Result
View All Result
  • HOME
  • PRODUCT
  • DEVELOP
  • NEWS
  • CONSULTING