blog - graphql Schema VS DB Schema

백근영·2019년 11월 19일
1
post-thumbnail

Graphql Schema?

graphql을 이용해 backend를 구축하면서 처음했던 생각은 graphql의 schema와 mongoDB의 schema가 거의 유사하게 구성될 것 같은데 굳이 graphql의 schema가 존재하는 이유가 무엇일까? 하는 것이었다. 맨 처음 프로젝트를 설계할 때는 graphql schema와 DB의 schema는 정확히 1대1 대응이 되어야할 것이라고 생각했었는데, 프로젝트를 진행해 나가고 graphql의 작동 방식을 구체적으로 이해하게 되면서 그럴 필요가 없다는 것을 깨달았고, graphql schema와 db schema의 차이에 대해 곰곰이 생각해 보게 되었다.(역시 사이드 프로젝트를 하면서 생각이 많이 느는 것 같다!)

DB Schema VS Graphql Schema

사실 생각해보면 이 둘의 차이는 꽤 간명하다. DB는 데이터의 영속성을 위한 것이고, Graphql은 통신을 위한 것이다. 내가 저장하고 싶은 데이터의 형태와 통신을 하기 위해 사용하는 데이터의 형태는 당연히 다를 수도 있는 것이다. 즉 graphql을 통해 통신하는 데이터는 본질적으로 db와 아무 상관이 없다는 것이다. 지금 생각해보면 내가 왜 그렇게 생각했는지 이해할 수 없지만, graphql을 처음 접해봐서 그런지 처음엔 graphql로 통신하는 데이터는 무조건 DB 데이터에 의존적이라고 생각했었다.

graphql은 nosql과 잘 어울린다?

graphql은 under fetching 및 over fetching이라는 문제를 해결할 수 있는 새로운 api이고, 내가 원하는 대로 자유롭게 schema를 만들어 데이터를 전송할 수 있다. 그렇기 때문에 나는 데이터 중복을 많이 발생시키고 하나의 document에 최대한 많은 정보를 함께 저장해 놓는 nosql 방식의 데이터베이스가 graphql과 잘 맞을 것이라고 생각했다. 하지만 위에서 말했듯이 graphql의 schema와 db의 schema는 완전히 독립적이기 때문에 graphql을 사용할 때 db가 sql이냐 nosql이냐는 크게 중요하지 않다고 결론내렸다.

profile
서울대학교 컴퓨터공학부 github.com/BaekGeunYoung

0개의 댓글