그래프 DB란 데이터 간의 관계를 엔티티로 다룰 수 있도록 설계된 데이터베이스이다. 그래프 DB는 데이터 간의 관계를 저장 시점에 저장한다. 그래프 DB의 핵심 요소는 Node와 Relation이다.
노드
관계
Neo4J는 오픈소스 그래프 DB이며, 아래와 같은 특성을 가진다. 커뮤니티 버전은 무료이지만, 운영 관점의 주요 기능은 대체로 유료다.
구문 생성
CREATE (john:Person {name: 'John'})
CREATE (joe:Person {name: 'Joe'})
CREATE (steve:Person {name: 'Steve'})
CREATE (sara:Person {name: 'Sara'})
CREATE (maria:Person {name: 'Maria'})
CREATE (john)-[:FRIEND]->(joe)-[:FRIEND]->(steve)
CREATE (john)-[:FRIEND]->(sara)-[:FRIEND]->(maria)
# SQL
SELECT DISTINCT c.CompanyName
FROM customers AS c
JOIN orders AS o ON (c.CustomerID = o.CustomerID)
JOIN order_details AS od ON (o.OrderID = od.OrderID)
JOIN products AS p ON (od.ProductID = p.ProductID)
WHERE p.ProductName = 'Chocolade';
# Cypher
MATCH (p:Product {productName:"Chocolade"})<-[:PRODUCT]-(:Order)<-[:PURCHASED]-(c:Customer)
RETURN distinct c.companyName;
# SQL
SELECT e.LastName, et.Description
FROM Employee AS e
JOIN EmployeeTerritory AS et ON (et.EmployeeID = e.EmployeeID)
JOIN Territory AS t ON (et.TerritoryID = t.TerritoryID);
# Cypher
MATCH (t:Territory)<-[:IN_TERRITORY]-(e:Employee)
RETURN t.description, collect(e.lastName);
개발자들은 Neo4j Browser와 함께 Neo4j Desktop을 사용하여 그래프를 개발하고 테스트할 뿐만 아니라 지원되는 드라이버, 도구 및 API를 사용하여 여러 언어로 애플리케이션을 구현한다. 관리자는 도구를 사용하여 Neo4j 데이터베이스 및 클러스터를 관리 및 모니터링한다. 비즈니스 사용자는 즉시 사용 가능한 그래프 시각화 도구를 사용하거나 사용자 지정 도구를 사용한다. 데이터 분석가와 과학자들은 Graph Algorithm 라이브러리의 분석 기능을 사용하거나 사용자 정의 라이브러리를 사용하여 결과를 이해하고 기업에 보고. 애플리케이션 또한 기존 데이터베이스(SQL or NOSQL)와 통합되어 그 위에 Neo4j를 계층화하여 데이터에 대한 풍부한 그래프 가능 액세스를 제공할 수 있다.
https://visjs.org/ 자바스크립트 네트워크 그래프 시각화 라이브러리
https://d3-graph-gallery.com/network.html