동글의 DB 선택 과정

echo
Dong-gle
Published in
2 min readJul 8, 2023

프로젝트에 사용할 DB 정하기

동글에 사용할 DB에 대해 고민 중이다.

아직 마크다운 에디터 기능까지 고려하고 있진 않지만, CMS 특성상 글을 직접 편집할 수 있는 기능이 언젠가는 들어갈 예정이다.

그렇기에 확장성까지 고려하여 DB를 고려 중이고 그 과정을 적어보려고 한다.

RDB VS NoSQL(Document)

가장 크게 고려해야하는 분류는 관계형 DB와 비관계형 DB인 것 같다.

깊게 들어가기엔 내용이 너무 많아질 것 같기 때문에 대표적인 특징과 동글 서비스 기능과 맞는지 판단해보려고 한다.

NoSQL은 아래와 같은 특징이 있다.

  • 낮은 지연 시간
  • 높은 가용성
  • 유연한 스키마 데이터 모델
  • 느슨한 ACID
  • 수평 확장 가능
  • 객체 기반 API

RDB의 특징은 아래와 같다.

  • 데이터 무결성 보장
  • ACID 규정 준수

그리고 이 둘을 고려하는데 있어서 PACELC 이론을 참고하였고, 아래와 같은 결론이 내려졌다.

  1. 일단 한국 유저를 타겟으로 하고 있기 때문에 여러 데이터 센터에 걸쳐서 구축할 가능성이 적다.
  2. 그렇다면 Latency와 Consistency를 고려해야하는데, 우리 서비스는 사용자가 업로드한 글이 중요한 데이터고 이 데이터를 통해 비지니스 로직들을 수행할 것이기 때문에 일관성이 무엇보다 중요하다.

따라서 RDB를 사용할 것이다.

RDB 중 PostgreSQL vs MySQL

RDB 중 PostgreSQL과 MySQL을 많이 사용하는데, 이 두 가지에 대해서 어떤 DB가 더 우리 서비스에 잘 맞는지 알아보려고 한다.

MySQL 특징

  • 순수 관계형 데이터베이스
  • 기본 데이터 유형 지원
  • InnoDB, NDB 클러스터 스토리지 엔진에서 ACID 준수
  • 높은 빈도의 읽기 작업 성능 좋음
  • 초보자가 사용하기 좋음
  • 단일 프로세스

PostgreSQL

  • 객체 관계형 데이터베이스
  • 여러 데이터 유형 지원
  • 항상 ACID 지원
  • 높은 빈도의 쓰기 작업 성능 좋음
  • 초보자가 사용하기 어려움
  • 멀티 프로세스

우리 서비스는 기본적으로 마크다운 에디터 보다는 CMS를 타겟으로 하고 있는 서비스이기 때문에 쓰기 연산보다는 읽기 작업이 빈번하다. 그리고 팀 내에 PostgreSQL을 깊게 사용해본 경험이 있는 개발자가 없기 때문에 MySQL로 시작하는게 좋을 것 같다.

마무리

이렇게 텍스트 파일에 대해 어떤 DB가 좋을지 알아보았다.

찾아보면서 PACELC 이론과 각 DB의 특징을 서비스의 기능과 확장성과 고려하였더니 비교적 쉽게 결정을 내릴 수 있었다.

--

--