[질문]

 

물리적인 한 서버에서 다른 DB간의 쿼리 JOIN을 하려고 합니다.

인트라넷 같은 사이트로서 50~100개의 회원사 운영예정이며, 개별 회원사 마다 DB를 생성합니다.


마스터 DB와 A, B, C, D .... 등 회원사 DB 와의 쿼리 JOIN에 있어서 속도 등의 성능 문제가 있을까요?


마스터 DB에서 필요한 테이블 카피하여 개별 회원사 DB 각자 쿼리 동작하는 것보다 많이 문제가 될까요?


- 마스터 DB에는 공통코드, 서비스 등 몇개의 테이블이 모든 회원사 DB와 같은 데이타입니다.

 

 

 

[답변]

 

안녕하세요.  IT전문  컨설턴트입니다

 

DB정규화에 대한 딜레마를 해결하셔야 할듯 합니다.

정규화를 정밀하게 진행할경우 DB를 효율적으로는 사용할수 있으나, 개발난이도가 높아지며, Join문의 중복사용 으로 인해서 속도저하 현상이 나타날수 있습니다.

반대로 역정규화를 진행할 경우 DB의 효율적인 운영은 어렵고, 무결성 부분에 대한 설계가 어렵지만 개발난이도가 낮아지며, Join문의 빈도를 낮출수 있기때문에 속도저하 현상을 개선할수 있습니다.


일반적으로 웹호스팅의 경우 각 1대씩의 Web과 DB서버가 350~500여개의 홈페이를 수용하는 구조로 진행되는 경우가 많습니다. 쇼핑몰 솔루션의 경우에는 Web은 낮은수치를 DB는 더 높은 수치를 가지고 있으며, 업종 및 서비스의 종류에 따라서 조금씩 다르지만 지금 생각하시는 구조에는 큰 문제가 없습니다.


다만, 효율적인 개발을 위해서 역정규화뿐만아니라 동적DB구성 및 코드분할 기술을 활용한다면 더 효율적인 개발이 가능할것으로 생각이 됩니다.

Master에다가 공통 DB를 구성할 것인지 아님 프로토타입형태를 구성하실지에 대한 고민으로 생각되며,

이는 개발방법 및 난이도에 맞춰서 최적화된 방법을 진행하시는것이 좋습니다.

Master에 공통 DB가 구성되어있다면, join을 하지않을수 있는 방법은 없지만.. 이를 최적화 하기 위한 DB튜닝을 동시에 진행하거나 전문적인 DBA를 통한 설계를 진행한다면 큰 문제는 없으리라 생각됩니다. 단지, DB서버의 장애발생시에 전체적인 시스템에 문제가 발생되는 부분을 염두해 두시고, 인젝션 및 해킹공격에도 취약한 구성이라 가능하다면 동적DB 및 코드분할 기술에 대한 접목을 추천드립니다.

 

 

mssql 다른 db - IT감리, IT컨설팅, 웹컨설팅, 웹에이전시, 웹솔루션개발, ERP, SCM, CRM, ToTb, 홈페이지제작, 웹사이트 제작, 온라인 마케팅, 시스템구축, 유지보수, 운영대행 등
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기