Edge DB

Posted by 엘키의 주절 주절 on September 26, 2022

개요

RDB를 사용하면서 아쉬웠던 것은 무엇이 있었을까?

테이블 간의 관계를 생각한 대로 지정하면 성능 이슈가 생기고, 이를 막기 위한 규약들이나 정규화 수준에 대한 논의가 필요하고, 상황에 따라 쿼리 튜닝도 반 필수가 되기 십상이었다.

또한 담고 있던 데이터가 많아 질 수록, 인덱스로 인한 다양한 부작용이 발생한다.

Edge DB의 특징

  • PostgreSQL 위에 만든 객체 관계형 데이터베이스
    • 엄격한 선언형, Typed Schema : EdgeDB SDL
    • SQL과 비슷하지만 쉽고 강력한 쿼리 언어 : EdgeQL
    • Schema 자동 Migration 기능 내장
    • GraphQL 지원 내장
    • ORM 들보다 훨씬 빠른 속도
  • TypeScript/JavaScript, Python, Go, Deno 공식 라이브러리 제공
  • 리눅스/맥/윈도우에 1줄 스크립트로 설치 지원

Client Libraries

GraphDB

그래프 DB가 무엇인지에 대해선 위 글을 참고하면 좋다.

짧게 요약하자면, 연관 관계에 대한 정보를 따로 보유한다. 이를 바탕으로 해당 데이터를 찾고 그와 연관된 데이터를 빠르게 찾을 수 있는 DB를 말한다.

Relational DB는 테이블과 테이블의 관계에 치중했다면, GraphDB는 데이터와 데이터의 관계에 집중했다고 볼 수 있다.

그래서 쓸만한가?

결론부터 말하자면, 그렇다라고 할 수 있다.

심지어 더 좋은 것은, RDB에서 넘어가는 코스트가 과도하지 않다는 점과, PostgreSQL 기반이라 안정성도 우수하다는 점, 또 설치와 운용에서 장점이 많다는 점이다.

마치며

사실 성능 이슈로 인해 NoSQL을 어느정도 트래픽 이상 일 때는 강제 받는 느낌도 있었다.

하지만 NoSQL은 관계를 전혀 사용하지 않다보니,논리적 연관 관계를 맺어주는 코스트와, 또 연관 데이터를 찾아서 처리하는 코스트가 만만치 않는 경우가 존재한다.

이에 대한 훌륭한 해결책이며, 이제는 어느정도 검증되어 실무에 사용할 수 있는 단계라고 여겨진다.

EdgeQL도 아주 훌륭하며, 그래도 걱정이 된다면 Dev Toy에서라도 가볍게 시작해보면 어떨까 싶다.