Graph Database Meetup in Seoul #1. What is Graph Database?
국내 유일 그래프 데이터베이스 연구 개발 전문 기업, <비트나인> 주최로 진행된
그래프 데이터베이스 밋업(Meetup) "그래프 데이터베이스 기본 개념 소개" 입니다.
그래프 데이터베이스의 기본 개념 및 특징, 활용 분야 등에 대해 간략하게 소개하였으며, 추후 진행되는 밋업에서 좀 더 자세한 실제 활용 사례 등을 소개드릴 예정입니다.
밋업 관련 정보는, https://www.meetup.com/ko-KR/graphdatabase/
관련 문의는 hnkim@bitnine.net으로 부탁드립니다.
https://bitnine.net/ 에서 그래프 데이터베이스 솔루션 AgensGraph를 직접 다운로드 하시어 사용해 보실 수 있습니다. :)
Graph Database Meetup in Seoul #1. What is Graph Database? (그래프 데이터베이스 소개)
1. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved.
What is Graph Database
#1 Graph Database Meetup in Seoul
Ver 1.0
2018.01.31
2. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved.
2
3. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved.
Session 1.
Graph Database 개념 및 활용사례
4. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved.
Index
1. Database 동향
2. Graph Database 개념
3. Graph Database 조회하기
4. Graph Database 활용 사례
5. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved.
Database 동향
6. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 6
Database
관계형 데이터베이스는 지난 40여년 간 기업 IT 환경의 주요 역할을 수행하였음
Relational Database
1970년대 개발되어 현재까지 다양한
시스템에서 데이터 운영에 크게 기여한
데이터베이스
운영 시스템
(Database Management System)
테이블 형태(Tabular Format)에 객체(Entity)를
적재하고 외래키(Foreign Key)와 Join 문을
통하여 각 Entity 간 관계를 정의
2000년대 들어 급격하게 변화하는 데이터
환경에 따라, 새로운 형태의 데이터 운영
방식의
필요성이 대두됨에 따라 NoSQL 개발 운동의
기폭제가 됨
Social
Data
Mobile
Data
i18n
Spatial
Sensor
interwebs
broadband
mobile access
cultural changes
7. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 7
Database 패러다임의 변화
DB시장은 현재 아래와 같은 패러다임의 변화로 교체가 반드시 필요한 시대가 되었음. NoSQL의 필요성 대두.
PC/인터넷 발달로
물리적인 정보들의 데이터화
(3차 산업)
관계형
DB
그래프
DB
형식과 규격이 정의된
정형 데이터만 존재
(고객신상/매출/재고/회계 등)
MB/GB 단위 규모로
수용 가능
기간 통계 분석
(년/분기/월/주)
빅데이터 분석/
기계학습을 통한 산업자동화
(4차 산업)
TB/PB 단위의
대규모 저장소가 필요해짐
실시간
추이 분석
형식이 없는
비정형 데이터가 증가
(비정형/음악/메시지/소셜/위치 등)
산업 패러다임 변화 데이터 형태 증가 데이터 량 증가 활용 주기 증가
8. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 8
NoSQL Database
기존 SQL의 대안으로 등장한 NoSQL 모델 중 GDB는 데이터간 관계 분석을 통한 인사이트 도출에 유용함
<Key-Value Store>
{Document Database}
(Graph Database)
[Column Database]
Complexity
Data Size
KEY
1
KEY
2
KEY
3
VALUE1
VALUE2
VALUE3
DOCUMENT1
DOCUMENT2
DOCUMENT3
{
‘doc_id:’1:1’
} {
‘doc_id:’1:2’
}
{
‘doc_id:’1:3’
}
VERTEX1
VERTEX2
VERTEX3
{
‘_id:’1:1’
}
{
‘_id:’1:2’
}
{
‘_id:’1:3’
}
COL1 COL2 COL3 COL4
COL1:VAL1
COL1:VAL2
COL1:VAL3
COL1:VAL1
COL1:VAL2
COL1:VAL3
COL1:VAL1
COL1:VAL2
COL1:VAL3
COL1:VAL1
COL1:VAL2
COL1:VAL3
9. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved.
Graph Database 란?
10. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 10
Graph
Graph는 점(Vertex)와 선(Edge)의 연결로 데이터를 저장하여, 특정 대상 간 상관관계를 파악하기 용이 함
Vertex Edge Graph+ =
대상 객체를 표현함
ex) 홍길동/21세/남/…
ex) 모자/캡/남성용/...
관계를 표현함
ex) 구입하다, 대행하다, 선물하다
대상 간 인과관계를 표현함
ex) OOO쇼핑몰 8월 구매 흐름
11. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 11
Graph Data
Graph Data란 모든 종류의 데이터 간의 관계를 Graph 형태로 구현한 데이터
12. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 12
Graph Data Model
Property
Edge
Vertex
Label
Graph Data Model은 Graph Data로 현실세계의 데이터들을 직관적으로 표현한 데이터 모델
Property Graph Data, Hyper Graph, RDF Triple Store
13. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 13
Graph Database
Graph Query Language
Administration Tools
Data Management
데이터 처리 및 분석을 위한 직관적인 언어
시스템 관리, 백업, 모니터링 등과 같은 관리 도구
데이터 캐시, 클러스터 구성, 트랜잭션 관리
Graph Data Model을 기반으로 데이터를 저장, 관리, 분석할 수 있는 기술을 제공하는 데이터베이스
14. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 14
History of Graph Database
Graph Database는 1970년대 개발된 Network Data 모델에서 시작됨.
1970s: Network data model before relational model
1980: Big bang -
The birth of the relational model and the declarative query language SQL
1990s: XML, Semantic Web standard (RDF, SPARQL) using graph model
1998~: NoSQL boom including Graph Database
2000s: Neo4j started and Cypher was borned -
Cypher borrows some concepts(i.e, graph pattern matching) from SPARQL
15. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 15
RDB와 GDB 비교 (1/3) – Performance
Depth RDBMS execution time(s) GraphDB execution time(s) Records returned
2 0.016 0.01 ~2500
3 30.267 0.168 ~110,000
4 1543.505 1.359 ~600,000
5 Unfinishied 2.132 ~800,000
했을 때,
응답 시간 차이 1.6~1135배
Relational Database Graph Database
Alisa의 친구의 친구를
검색하는 질의(Query)를
요청
데이터 조회시 Join 연산이 없어 응답속도가 매우 빠름.
16. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 16
RDB와 GDB 비교 (2/3) – Flexibility
데이터 구조 변경이 자유로운 Schema-less한 데이터 구조로 급변하는 비즈니스 환경에 유연하게 적용 가능.
Relational Database Graph Database
17. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 17
RDB와 GDB 비교 (3/3) - Intuitive
고객정보 테이블
상품정보 테이블 상품유형 테이블
주문정보 테이블
구매하다
ㆍID: 1
ㆍName: Bill
ㆍGender: Male
ㆍAge: 25
ㆍProductID: 10235
ㆍProductName: ElectricRazor
ㆍUnitPrice: 164,000
ㆍOrderID: 17082101
ㆍProductID: 10235
ㆍUserID: 1
ㆍQuantity: 1
ㆍPrice: 164,000
Bill E_Razor
property property property
Relational Database Graph Database
시각적인 그래프를 통해 데이터를 확인하므로 직관적으로 문제에 대한 파악 및 insight 도출 가능
18. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 18
Graph Database 활용
복잡한 관계로 이루어진 비정형 빅데이터 분석을 위해서는 Graph DB가 가장 쉽고 간편한 최적의 솔루션 임
19. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 19
Graph Database 전망
예상 시장점유율
25%
(전체 DB
시장 대비)
신규 프로젝트
75%
(500개
기업 中)
Forrester Group:
“2017년경에 이르면,
기업 환경에서 사용되는
Database의 25% 가량이
Graph DB가 될 것이다.”
Gartner:
“2018년 말 정도가 되면,
전세계 유명기업(Fortune500)
의
75%정도가 Graph DB를
이미 도입하였거나,
도입을 검토할 것이다.”
Graph DBMS
“시장 패러다임은 DB시장의 교체 대상으로, ‘Graph DB’를 지목하고 있다.”
Graph Database는 전체 데이터베이스 중에서 5년 연속 인지도 상승률 1위 기록
20. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved.
Graph Database 조회
21. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 21
Cypher란?(1/2)
Cypher는 그래프 데이터에 대한 직관적인 질의 처리를 위하여 개발된 오픈소스 언어
<그림> http://opencypher.org
22. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 22
Cypher란?(2/2)
사용자 및 개발자 친화적인 문법을 가지고 있으며 기존 SQL 문법보다 관계데이터 표현에 용이한 서술형
프로그래밍 언어. SQL, SPARQL, Python에서 영향을 받음.
<그림> http://opencypher.org
23. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 23
Cypher Query 구조 – Vertex, Edge, Pattern
(:Person {
name:'Tom Hanks',
born:1956})
(:Movie {
title:'Cast Away',
released:2000,
tagline:'At the edge of
the world, his journey
begins.'})
➢ Vertex : 데이터 도메인 내 하나의 객체를 표현, Cypher에서는 ( ) 기호를 이용하여 표현
➢ Edge : 데이터 도메인 내 표현된 객체 간 관계를 정의하며, Cypher에서는 [] 및 ->를 이용하여 표현
➢ Pattern : 하나 이상의 Vertex 및 Edge의 조합을 통하여 특정 그래프 데이터를 표현하는 표현 방식
예시] (:Person {name:‘Tom Hanks’})-[:ACTED_IN {roles:['Chuck Noland']}]->(:Movie {title:’Cast Away’})
[:ACTED_IN
]
24. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 24
Cypher Query 구조 – Read Clause
Cypher SQL
MATCH FROM
OPTIONAL MATCH LEFT or RIGHT OUTER JOIN
WHERE WHERE
WITH INLINE QUERY
ORDER BY ORDER BY
RETURN SELECT
LIMIT LIMIT
Cypher에서 Read 질의 구조는 아래와 같음
[MATCH WHERE]
[OPTIONAL MATCH WHERE]
[WITH [ORDER BY] [SKIP] [LIMIT]]
RETURN [ORDER BY] [SKIP] [LIMIT]
<표> SQL 쿼리문과의 비교
25. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 25
Cypher Query 구조 – Write Clause
Cypher에서 Write 질의 구조는 아래와 같음
<표> SQL 쿼리문과의 비교
(CREATE [UNIQUE] | MERGE)
[SET|DELETE|REMOVE|FOREACH]
[RETURN [ORDER BY] [SKIP] [LIMIT]]
Cypher SQL
CREATE CREATE
MERGE CREATE OR REPLACE
SET UPDATE
DELETE DROP
REMOVE DELETE
26. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 26
Cypher Query 예시
영화관련 데이터로 몇 가지 예시 쿼리 수행
Person
acted_in
produced
directed
wrote
reviewed
Movie
27. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 27
Cypher Query 예시 – Read Clause
MATCH, RETURN, WITH, ORDER BY, LIMIT절 관련 예시 쿼리
예시 #1) 영화 배우 ’Rain’이 출연한 영화 제목은?
MATCH (n:person)-[:acted_in]->(m:movie)
WHERE n.name = ‘Rain’
RETURN m.title;
title
------------------
"Speed Racer"
"Ninja Assassin”
(2 rows)
28. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 28
Cypher Query 예시 – Read Clause
MATCH, RETURN, WITH, ORDER BY, LIMIT절 관련 예시 쿼리
예시 #2) 영화 배우 ‘Rain’과 같이 출연한 배우들 가운데
가장 많은 영화에 출연한 배우와 작품 수는?
MATCH (:person{name:'Rain'})-[:acted_in]->(:movie)<-[:acted_in]-(n:person)
WHERE n.name <> 'Rain'
WITH n
MATCH (n)-[:acted_in]->(m:movie)
RETURN n.name, count(*) AS movie_cnt
ORDER BY movie_cnt
LIMIT 1;
name | movie_cnt
-------------------+-----------
"Ben Miles" | 6
29. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 29
Cypher Query 예시 – Write Clause
CREATE, MERGE, SET, DELETE절 관련 예시 쿼리
예시 #3) 영화 배우 ‘Taehee Kim’과 ’Taehee Kim’이 출연한 영화 ‘중천’ Vertex 생성
CREATE (TaeheeKim:person {name:'Taehee Kim', born: 1980})
CREATE (Jungchun:movie {title: '중천', released:2006, tagline:'한국 영화'})
CREATE (TaeheeKim)-[:ACTED_IN {roles:'소화'}]->(Jungchun);
GRAPH WRITE (INSERT VERTEX 2, INSERT EDGE 1)
예시 #4) 영화 ‘중천’에 관한 ’tagline’ property 값 변경
MATCH (n:movie {title: ‘중천’}) SET n.tagline = ‘한국형 판타지 액션 영화’;
GRAPH WRITE (UPDATE PROPERTY 1)
30. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 30
Cypher Query 예시 – Write Clause
CREATE, MERGE, SET, DELETE절 관련 예시 쿼리
예시 #5) 영화 배우 ‘Rain’과 ’Taehee Kim’이 혼인관계임을 나타내는
‘Married’ Edge 생성
MERGE (TaeheeKim:person {name:'Taehee Kim', born: 1980})
MERGE (Rain:person {name:'Rain', born: 1982})
MERGE (TaeheeKim)-[:married {registered: 2017}]->(Rßain)
GRAPH WRITE (INSERT VERTEX 0, INSERT EDGE 1)
31. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved.
Graph Database 활용 사례 예시
32. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved. 32
연관 관계 데이터 저장 및 분석이 필요한 여러 분야에서 Graph Database 활용 가능
33. ⓒ 2017 by Bitnine Co, Ltd. All Rights Reserved.
We create value for our clients by connecting the world’s data.