독서

[독서] GraphQL 2강 - 그래프이론

dohye1 2024. 4. 7. 14:30
반응형
- 그래프란 상호 연관된 사물이나 사람, 개념 또는 데이터를 다이어그램으로 표현할 수 있는 훌륭한 방법이다

그래프 이론 어휘

- 그래프는 상호 연관 관계에 놓여있는 객체 집합을 표현할 때 널리 사용한다.

- 데이터 포인트객체와 이들 사이의 관계를 그래프라고 생각하면된다. (데이터포인트란 데이터 집합내의 개별적인 요소로 구분지을수있는 것)

- 해당 다이어그램은 6개의 데이터포인트로 구성되어있다. 각 점은 node 또는 vertex라고 부른다.

- 노드사이의 연결선은 edge라고 한다.

 

그래프를 방정식으로 표현하면 G = (V, E)이다.

 

G는 그래프, V는 노드의 집합이다.

vertices = {1,2,3,4,5,6}

 

E 는 edge의 집합이다.

edges = {{1,2},{1,5},{2,3},{2,5},{3,4},{4,5},{4,6}}

 

노드 사이에 방향이나 위계성이 없다. 이러한 그래프를 무방향그래프라고 한다.

그리고 엣지는 데이터 포인터사이의 관계를 나타내며 비정렬 쌍이라고 한다.

 

위와는 반대로 방향을 가지는것을 방향그래프라고 한다.

- 무방향 그래프와 비교해보면 각 노드를 잇는 엣지가 화살표로 표현되어있다.

- 이 그래프는 노드사이의 흐름이 존재한다.

vertices = {1,3,4,6,7,8,10,13,14}
edges = ({8,3},{3,1},{3,6},{6,4},{6,7},{8,10},{10,14},{14,13})
graph = {{1,3,4,6,7,8,10,13,14}, ({8,3},{3,1},{3,6},{6,4},{6,7},{8,10},{10,14},{14,13})}

- 노드 쌍이 중괄호대신 소괄호로 묶여있다. 소괄호는 엣지쌍이 순서를 가지고있다는것을 의미함!

 

트리는 그래프다

- 트리는 노드가 위계적으로 정렬된 그래프이다.

- 보통 루트노드가 있다면 트리그래프라고 보면된다.

- 조직도는 트리의 교본!

- 트리 구조를 사용하면 데이터베이스 정보에 빠르고 효율적으로 접근할 수 있다.

- 자식을 가지고있는 노드는 branch라고 부른다. 자식노드는 leaf라고 부름.

- 트리의 노드는 모두 데이터포인트를 가지고있고, 특정 데이터에 빠르게 접근하기위해서는 트리의 어느 노드가 그 데이터 포인트를 보유하고있는지 알고있는것이 중요하다

 

GraphQL의 그래프이론

- graphql 안에는 그래프 이론이 배경으로 깔려있다.

- 그래프는 특히 데이터 포인트가 아주 많은 애플리케이션의 요구사항을 충족시키는데 적절히 사용될 수 있다.

쿼리 조회시 데이터간의 관계를 먼저 이해하고 쓰기!

- 필요한 데이터만 쿼리하여 복잡한 그래프 형식의 데이터를 간단하게 만들 수 있다.

 

 

오,,,graphql을 조금 사용해봤는데, 이러한 철학?을 가지고 만들어졌다는걸 알게되니 query 조회를 왜 중첩해서 요청을 하는지 이해가됨!
쿼리를 작성할때 tree를 손으로 그려가면서 조회할 데이터 구조를 작성해보면 좋을것같다.

'독서' 카테고리의 다른 글

[독서] GraphQL 1강  (1) 2024.03.31