개발 Q&A

제목 서브도메인 DB문제좀 봐주세요~~
글쓴이 희야 작성시각 2015/11/09 15:23:36
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 12240   RSS
한서버에 apm으로 150개정도의 사이트가 서브도메인으로 돌아가고있습니다.
예) aaa.test.co.kr -  aaaDB
      bbb.test.co.kr - bbbDB
      ccc.test.co.kr - CCCDB
이런식으로 되어있구요.. 프로그램 소스는 동일하나 DB명은 다르고 테이블이랑 컬럼명은 똑같습니다. .가상호스트도 aaa,bbb,ccc폴더별로 있어서  프로그램수정시 각폴더에 맞게 수정해야됩니다...현재이렇게 사용중에있는데요.. 서버이전하면서 프로그램을 수정할려고합니다.
여러가지 방법을 생각중인데요..
1. 하나의 소스에 DB명만 다르게해서 수정 - 메인DB에서 서브도메인명(aaa,bbb,ccc)을 가져와서 아디/비번DB테이블을 만든후 select db_pass,db_id,db_name from domain where search sub_id = 'aaa' 이런식으로 각 DB정보를 매칭해서 연결시켜줌.. - 두개의 DB연동
2. 기존의 DB를 하나로통합하는방법
   - DB를 새로 생성하여 테이블에 서브도메인별  id 컬럼을 지정해줘서 저장하여 통합.. - info테이블에 sub_id가 aaa, bbb, ccc등이 저장되어 불러올때 where sub_id='aaa'이런식으로 불러옴..

 --- 두가지 방법을 생각중인데요.. 첫번째는 기존소스를 조금만 수정해도(파일저장디렉토리만 서브도메인별로 수정) 될것같은데.... 두번째방법은 통합DB라 관리도 쉽고 장기적으로 보면 두번째 방식이 좋을꺼같긴한데.. 통합하면 데이터가 너무 많아질거같아서 문제가됩니다.. 그리고 각 서브도메인별 백업/복구할때도 문제가 될꺼같구요..(백업/복구하는경우가 많습니다.)
어떤방식이 더 효율적일까요??
 다음글 쿠키 질문입니다. (1)
 이전글 새벽급질문 ㅠㅠ ibd 파일(데이터파일)만 테이블에 새... (4)

댓글

kaido / 2015/11/09 15:30:02 / 추천 0
취향 차이이긴 합니다만 저라면 첫번째!

DB 꼬이는 것보다 소스 꼬이는게 차라리 낫더군요.


그리고 가령 언제가 bbb의 특정 테이블은 다른 aaa 이나 ccc 하고는 다르게 가야 한다!

라는 조건이 튀어나올지도 모르고...

통합으로 뭉치면 퍼포먼스 관리에도 신경이 더 들어갈테구요.
 
변종원(웅파) / 2015/11/09 15:40:45 / 추천 0
데이터가 많아질 사이트이면 나누는게 맞습니다.
index를 잘 걸어놔도 데이터 크기가 커질수록 index 크기도 커지고 select할때 비용이 누적되어 발생할 수 있습니다.
(데이터 증가 -> select 시간증가 -> 서버비용 증가)

파티셔닝 등 기술을 통해 살짝 우회할 수는 있지만 적절한 수준에서의 분배가 더 효율적입니다.

합친 현재 데이터가 몇건이고 1개월, 1년단위 증가예상량 뽑아보시고 판단하세요.
한대승(불의회상) / 2015/11/09 15:56:18 / 추천 0
kaido님 웅파님 의견에 동의 합니다.

테이블 하나에 구겨 넣었는데 실수로 던진 쿼리에 다른 사이트 정보가 삭제 되면...... 생각만 해도 암담하네요.
건곤대나이 / 2015/11/09 16:56:01 / 추천 0
각 서브도메인이 각각 독립적이면 1번이 좋을것 같구요.

서로 관련성이 있다면 예를든다면 카페나 동호회개념이면 2번이 좋을것 같습니다.

DB오류에 따른 위험성은 해결책을 마련해야겠지요.

1번의 경우던 2번의 경우던 DB오류에 대한 대책은 필요할 것이니 

프로그램적으로는 DB 오류체크 루틴에서 오류시 대처방법을 프로그램하는 범위가 2번까지 포함이 가능하다면

2번이 좋은 설계방안이 아닐까 생각이 됩니다.
테러보이 / 2015/11/19 21:23:54 / 추천 0
저는 소스 파일 1개에 db분활해서 여러사이트를 제작 해보았는데요.... 추천 하고 싶지는 않네요. 와일드카드 아이디로 계정을 분리해서 db를 분배하는 시스템이였죠. 파일 하나 수장 하면 모든 사이트 일괄적용되는건 좋은데.... 아무래도 한계가 ㅋㅋㅋ