RDB에 대한 생각 정리

Gunjoo Ahn·2022년 8월 3일
0
post-thumbnail

RDB 정규화

데이터베이스 스키마 설계를 할 때면, 항상 어느 정도까지 정규화를 해야하지? 고민이 많이 됐다.
테이블을 어떻게 구성해야할지, foregin key, unique key, primary key 등등 어떤 제약 조건을 줘야하나 고민해서 설계를 한다. 그런데 막상 운영을 하다보면 해당 제약조건 때문에 당장 운영해야하는 어플리케이션이 멈춰버렸던 적이 더러 있었다.

멘토님께 RDB 정규화를 어느정도 해야하나 어디까지 설계 원칙을 지켜야하나 질문을 하니, 간단하게 대답해주셨다.

정규화를 반드시 지킬 필요는 없다. 테이블 합치는 게 좋다면 합치면 된다고 하셨다.
제약 조건에 대해서는 테스트 단계까지는 제약조건을 넣고, 운영할 때 다 빼버리기도 한다고 대답해주셨다.

단 한번도 제약 조건을 뺄 생각을 하지 않았었는데, 고지식했던 과거에 반성하게 되었다. 무결성이 중요하고 절대 그러한 데이터가 있으면 안된다면 모르겠지만 어느정도 허용할 수 있는 데이터라면 없애버리면 되는 것이었는데 왜 그 생각을 못했을까 싶다.

데이터베이스를 단순히 데이터 저장소로 바라보는 관점에 대해서도 짚어볼 필요가 있다.

NoSQL

transaction과 ACID가 중요한 것이 아니라면, 차라리 성능을 위해 NoSQL을 메인으로 두고 보조 DB로 중요한 부분만 RDB를 사용하는 설계에 대해서도 고려해보자.

MongoDB를 공부해보자.

profile
Backend Developer

0개의 댓글