개발자

mysql 인스턴스에서 여러 스키마를 생성하는 것이 불필요한 건가요?

2023년 10월 04일조회 310

과거 mysql을 사용할 때 하나의 스키마 아래에 여러 테이블을 만들어 작업한 적이 있습니다. 스키마 아래로 너무 많은 테이블들이 생성되어 테이블간 연관성이나 관계를 확인하기가 쉽지 않았습니다. 이번 프로젝트에서는 과거처럼 하나의 스키마(my_db)가 아니라 연관성이 높은 테이블들을 스키마별로 모아서 연결하고 싶었습니다. 예를 들자면, user관련 테이블들은 Users스키마에, product과 연관된 테이블들은 Products스키마에, 중간테이블이 필요하면 Users_Products스키마에 테이블을 저장했습니다. 이 구조라면 하나의 mysql 인스턴스에 3개의 스키마가 생성된 것입니다. 문제는 nestjs에서 typeorm 설정을 하는 과정에서 database를 입력하는 부분에서 발생했습니다. TypeOrmModule.forRoot에서 database이름을 하나밖에 입력할 수 없었습니다.(mysql은 database와 schema를 동의어로 취급한다고 들었습니다.) 3개의 스키마를 연결하는 방법은 다음과 같다는 것을 발견했습니다. 이런 방법을 쓰는 이유를 작성자는 서비스용 database, 정보분석용 database를 나눠서 사용하기 위함이라고 말합니다. https://www.inflearn.com/questions/662388/typeorm-%EB%8B%A4%EC%A4%91-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%97%B0%EA%B2%B0 mysql로 하나의 서비스를 위해 스키마를 여러개로 나누어서 하나의 앱에 적용하는 것이 불필요한 방법일까요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

인기 답변

김도열님의 프로필 사진

스키마가 워낙 여러가지 의미가 있다 보니 mysql에서 schema = database 라는 사실을 모르는 분이 이 글을 보시면 약간 혼란이 올 수 있을 것 같습니다. 저는 그냥 통상적으로 사용하는 데이터베이스로 부르겠습니다. 인스턴스 > 데이터베이스 > 테이블 연관성이 높은 테이블을 데이터베이스 별로 나눈다는 말 자체는 틀리지 않으나, 언급하신 기준은 너무나 작은 단위입니다. 그런 단위로 데이터베이스를 나누지는 않습니다. 더구나 1개의 백엔드 시스템에서 사용한다고하면 MSA를 위한 것도 아닐테구요. 테이블의 연관성과 관계를 쉽게 확인하고 싶으시다면, ERD를 잘 그리고 유지하는 방법을 추천드립니다.

nowv님의 프로필 사진

nowv

작성자

개발자2023년 10월 10일

답변 감사합니다! 데이터베이스 하나에 접두사, 접미사로 구분하기로 정했어요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!