본문 바로가기
독서/GraphQL

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

by dohye1 2024. 4. 7.

목차

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

    그래프 이론 어휘

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

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

    - 해당 다이어그램은 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' 카테고리의 다른 글

    [독서] GraphQL 1강  (1) 2024.03.31