개요
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에서라도 가볍게 시작해보면 어떨까 싶다.